From 1808d34d1f181a7706cb1a08ef25ded38df068b1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 10:00:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 10:00:38. --- .../20260508/20260508100001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508100001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508100001-Diff-Config.rsc | 20 + 3 files changed, 4660 insertions(+) create mode 100644 MikroMaster/20260508/20260508100001-Binary.backup create mode 100644 MikroMaster/20260508/20260508100001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508100001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508100001-Binary.backup b/MikroMaster/20260508/20260508100001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b44fd82c789d65a80935954541d5e0b5de8700be GIT binary patch literal 298264 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
ukVuMpyo99pTs}kZdcnIdS#Z?wI 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 z zUa^z7FGsciw+ZO>olHMo%jc^j(JD7W-E!wL$!sqR*kju0tuP{Qiya#mJ131P&1A zMXeuo72aR8X0SOiXdxO^>jVL5HI1w2l}gYSQz^tiPPz9{N-t^|fJeENjbtEm=(&rDHJS7~8e zZ^{mm?SZE>${bP=YD`XEudm_qao_^!MzTl0)jbN^(ZUfkP;+ zHB8*6nLf$bxYq_kgwe?1DL$Y(VqWjSBx zBNEaLGj<>!vOX5->u#yJkA%of;?`eyZ$Y`51O;bQvQiUmjEFBs0w zC@2^?qHEN2kDy=NA=t&{8D|#6*VOsDu^h+zz=w~~$=MZ@CR^_}lI`XAR&_OR+?Ha_ z0}hjy{*M&P^|v}p5}d9DEZOxRB?Mbaa{OSgkx@H`G$O~?N#v3y76b+RI`@Ra zdIw$zKz4iQ$3+RoZ6QUHGbpBN6xIe_ze$M=6&^Rf#z29*4zZO-vzPOSsN&;o5=VgL%&K5-ZV3rCzW}KX2_n zOAxVkNDao4q{_~7d9A$5&O1Fi;_thYFaY43F205BuBI-vHWyiH6o>?O5>6v`m_Oq2 zr?}jVCd+=LREp>&$GqtYx-@1-GH0c;=JRV@z>bNhvcAT& zy_kC+u$v+d?PEu`JZb`%mH802Q74Ez0VIFOza>nm{jash)mI6rw^ z!LHJ3Q4DnGw)J;VABNU;;fpGEj;z3k%jv&0;%c?z4aq*xJO)JO`EzY^VAh+y-Bb1j z8w5|Yv=>{4$UoHnl5WiAv7DG4oir6pPDp-44C-5%0Av+f`vQ{;DC4qsh^E7x(PqO) zFEhf+@lP)RqD^1=JCoY|N&x3jIfS3)iJ4bjc(Qom_4fj^8AGX{3EgHO%2zHf(F&wg z@;)H9Gi-?OSZfQU&zZSQOdiJUu8e!efepE47=X1WAj@ zu0tojR>?%ycou``8acd87d*pglhh90(SXHrA}GjcN)cJn@Nx>cPjCh6ae9Q0-z*|f zGG$r1@W4q6^DHIed0m!?^^mxst>M51xq&q#00`uWw_5xEa!>r8Z9t|5ne!)F+MC(2 z<@Q$psuMP9+$T(tFyObSk&2m#7~9Eg^j#{s|KUYQ{5X9lK8?c07FZ{i zs9JaM=CcB*VdT771xsChJNrRpdcJKlWE^^Re@4%}9zB}ApOl{(V$`nWZx?&kN4mMX z2spdK0v>_Go9o8@3*MTKEtmJV5Y6l5Pd074mQgGK#n)ve*s33c3)S5U<2uvZ;o z`-GgsYLIFE86r@*V6plGJD5TC-RvGrV{C;4?4FJ;S-My}DJpom{F`_=?!q#~+vFfJ z|GXi^x@Qyb_@oVwZG(EnI0A|o;$pjl3wZ6h1}NzpLagl}p%k#Re`nt;r@Bq9qTWRF zh1{`zIfLc!C9qa8EONvH^hEd1I}KI5*~o~^@?xxdT{-D!Y7B!}&d;ANIWw|rs8dM@ zeo|19_&vHxj!qliJUE?~mye+UvXWQCaemxv(1}E&$+6jtr@jAWrtb`^e3-(O{U0j8 z-2872Q6b~#?}llydK2mbH0b3+=EuA<8|j8!x}Y#*SDeHNp%_uy>bISygDCPPi=#-^B~LZol4CxOs}RC8~-x7{S6>vq+aevv(w z`(@vsw?4aU)_N8zGSlWHP{$9RM?BnqA~~?+mQ@Qgjpqk3V`hMzT<(=roIz$c`^W^^ zfCfuL;2xZC&85n8n70kQT0R0dQMAbN{Rj{nvG!5Im=%B8ka?6opPL1DIF znW-`T&^vIXC{++D0l^28(CQAKM7$wz8^M;VjJ#{*6)Pv#-R=IGAnh~q7 z`#{bnKXN$kN>ik$w#Quei1S3=K2}elG0qiV-OAgY@0xY7rpvA4_UP$OA0R}ME?CL% zkr5E%b9jGxzlMP*#GBs%2u$DW{P|`y7wD@Q)f>JZp8g}1lhynj^L>%%>SVxUEIKu@ z802kc5eYvi48Y;|z9#hP`FhydCg7Of8%Ir%y-7mdEUb}{XnxrL#~6MSf5x{wG0fGA zW+U!c>ppp9Gcq%whR)~Po2)cFP!-_xqFvj?Vv(q|Wf(^UYrD@*RvoEW0yc~50DMe5 zi=4)c&=Sk1w%ZeaL_r?EzovAeJUChES5ofhC*8mee;UZ(A(%_tz)lh2Cm+)0&UKwj zXj(m9shV`0-EH0I?DT7Y8G^fJ0W#w!mGRzW0~AaZvXm!S!E4be6krR;>^p7`M zq<1=B&Xe|mW3T%2@0mfL9boon;ijg9*)G{aWsqM|Mc7n0qiQZLg(|-13rFLw5p0kP z{=K=8c*w$kj1I*dfsAeZguDQcI}Y`A?YjSp?kVX8R?~Dbr)tYolyDo1-0wbR42LCT zltlK0JLTMPtAo5*S>?2CnfpPDS_TTy1kZ1GxY39FNa~8hBpb@U&7B1p$O5ezmAOKb7}8%t+yMa!C>e?0HWLE?!6raN*f5Ep zov_tT1L?>aKXus_BH{9MEP@av?>-gcm=qRFM)Clvw;GGzT%k;G8hngy>sZBiaN;u# z$S3IlLDX@-I9PZIYq!Ns9bZxKM+>9dZP|#lLc-3YI7vr?hN}lN5+)qSoOSS4+33gc zb(}k43m4N_=%_w52#G>RbRxJHm+1txU946_(L$KLBLb@1EVS4?&Gam#hYgDB{e zWU==<(Ux%?L|Xd#1tE=$+w4s&tLyQ3uFr)55kvMMd2m)=1fEUBP7&UMqDG1c`P#LJ#vVnmewD!*(pSLkriWk&OVOQ>{QhA)&f^89 zg2j6KNr`sj#cW2ee5T{*!xY!@H2?|73P?JtGY(Y@_3Dp9W#-2(>RI4)SWrlrib&9e z)luiZcrzB;IwaM?J$)OG9G)tydY?9PxwR=__-_+{{tw}PuOGG7BE}&rG{5rKCg-Aa z_~@{|wdBpmK#}Q-6F~6Ku3CCd0BQxo@yyehli5t~B;knST!}xF9vC~%nw(R_08QxO z0i4d`En6sXyjs_hD33_5@3hLYT(4?m9!%HN$_J59Yd}x zW+V?Xz%tUCcxe|0t$W0bvC`^b%)n*H`0*AuMD&luoJw7sfQnrwA3xMmA0e@k7xqGs zF#T!55H^tVK}sbHhTA@=bDIL_w9=s@U)?=Ot<|TnFE{%xJIfrIK(_a3#c$3J0{;VP zROS?M1OB|>3%fp?b&K!}++4i5z^c&l4Ls#2V;w8A3(7BChjS$F&SZ|BmjqFp&KXZ>l$O@NUG(y3Kihos5@0 zC8c0WBvUyYYeS+cC?me_vT_cHUeLYX&chmaUY79C#DEmw~ zqEL~$)M=QOcziJW*l7e{yFQafmWcWa-uqqMkIGH)JTH4~4B!f~liI}qoQeBank}Wx z-QQ2Ds|Q|H){~%#B8tqb-NiPjhDjDpXcqZy(fn%Up}kmU4%tbAg_cEsGdj-hg<9K{ zu1KaLkPIQ3`m9J5(6bK+JeF_SDE)T{kQ-Fx5e2w>TZ$unxX$I{$8GkF7g$(DPwuKkJmN!INX_tY-Shi6&PS1idU5i*5oK zE!{=M!G!s}kH#@aOJ}Up7>MXkD+@^VM2@);#@ehuzJG*VFBs^%rX6@90`o7zCb{TV5@&kk#GBIE7zmqV)wUPOx_!gXREI1bd#+dKhR zG`+krW2>J=YSzM}xjvD)iEAFX9O3A+u6*arFW+w=x9wb&|c#9O05Q{Fx>x4oW%anagaIV zO>#1Hz!(_eIV^ZG(ui43Y=T({^agakRVUUhx+jxf*+Jh@{*i$t1Mdk4Sq`l0Y4y+t z(&H2njQ8?GRlUX9+#+k2Ig2me9|RZIa)0|16%ms5(xK|VHYEE;3V_oT)Q`h2KiAL?r!WqXGKR4LQoa!FH$i@R}1 zM3l|K4`bikAOulpsHHerT!~O*hujeOSO@0475^fR9MO?QREGL;)8fzktc4mExbiyg z_d`-&0G=UcN0C{2rg50UNiB?bBcf88yAec)j?ds8Oy0vYST6YcLZR0OS|vc~a6BrO zbr*2GNGV5yWS?OhGa(~H{-6pk)~U?<#eCxo^8)IpMM&qr8a6w9WmpV3lmJT3d{NJoE9~%8VhUY) zAjs#1lzo*2i5#FS-}<&Le#^Lc7u+DUcYkC!7j#W?X)MaHU2MlVwwz=t`;zCwU&$h_ za8!zM?Fvv}GjUl5MDOhZFya7(X);y8ReX;G)q&tLOQCO*T&B0rACT-EeuUCp&lRW% zyztZzl@5KcHf4W9SB**02$tiYt9ikc_F}%$mP}Zb3?>kva`_@<|6O{!PJ^s>f<+S? z)s~F~Jxf()=NBgmoA0H)E$@c~t&a!m|4|Hy=l;0)Opg`a>U1Z60A4TG!f%8qm7=@V z$*Y_4Ay@LSLUh%H*s4f~L2Z83kXt8k91f_Z&3G!GAKgK3{{Cjb$ECI(2chBOewzom=s8efUhpi&Mlvm{}RW zNzdmV=z=L;KXDS-{=*vXIUDOG>y>lru+^xTu{W+smO|G{3;p}=o1w0BNtcnER zFOm0_eGku@a(2gcBg_|_=y#at&3rJZ^Pwm!Czgdyn7t}zEE=`dS(VW7VvFv zZxsAxh5PROE1PM^iEmxT!FxN71m09*p6uq^IqOch(>1*3iaF&~?Uql+TNLvg0ryMD z7Vr;}m$&Z9+^rP5>s&{dqwy4oN^~EF?Oo14R?O!0-fkxGG!!D4gMF*i_e1cqDIYG# z0_*2PG=d@|xc96+Xu93ToEJLQ8A`b%dC0x(YrqOGsP|tVi(Jt?ew4l^xxQ zCl%C?`0eH5Z@!xhhh1+$qGI(l#~0{Bd#>^aX}vC$7I(yg72 zVsjeNU*y$GpPDd)$Jq+O7R%hTelg-TXoW zV$mnR9YyL)+|M0X6Clhugg_!#_W#M6)S0jQDO%Qq!i#>VGGg6&OEFSy8Lp@RHhllg z!#|#%2@Z;!mQEGvldr=t`eioj-Cx~2Or#3DUTXJC2ri>d1cz@6p;pTp$`yjQ=X)&r zPJqbD7@SQo)!-u?eh)KtQf`z@RiWM8@cHwJz0%g)x|d}a%77L8zOlSm8q7}*8ZN}X zR_$c)ekh8njeE!&R->-uFH}Vw5t5S|!e-E#Pv z)qJ4>KZm<-+pjj6`uylFfKI!+Bo|eaGpQNre018wjT9T4W~|gODr$YOoK!m};`WXT%a2+!#{$UKrL@|zyr)Tp$Gm_IeHD{JOOJXL4GP}QJx zX``b+FA>Fwwt~n`Gm7pBkA!nqkL+*%#2QHq7UYtK@N~W+edVPcuS6mKVJfajPBkgH z$cHY=9o0{njTQF2E{8ohD2m6o0rhmVp!K?n3Fd#qLxf@#uRGwlZzvA~>PZ zkddndX>sAhK;Pcj^+Sr6<3%?AYJICZT@a|BBJ7K6G#iT^Y`=4C22MSZBu-+hP8lZV zfxp7}_O1X0na@cv$UK>)#1>fbnB`Zp<8%hO+ ziKb??uBi=*e+HC|{E0rJPPn4II>#k5_Tqi}owj>p4~)LKG%T@ywSweBC_T83(-ZflB!+M{g6*IaB9L`+ zr?IoAV#n!>JT_t+ylI47WjNshPYPggSOi{?Hd`y3#x1sRFsT@CuuQJSUnZ2GXYUkE z71g`p88V0WsCX!vG@zHWq%cf_g!h+~OIFU$qOY?Ja@M(Z|WK3a<*S6 z&kCZoUbLVN91ajQS-TI~=7Nah?)v~)zpS!yqo0vys-m^jvWzG*Pe^dI8rpXWZ5fJ6 zLGK7`7MGTY$7I7bluf3M?bXLouVkQ~If|@bGKHNIBqizLq=O%BJNq^bqpnP|U+87i znhFAgK3f#5__Q{*Rf^I;*QP`>%wvZt=nOq-3vhShBa7^2F<2R?b67+miRJ+h>JJdY zMK=^vm+jBa9i5@ zYRv8sg<{2j0zwf0<%3OxTR+MPZ)Loo0*6^7JJI|*m2PLtTpe+v7!l8w7Wtgmy}Z;o z0g^%XdW~nB&Q5xUl65i|{^H)cWG>+<7TSZqYjYSxQ%qMG@R4NL2L>Lm?X5N9c}5rR z5>AQZ&rf{-n*Biu7msjop_^Fvr2$NX@MoUg>Tv^NY~y}AZr)GlmsH9VO{G?p4rlZ9 za$gfp+VF^epU@%9ndE6L%D#x)gTSW~5O++Oe4oiW|Ej{^ zmFJlI+PNS_TpUPL|67o_*Fl2KlGdO~kcv7n{lBc~r9)HdAb(^W1e!!aU#~`)Sla+e z#3U0!GnZB0BbDLf%rfm+lGX~#jT`WTGC$zH9Cs`L@#gCCq;FD6-C2LjCsTMaZYa?A z5uT?c>E%CgDWRpGxv0zoPs-&nZDcQ!+iMacO$|D-3L^27d@{L(xt&A8bUG;bgF#R* z5B4=G>I*I@)&QJ`Z*mPPM0kjL_9%d<#tj`wO}e@0>;ohqL-)+TW~Nv)R;9h%U_FbH z|Fr76*V&h_qbuSP9&7qgG!-cOd02En5qVw3|5yZ{nXL3p2h7$R^H?ReBCP3SS_{-W z$kt*D!mqht?2L3HR#=DRa}Ad`2wQh|qgW+HMZhp*XsRnBt%HQae1zDvHY?)_jjUWq zI|@XGYT;8sNevYSh$Vm;`U$V0QoDDZ&?p^c&e!Djj~BtS-M+497}=Q*Hj~$;i_w3% z+m)m0^H}u3(h_RkZus%7piBJ=fp9KmF*X#vO0-~L#iz?hwz@D#7$8CS4SD^`&f zQ0!1&^98wR)!imyLQ*-!Edw{oD@Pj>1d5m7L)8l%5UU!;HPO0-eSyJqx5@*M zL>nm0Pm5matw6l0q)~VXIV<4pz2m9Z9hKF>#vjB0CdDYw&ID_^o_Z3FAmcyq-VtoC zJ=o;QuE-64w6TCmExyD5M~r)@E1SfI;~HA35J0eS?w8-Oz%+mXeCH}(As1|h5nI{6 z%N4vBn$KOWgF#};=Hx)~U!Kv1QJw`k=8XJPFX|YY z0BmO9rHh1tiW9PiQ%!ebQA@^vykE0E_Sc|H3!|3fhGDWCX#?Ux@_|`E zS&8DxbZH_(=S_`!nXxLjRo9omT4U`H)yL(CY09GIL9OI_eh(WCVvhjx)V+Xz*F9E2 zTmEYu#TP;&4SbEe-Ys)G{T*8^%4-RGx_vu*rZ&b35!!pXnw^qAD_tNENwit8gnFzK zVu-ff`W$9*`Sf!&`Jt1_H5V4Fl4CU(pPXp<9f?^Hb5RLKpiWh+9HvJp1wPU4=6>}^ z77IG1?F-FYT1gJ_*dmVIw?t1xQomi#)1Hid_A2flU-BBev>t5p7|qo?Azn|R!qNij z7PGsDr1f~rN+ge`PLELAJ9}78t`fkVxf11^Yj!;)Cezv7k%Ovw=unFp{t8grI%jrT zHnOotVfr`He>LG|xgeb6knw!3i1T)v1jy=LTY<@0M2$4)Kt0DHLs|Ej{&q~h0qU~m zfAr0nSO8YrXI}-9GeiM`NdWE@ChFZKTkXCo7gqkiLo*k8k)j!jxUdMDv1X$I_Wc1F zC+l%)?;{Bdt+sz{jobUm^@tA?>*&0keLJjC*Ck0XK_qHd_XTSVMG1`F2DGV*71aRa z;^^7?-LF&dz_j4zwpQFkk8sHuo=kgU@*(IiUv|h)GV$S?QL(=9-WzYeHXwjovTXxT zQ;^$RJgI1s2`>!p7_?L)M-D3${a?`#$oc~{6B=gBpF{4=CN0nM*5QOyNDNRn-4d{W zO8z%We`K>g-<>abD_BD)50J5g$u)sd@!#wOy&8u>j}v*p=H9>;aZP3;QXU5&#v4m_ zSVaaR2xre> z_w0n|LC-U`1eNJj#o+DWbu$>+sBzi zhY_z~rwJNOUkP|aT7j7zC0xt`bo}K%=S0^wnE@9S_=r*JxJLJ=G_s6L=5cb#jzr(; z{O`b8lNO#?t^D{ueumO{&`+s9>EvSs>vnkt-M`VmweZ}Cb`W8}Y6TcIq7SiRqylEi zU`PO*y}k%Ep4r$y6Qk3St0nq*-{dE^Z=2~(~NJt?#Pmw6;Taha{c{&55oxiXgx0;tSvS*Ni39o)9O%!^Fo{N1zWe`O)_mS~fZDa1T)b9c zRIYFqttKd#6T4(Gb74E#-ES7g>yU4PRfpB`%>7Og@lKEm8Jn!Y#~~F9Y5FTCB*LePHa?>T~Bs&!es zb`53K+6%-267+YlU|BrX1i=4Q(iW1V1ONo?j!|Bi<}8h`3ehU|s!xF>!M;-*iCLwM zZ-=kqsWE1vM3j71CW21GYXsg3WFkl)flixpapdUm%;X&hXghQAr#{HV6~!;M@l{~a zek|hcvNfdSWaARo-I_}Pfk`}~$OiOu6+^HZO>{joc;PH@XdxEqHdu~eyGYfUbN&zk z)sNF;tShe($gW$cBmzpG;Ip2EA|0G1Kulyg|{*dU<58$DeA+VI_2S??{~HN9<9uIZ5~4>o0YgYT!gZ zR<#?ErP74T-WC@PJ0wF+fCsd5!)P5LUG?>7_mi$IgaQ`gtNp->OJ^dBKSAuVKKAvM zFx%P-Ay!A5r$LO(JD_4w53<9;J8FM}5mQu_w76*@ULJlCTB6=9KIO`G{pI*yGV2v# z(^VL>bN>{Xj{qSd2vCi^NO8)dtmT{-ofDsW>`(5hOp6V1XDC7iD$Gzh=YR535hXxtcsIk8!whl4 z``6|Wwt);K9$DuuS0d?H`y`@j0EOszfIEGTY=4H1Szo6a6l6fffakgTlazG5 z`!|!|5AXcs5q#obit3>A606KI{31U+yy~ej8(xd~_h6U^b$pz8B*^5RaBdx_sGt2J z4!Mj{0-fN%jQ#ZdUN%A!ZBuulJ+~WLmr5}pZ%zEE7%Z9-LvE;AYSTG%M$~geHVMjOt5SqlYqGSleK1N#zW*yw6WLGGDID zeMxf1AC;CzxL;U3F20h{dN4TnviC|4E|0oMcc&=8Ha*Q~Y7irK9|<4w3x+NIyL4V6 z!pM|A*XLEA83+b4`#3V*aQW|jkU>VQG~b%TR$n4XsXxd_(YYQPI6{SYZt0%mDhM>tGDQ3sa&@z;WO z>(oR8%ga68x}*RM*?wx!b*i5fYacV_y$?FrA($;8roW1?Gz;Vh#^q%EboNNQOKuyL z@~o)YJp)=Rw_u6kK$c#DPY(OhYbh`R-%m;Cg{@wwI4(EyYWk_90AjhR6iX5|H+`t~ zQtvG@&-6EjdC9tVKSh)C*VZZ)V|O>tRMq%P#?BI9N!ZF~JvB`*se6O{GbpKRRbt84 z%N&fierNDU-lP@FfT+LQ{L19lAv8SOLw1TRMrUslfPueDz@1gtRGWV_HWk#p~MhX@NLm!4sP(yRiIT-(Zv7@$3DnP`O`ueCSaaeG5788F1KA#&O~W2qIU=Y72VX_v*v* zNa-z~)*~3MN6=ZCuJdf1c-9v;r2sXy9@24{Cx{z?2#m795}`q8hn5I2$h~Z^>fm(5 zAXhAlwXKsm3Iof@S#R! z9@y5gqsDF=G~XGY58T-x_HBwg%FKN_A%&2-h;eVyv54=tE;?`ajH7i&R7cZZE03F& zn2#(JNEMsskQry@2|m8Wn63R#2i_FC$8LP;KFtcCjbA&6e9~uBeH0rKSRKa*Fb#q4 z4yLumlGHAD1dn9%&$@(R5Dyt^3IDnVeH<5?WEPw74gcY^__FB>?wEhc&ZPFI*lTdy z?7k+x3M05Z3qyk3dI^VESavO)U?im5hsLqHF<)CBiRkAYz25n7KFa{geSB32e}8mz zk5&3kdoLC|Qjr(&9Y%k0RNIjx_aRP>k<1jm?dE_!)HLjMYcDpx%Gnox%;O1SJ@;%6 z@lPcvYj43&5S+knv>Wln!l37NGaPZ0jAnt@(k5q8!BMNxDbp^f2QQZ{j_A@!%X01B ztqOiVx#m?yA6tbh5YKLRDV&koi(BjHEoil_=f;@<{~K1l?n@+Y%&!P-kji0iMbL_? z6P0~ZGM>dw%WC6En7n|E-MtW>z($)Wcn~*?1eF^^mR^c9@)Oqj14qi-d@4C*50?PS!wFdC4M?M`F8lQ9AHgVFmnB4;0Acl10SV>}i?+j836;8+ zE7{B{rH~n`0cPLNtYky?2lr;HirMo zl`nRZw)P1VBhv0XUv~&IB#1$2#KJA1pMM$%5h&!&6QSXs6Fz0E7=8&B_&oLPyb>qM z9GPdh&olN1#Z#+P2qWXiDzbGl1d8z=oq?@pDK%(I9u>O8!xOcutiDyXWnGt3CfzHE zua`_>qi@ug-sB*o@Cv%ufDk@W7N-()%av$K;9GLi9y=-U>XstVw~bSe0}vC@7A?)B zuNG*5mM=tT-MU?fB0q0sI>>)NWEMFy`KVy!x*4JBM2Kyht%Fi;v3YX7+tKninv6z+ z`Gu!jyD$z!|7irq)@vw7%=jD9OYu0r;DdJ)Y~0-garF)%i`fiw-G9O=T0A^$eYvEqh;5$^P}mf zYGG)?G5~lQ{SeAF)1713CZH>_!M+}(9yUm|65fES2!m+$`13&lgzNm{H3o+Wp6lLX zMh>x~o^d6uvG@eQduXVX5o9hr-$w%Pm>r;yw`e~fYbGYqfN>_R)z5hyAcK0eWO;WU z8A`I~qN?n&)7Slcc{DbM6C#F4ueMg&f+1{Z2V=_k#)BaWe{0pqYbMAN z=ao4rau}E|w6t(4wqI&-C1zOO+(zhxwVI9+Hb0l9v-E4?S_D82zXa3_uh=G5hJhoc ziaHkL%UdxR&630@y%KX(8&#BdN5#};i#Vyucs!o*gb{D`2p;Gx;lT^bIQ3$03nobT zn#8o(vO>vi3I_%D0*paUeyaDgH+HgNA4roTmL4JTM^AM0DQ$a_S$61-$$uiYIO}{t|~yL{y+9t*jSeF zPE}yCE2!e_c4o0i*6MMYG(!*TJ4Ai3oMa0-gC_y0H8do)D*g%Dtjw)ap)dh2FX6l1 zy$7bf?L7PoV6p2)JSO>jh(9xcU`ALONnAAvfQ`hTvs7~2R(`A3KE&Av-m(Y&>u2%m z6$lG3IA=m__wHy~1oV>T5tNN_Dh|(p_vbCO%vEa5FK)p%iiI=&zr9RdKIr|hL112R zqajL~XijN2sUj_~q`Fs_J#yK>f4DDlP~~zmb$?~=>Uw?oQ!FDs9ILe;FHZw}+v}Hr zT6yujK-V)qAQxEqO-vi;jhg#WC#h9Xw*&w|pndG7zB`2jt!;!ce$r;F+4Arir69jP ztNY7%=1fk0i3uLNxCW8;OID}r!|~07v0;nM4UGat8NXAjM&vr7{(d}ZcDAc=ynZ~u zj|x&U;(Wiw!2lxyuHbt?Xn`CT5%=jPO7a~}C0dK2LkKU9l1i!@X0%n6y&ES)2`*#WqNd4FiHUoSBM<{;|dIgi&QQ7f-4?3_i! z0wLQb-6}tz@rbuqpp3x&kC(D z$)ORZXg2MUU+6R56}O!t18 zS*ThN6pK6>p3rsqUc7CP>1Y93GI)x5^z*eIimxME-^~U{S>y>XJ-+1`#suO3ye}p= z^Kn0)#uu|Yl}ippXuPC_%*o#T{U}~queJ@;8<3hTFV%A*HtMUa;RUY2){Wv&F?nT2 zDB%+GsI;6d$wc#vHB*U5$rCh(-#eJL4Z8$&CId~f=)a6Mz5j)VqlbY9gM^Y0!|7;{ z)Efo9Ho5d$j0tmFF(d{O4bkbt&ℑ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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508100001-Config.rsc b/MikroMaster/20260508/20260508100001-Config.rsc new file mode 100644 index 0000000..1853837 --- /dev/null +++ b/MikroMaster/20260508/20260508100001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 10:00:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=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-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping 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" 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/20260508/20260508100001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508100001-Diff-Config.rsc new file mode 100644 index 0000000..96ae354 --- /dev/null +++ b/MikroMaster/history/20260508/20260508100001-Diff-Config.rsc @@ -0,0 +1,20 @@ +4291d4290 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4292a4292 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0