From 58e05b06bcd5e157896cc87d3d6a919bd3ec1df3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 04:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 04:20:40. --- .../20260509/20260509042002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509042002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509042002-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509042002-Binary.backup create mode 100644 MikroMaster/20260509/20260509042002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509042002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509042002-Binary.backup b/MikroMaster/20260509/20260509042002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cec26547a3697323932de80bcdf79bf1bfce7721 GIT binary patch literal 298264 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⪼T(KZTG%sHheidTOpj_4> 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 u0e1A|%Ws)y8 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�ARa$jsb(;^=GG4JOZ9>A^TJJ(OrEvS*hnMNw5}G0o(wzJRn3D z@m~T36d2DZBbv#43>i4b-DMQHdJLe;K|!QWkoww8XSk)kjgEru*JPc7wEeH~R;p+A zUsMvsN;gwjR%&T)tJ(#+XIiEx+@KA?t;il#(nz%04Dav#s-&(l=q4eg-46f+O7h8~ z>u8yCw;3KzYbSqjn1Si4+Ks)C2Fn-xvf?>diuI7l2$Dkiu9LuXccdN&Msfe^HUt!H zAgH#I-G>i2?fJ%0ja%#^Hp!h(UcT-KvNdXUywY5esp^N1WUFPOLA+0=n+tBM{G~Ky zP8G9y!@@i1F2H4*V_&UJ{}-lXLv+!ZB!)dRgDXQ#wT;FxMcnx4MXYyKvIR+Z{=KWp z>PZStTHNj;j0b)WtzalJotb)%#i}RLqkw!G-nu}w8Pis(PP5Y|jtnO~YJF2{<~*4a z$vS(>)KO5k_&rb$gpJWrD9g|4kaIVxbvc){v_Yr&u4$Rv`P8i;1B?&`g@tu-2!$^1 z)@CNRb$gIiw$gRXzVKjMm2PPIM^i8zF`Limth>-hLAl6%V7+GckfKIYVaF*&f$IU- z!rabxi_MMI1fre$x>mWig>p~T<-t{={R_9Qry8Iur+oq2M@r{!VN=VRWw-M%=@bR9 zvreMk_H<(k$ownzEnTxSJ3G3z0P!E(eC3v;*(OgZqr11C41<1B;!KM5(e;H%Yb!7_Busk6x0xx6J#)cvVYV1H+wh9&E z!yF$>m8zIb^z0b+T?csJKL7z*76?;=43MC7mV89J_fZ+rfWIENjM=xsqc6LDSJb*m zn3nV9O>IX5n4f}in^Y&_dwP=)i;PXdO@EhbG1WzNiJ!o zd%^hBkFRS$}5t! z2%}^zUII-!hS!IhM~senn=b%e9tgjqXT8rQkAiBqdzA@0dNFFoa?_v#qxm01a64(QltB_ zF?!)n6eetG!W_r>`EF5)|8*rrmdyM7^7+&JjyC0NHDQJ}f$fc-Fxm9l)2wt!m%=Nm zxeeC_3Pbc}<4f*~g1n{`^f@`J(DpER&CQ0z7Uo(LAFfqQsB}3q-E)+}l-n=E%B(yW zKVNzb^DfZdt1V(id2kk(hRX0<&i#1;3PVfXl8)Y@S`JaRcVbF9C)0;>Q!9kMg-*6( zIG#|eLVV_P%9YLb`JlcnXQO%l_vlVgA;e>&bPEe_s4bQ0&}IeRqaUYxkhhet{l#D3 z$QM5UllsbQ7;IC$TL}Pl>iaopORWMCBO#Gm(Or{V|e$);4 zp_j33W+;GomaoKR>jGKZ)m4~>6x+AtL`1x){+nG8ISEdf>J=Ieu8GgT(3!F7*hkT0 zWNNKA^?oS^^h~KX^CM zM^aB*YfNfAe(+qOl$3n+V=LJUmK=NC;6CSxCvk^}Lj2WV74NgC`4c(Y?=MGCzep~D zX*5csghxuS;0aoP@>DQCN12zhfOe?P2%+y#rbSK6B#NP{6|`VN)vlop_h7joBLp8{ z*O;&J5!3+~I17^&JP?I&BYsEA3l{Fpi{yxYuQPz26cfx%6e<=m^Th?npvPG=xZB@% z41Akd)_wA??#Jxlf0fE#wjXA>P;O!FMI?iCo+T7{efUR!Ghx7udH?iWf}=a@$Zy`r|Xnjfy+G7mQc*phQlQi;fV@Wr9K_a zY)zhy}pvc}$ilD6@V%DnIZf^~X@EnRs0wgOr7}+&_RI&F5 zVv9OiAcll>3)mU4`mS0L8I>}dIn4oaP9iB2F}sane0EzljA8&_>wgElIdx-biOhUCRyloq%4FIi!N+HHtWJkYW*V-__W zpte%uzKUDx)NHi1(A`0$6m)EFmOpA{Ic}pyCm}dbAA(}jGkA+K5}JzzP$ zS6`g6jj&e8{3ZTQE4Dfh<@W3C$IyY5SA))_`EwXlEZN_S)mcv@Hy!I`PlhzxYb480 zi}4+^G8lfl20taA726kgi^b7Y9y{fPod(oLTAMkgy3aCT ze;b@A>(TxJ>GBha=6Mk9hU^N(wSG#6T`HTYPR!Tix%dCQa}pq_;iTQucy5}W074JB zD*xKG8662EvVE+mUH~tc`?N#2&L7tbATT!mOcV%H78)kI3$-$#B^4bSk;+fzUdaxp zChvNIA=tswA&y&>e`OAe!Wg~O3i&7)3568H*4nSt2SRiO#B?>q^s8Srg9;sC$w17X zru?)p;~K3?7h#^m>Ris9262}OxrIQ+R+3`;V))V1sYwd1N>#v(v`;|5)4e}5!?YXd ze`4@hPG9LP?pX)D@MuQ4rH!*d=|>qwFH?2kSMh5ZpGC{gb>jIH>4(?+40a|+DTkdu zrdz&aDag$<>-^f0@5VlFf*rL@>`+7c*(I=2!B=r0xp4Sbq03>?_k`ce$1UBlFpwbq`d5kojL|60uH-hc{$ zg%gbc8@8+%&t+DFxLBq6d53e1#Ajt{z59OK5?UHB(=M$RUrd@rQxu4>;H)7eYoEi7 zOL~@r%Sbp~_a?=XqTC2z{0(TZ28?4*?#?o}*gxec6;0tNBpqS+=^FubWwmd1NyyeO zOpKb`Apu3>)k0PSEVoDgkMJchH@Gm`gb}^woKYInh$B=x3pa+HdkXVd9RHsHVeX4@ zV2o6WpuKvPQQ3!$xGUw6+8_~-;pl>96;DgnNlO>Jo)2~L4>t$y0i845i3;al2D9YUZ&AY%`k>0pqyzW`FA;GnS8Q8aD2M~|d>hIBX1lraA z*}L@*3a1+4$Ncf&0aQv`7$CsZei&kk-Rf435znpGEpYH&O3p)GFReAS^p{WgN&g4` zO_Q?Mrs7BV>pt1L^u$BkPFCluXr8vCnnvv0sr-$Z9jm!59uEjIr<)-waRB*?KZZcW zBL3Bw2h_rN$Sp@40$jO|U2>t7GBwi_vs-~Egk`1+VM0s%YjCOf0p~{2!V?hsHa6G< zQRyZ?{!*4-(N^SD9}^c$rupp;z>h(jT~Lg9>YSrEoDVw{_n+$_!$)y-z3lftq3Yml zq>4$2geUYLddfF((H{}GFNDaHJ@5^@(3d4zUGYC4R=_fsZu4KCX4SYTJin0C+;v9` z=9Jro3g*kw5Qnb&C%c6>o1-aX7ivtk{#fOLS2ULDkD+?DHT492yqzkgG*n@!U!a2K zEqp(`z{2Glh||=49l(o^!bUE_UnNMPdWO@RCuo-y;E09ZCRH{dQ4GH|ynx0#7@{dZ zjWIy&z0;UIp&xPh39U0~V57{zLnPTAK4eiGmbMmFl!jf{_i^K-ZRIFu@bd3atGh6i zkF_5cc>PRYE?Qsx!I~zP2(e3At}L}wUgHwarZo7{Ol+IDm&yV<9tCq$v2mGcjtYo^n>0`OTQR!2Q}96cbCpU^S%gC{4sA%#wQ zlCubewHx(bphwR3DBJCyM?K@$ME=gUtwbwO^9^8ujjE(yc8>zXmytE*HQj&GAoe`^ znJEo85GZNm=bY<1y=ZRPFNXis_7tH<_`ISIA$p#fkS*wMntmE=3(-t$Ks@>GCPG^QhiH z7Sg@w0f{9N}8 z-=0JE+A;V8g0N0bZcC60Unb`r2!z`_VfYqsH0~49LYtk=@@+- z10q>;769LBrbc~-%G8xNZCN4&wb!$dTL0|cg6`>weZEf~*O#gSnQhxGo?orzkSo=c zcu2ztvC(4mC!KSBrn6<%e`OK`V`+*1R}o4#4qr3WrXYnZ@n+C3&t;>$<0a^r6(~IT zbTzCz@(R-*6U36o#sI&;wd+6{Ib}7WYq0{Pb@mU3@5A!OQ4470 zs?s(2*UePS3&nh$4H^Mt158E(0&Ux7P&dbC(E#)X|KhqY6mTl)FyJssEP>!k;k)E8 z2lA8F=sIU+k=)lv=&K|}0N)$kUwBRi1R=^BzX4RgLQFqvap%2#rG~E~&;DCA3v^)` zpfsNu+p;m&Uze0J?QKv#XEHJuR({ZZ99cXikD`h?AV>^FcCgWaPBB*r`iT>tu17=t&{i;q+`eb7iUshVV0OHqFEUrEoqHm z5!{9;*VMmoq&Cvzl+;B{>+4ncEuBZ9xa55kI7Qc8Uv?mskk9?l?n>RA?T)-STE)P2 z>z;!l*==i>>gL3WUKVDiq0_AFiGydnh#=oztx1&gJY>TDHaCx{(e%F6PmU+s@yoC#yPJqOmbINS z?J89LSTA2!-%4cJJ*zqSrN20Wae^NG;O06@yCZ)$CiNBZ6@6}v4JGni@y^u{W(7=c zQOtYnb-V2lWsaO(c;2FG#IKW%Q*PRcOD7Jx91 zphrNtNV{Q&ALzw|<# zO7;SWLqhmi4OU}2bndev=YEQ$ECf_JZU%w6z#*=W0?(^D`GH(Kiy&2=K1b^;hrsfJf;D_t8yyzOB;`U5#~2H zCx$p#ll||*m6%^2keY(4%0}SZWj}<6B>J-3Qrss?TZtMDg(Bu*$iiyHAtU1BpfJo# zA-!V{Tl01cIt`4`UR@r^caAOk3zWl5O!8bxJ&6K!=1;f==CQHh|713NrU?(vcT=>h+ts^`H&n}h;lsL4ld&+v%I z|CX2DC=Ako%&rZBe4Wr}o-#i&yLAT3)JH_@koAS`p@Yb%^8wTv<(h%90}b!oMc&oO zqPg_O2lvSmCY94c5H!>49uL|7#6uHQj66|-&?*AkoH#G08rH*Bu(DZhW;GeEX{a{i z^4w*d`aEAML-UKr*l1jYM1WM_)n}}aEC++7Dh_3@dnLyxvncL$~_5~ zVm4G!eD3s-M&5GYVAk@Tqw+u6Y{6NUA;bAulmOHE`W=oxG05sH0_4`vE@6`c4-HUC z6T(jLB*82z?0jn|u>*VLz~x-{%LrjHWQJSu`d@Y2o4>xyp$X|&HHJU4Za4ODlg{uT z&=AI%VwIPt8s(0weNFTnvw7M>Av5=Gtce?T_(Gttqz4X|l!O@!2%R;xsXXVe^FNen zBkd4kfCz}_se4@odlH62Oog&{#?0!Fiy2R$-8MqlAVOV;Vm)ulP9&?Ask~Rpse%Ru z41Hgf%wRcB9|f@lSxk2*;7kTXu4}0=D%&0(=D^EA?`2Q;zx5R{Z;(1I$>d2&xtg~A z+I=`K;Ax%PrNu^T%T|nCNd_f%M*-?A0OO^H4m$7y%4h48&0!lv#rKuqKSQCyEYU zEoIim^jr9pWj77P@b{#B6cM%vygPTb~5T1UegChFMZTsf?l;7w;aXtQ|n=QARU-WKU$z@~oeh~BIExfZ{q`HoCGfzv^) zEuFYqB{`%?%8w@SW4av)PWcX41B~HFi&M4YJfwDIE7LC9XP9GoSaXB^YOt&O9$at6 zZk3s=-YLlEl9Xf!B^o4E4F%Vc7iK6a=Xg)eF$`*2fwA-eA;wIt^du~8R>4U{An}5J z5n)wB;*u&wN`ExA>~v{W9JuOEzcn)=$K6q$^A*izG&OIQ+Syxu_i>MEZ7+g5?mhgH zQldfYKB2qRhoil3Kn}zUuy-GOVJ97c84-6*w%>X3<@zblSW59x>fYK?>rKf{XT@85hK%QkLmNFn9rH3l)VzL<$f9;cIg zS?LK%`mJ}>+3CcMIQqDaX6y(BzwiT0O=2L z_#-vsiqAdVc&bUwi%74-Xy=d-p4>tnn{w+(4k1lMe%A+Pq4*J>HrA=U{(#BSj01Bz zy0I<`D9ewVfpoRwmd^If!y(t#+qoJ8k|Nbl>&vHOva5WQ|f=tOt*cEYe7+)#OhMV=n|Hq_6!8N470Yk=GVRvdTHG zXZBu>c%PW^u2nuWr_4k-I0@HfKIHDm`XKz>i~qOGoVym0vVTc|i?}kEtGvu>&Xl>u zu&Yk^DQ#w;+g98q;l%1&ANtF{@B?Y#h7A)3dT+i$k3m@u3?zrmuHBWf$GgZ$e-6Xv zCSe#;#7jbJ93L)miiyjEOOO8|5w0?ySaVpsrYo<;yVo9DU;tIj+|`pPY~48+-H~;+ zBlswz?4Xu)i2JI~3dKTveTK^2wrQi4dMqwyyk8(tf%*3HX(i&(P~}#?16))-V(`#GwAi>~ViUaVSD^A31U8_bo;0 zX{t2!7#$~|V2@~Io<77bhl0MD|6Hz$&x8R-UE`y$rL0=?GENhMqA_Ob#0_=j_JYFe zv*`oz!%SqJ*{t1~8ggK%+wix#yOX+|)?9FX@yxw8#T^~-6Ae?h*h#A)U?w&t$VzQG zd(mtABcs=bwdo@6{UaW^Tm}MSn&2T0Q1{kJF8g1Z=JCp{3zVfMX0KwKo*b_^(~AIr z)&6Xcr|r4?(Hl4R_mugy*LQOJ9S>{er+YGXUNfnPU$w*X20R2rVH2p?U15KzMl7xqaC*DHIGgQE1ZRIMGjw)+s zj8?S|bZNdOj`=6N=^%U2Ks|D6XCUG|dKuu?7kh?bMNn`k ziba8IH9|bF@|}j!_iE)ChvdTwcn9MscE+VZ*O!AM8~kJo!u-c%xf&!uRjftW*-F)6 z$A3YTDw=|u`-_v1yr@u?JZ-EZWsPN*;o9r5vkC*RacnO_cB+2<&f_Uyy)mo36kaK} z2j6*Hb_Ouix|KWL?Rk*bZ**Wpr!s4<2;-hYGA z7%`Om!28-1-0`(a-$ZVaPieG=2Iypg=6#v|_zkgTqu9k6&JqRvFY%9MFQ*<%;PC%A zwYPCe)Kd@K@FM2lv*h8oUE(?^RbL5-+L3eh(!`<&rVleg-eVinmuNJE$Xk%sg5!%N z{>%>NJ>Sl%dAEp*YgI!xEzfM4A13h&!#p-(r2nL{iW{i+BeObv1#PAOfZX*ibl5gH zpW%ckdRxb$nOe(pIr{Vh@t}V$a-M&TJ^z3K`X##QWp6T~?*%$ddamdq)uHKd%HC_A z%vS~)R3~BgHb1+2!#2qO`ntYrL>J`r`Xh%_#6C6M%(3l!q}zZ-6edKdzIAB zIy-~xdup;f+5j)+AAHt3gI2{^C0KF(ZlQcc$#cfg+NR{uZpRpGYP>V5;E-~jxO zW7k5HnNPMj_r#euJvpg!nTcTIXRhPh){CPusvQq>-U?RsMvTEysr0-@K0tM$((v9K zf`>FgoC6-G-BMS&OHOekB7hEzObCc2`K`WG1<<8bL;zP-^@Gf~yDsz$oO4SPX0sW# z{`^9RKk@nQCwEFtI`R+YfKxC?z89Ro@x)Svd&t;~dO zawjWF=-1rLJ{@xq1G(;dlxQF#gx?)4aLy?=6{#7ummG}9`pNfc#&C8&Eixr+HYFgF zsmmDc6^j(y5{|J8G1plJXwI6EwU+4q)9Q@Eq|9P2MwB8Pekd45b6hQ`|UdlZ)lX%ysJ)ApOcAyhh^Ng zEZmzw7!X#JwlD5xx&j^3ixuiO5fc}^P{L)y|LZ8CRz;V8s3VmblzvA5MvtK_;(qA& zE$}skeZ$GL=Pl76yI_$0gTWPb8$g751T!1t2cTBP-gkWmK~w|EJ-b*TjYa>a`K97S zWMedMkd|Cti?nWj2^NjDDzqa;)87(q>{E;G50pPN^QLi90soM7qGg`LF#Tt5RzuVl zxP-a*gu%Sq09QZ1q+6Di9Mi=SPN=v1-;G53Lan2Ubmhgpysz8kSnGLJ$H-OkIxa z0LYD{YFW4^ajBZQOQ+zOvv3uQf!G_j+oii7E&;y`9q(c}NGWhDu(9T%>|Uo`qgP1@ zIG4{I$_kkBQj$F{ZOh02DBVxs#@z_LS>eU(mJ1(6@2 zDy}Bo(;!lDY`&qmyZ)1{a#E|D?jQhMtA-8))t^zp=<{2)nEp` zETVf^T4x64>m}Ku`3F-#V7w{u0A5cpujbcyh+Qk0I3S1(IE#mvqFLA80-Gqz{aD`y zv`*BJ$*H>K#J)A*#grQPuRHi{Bv3aNEFE?w1j)nU*9rV$Z+$P+z8$-Budp7WBdR(W~2jqmVNKi zH|CB0i*xpzzKpYVy+7l5w{$8l03Hj}mmz!TdQUR4r$U^QQS;W7ba_2`5Nvb}&!u-j< zUO(62vQ>!rrs=E)Nw+j*tpdev_~Vt@MXR_UqDLSIL>lJiX3NZz9dy+ig7=rQNu_ON z(sw0XQo)PxH6H8JwFBO7_Is`JQ$KieI~tk9cqH~U&lPR=)u5?v@?ma04x*{85^)vU zY>n@J!ruOH`c44FBR zAA07@WeAl$eiSbshVL8Pm;w>Q0S2fSR8K47t6)_#m?F44V}nN% zJF=yrjtr;}*Hy*x*(Knf16n0Kx?qVJV;IeijGcP;=M8Egg|PzY)&Z=+5-PUz2LJ3n zuhe7bp;Xz0=~Db6h}xx_yg*WuZRp@C>c&QcTW*I%oLXI8{;#8?q4rjZfAP*|)=ZE$ z79$7FgavsKnbdfzjzn@d1#H!M$Z29QpZ*Wap;N;)v~$dIAdv-Um}9J}z%u|o!GRYF zn&?DuHYh-?I|_EHfg;CCh4JvdIsxr0_$p-~_1q?ac5v5r=hCV1LIoV5-PZ1 zF3&32RZ+JrGoEvMNy=4Z*FZ&0t4o{;Wsz5j8K>+m0!$j!n5H|&i6RJiiiC!IQE40` zb8}kXu^XRMMFBhSDR!CrD>%iUWpJhb5d~I7==%}Nm(-W|OQDF7m@>v`L2fua=yk|s zgc8OagU~lXZqsKvL{Tz2Sy|JlqpQYkN5qHPcpudgkZjJ(^5o7!sKNb$nmRNF(B&AL zs73_}A-Qr_j35)EBBnR9dgpb4_nhD)CM35{N4aT|aj~MFYQ5?@p6(rE2IcJw!C!~f zGV-DUzS{C%-nSG~5fbHaFK0!MS$Z{FdSjklk<3H>viaWe-!U@JVNpw7UjFY{-__%P zUhjjYUo$q0uEy^GIYKk(B6pLu&V85??W9lX!M6bT!2X}~0IL^aoab+w7S zQ?ldCmI8;J-n+p3WeS^L(=yc&5Rqn&Udspz|5D~NNqA{5{C@Djq_VD4!4vy8k9i~L zo7@?|s1V?bc~vt$GJyx-*Hu0n0U=eU6Elb$)mfSIA;vgp-@Y@;s7<88#4XTPqHH`& zT5boZg3N7^GHe}YGlAEf$*UQWI-A37dBVzx4lW>4HI`W*PYAQ#nYRAU_-K1FcN)X7 z?r;LfnA49Rh}wZDyw^@qp@w6oy?SG(bGUfeqeVr-$&M6swLbV5;Z7rhxc>efh(eZ@ z8Gp^g4MFU1R=VgB`d%2otljzj)lIU;isrGK+kdFGyU?g~EI41|-}hs2O@NH9D8X#r zpISBB9V75>BZ7aihuW*Hp@*nI{!g18e*?CN?W`)X@#vQzA&@5dd1tu5uQ|XkYS{9i zUb~{T+%t(U)b+dl4WUOx#k(@a1b&N8yVF6q3gw!I7LwC@OGnl*V|Wj_#>Jp-TQr9LT1P`8VD%#H)7AG`()Fb4WH1R0QAY+VVr5uksqvAWHGK$P zGQ!6=dJKYe9|`He2JJINaSG;A>)+@dxzo;nc19Pc?<&;g3oG&QE9)Vj3-#OsJ213# z_gPP22?(1qosHz)NrU@}uI-B<#so-os+pf3ki^WT&>n&MhHEv zvz}d=JKdl`0i!ML{iI@HuTtPblIg+-mIB^G042s3j1p{6f_7J9?B%IG7F>JQ z9bzB22UJ8|Q?umQ+Mb^zBnk)N?ePl^DcQ7J_SxjjThiRJ&VE8Z>v#R;jZ2vls+Qk9 z*OP!BwMS?2Ui{L$8&#HVS#CKQ15t#ckFDpoC4KFLON~SDA6IFYW#a?_GuM=LR^JX#KWcc!G5YZocZG8#P8lSkK6dbdRfdP3X`WK)=^~5!V^P>@ z)HSW*>axd%bq10cDGaq0Uc-b*^d85Oce%xcSzWQBON)W~h9`{5^=3+G!xo{vtI_W; z6=0vsgGd2C&Zh`d5>5@;=_CKg?oBdA{y1vcxoKD;>SJ2~4K}baF}8{t6&(i2ZX1|o z^%DkG`|oE+(Olr>KJ*7*V^RY}7X>-urq$^L3wT^roGsZ$ZGX9+y1sg&oJP`--n5sI z%dQ?jV$3CmzojakHRc|NCf>K|BeJ+x#n&J5QQC!@@oKeR6rPb=sktjaoo5ErGO^&b zym*?I8v_C#(coT~_NY3vO8?lk2kjgsxSvSj&im*~;I&%e4h=|3WxJ{>WSvIX0VECE z^4Nlp963{CV`|pJLiV{;tbIcCw@oBOybjF@8|y+^x%|Gm6T~ z;UV{YD-mF?U%8KCkv4`do!EsIL9{eNE3J~MXB0xM()(G*M;%P`$#sHN;X z-S5AO&2t`=K*IbnH+L0~I|u5`Nsu?wBTcR*10(WCC~VEg(3!jKYa;$9AkHw)y_>{z zW)i%uJ_!lVNYC-WxHL6=Ts^W~-5ty9_5klXu79$s>UyMbTgS*#wtHL}Z_=}Ck!kh| zIbQ~51ATYt4qY>miL52>#=K`kcko>KHo-PF=x(8=8~lYjY7 z#0E@-?Ph-3iPQKijC(XcVgtBp6Mk%Ggx<^Nb2mU-8N%dJODU5&njK&pw4^;T2tU#x z9x4g<2@>>p$fUB62;8HAcokBC_!>^O^-VaiA1WgHx(fHA|&sb69PAr)NCTKmB0zMAcJDSMu9VN8JrDhghZ7Txs!!OvH7dW*&b&Xj45jA(xl@bt7fp?}&(EZ&DuHF1NiN>-0^uW#j+YAL-$D|O?$ zs#spW^f-l8HmR=QUsz(9=YqR1sVY(c=Y)J0vi1{P14Ba>c%ncA5=b4p_*Pb#)x|~& zW&J$6`k7C!N%hMIpahw;hZcU}h19EP9eq=mLj_00yptj*yhl)sDKhjz@Pq}c-`h&A zngkLHbe{qhS@B$znRe|C&^{i?I;XtR;o=fF3%L&Y5cWoUT`kuV|ECCZ6aq@SV4FdxwHTZIQ z?5WGd?OXfhrK9}2VzMN0L7QLC#nV^xfN&;4GF5@bz2Zk>svk&3s=&Ncl28Mh! zxKx0Hzy5N?oH$@C{zTG%d5TNWS}tpKM*G%zgL29+D-J+aUvK0e0X%q;azTjf)aizZNZ3l5=Q*y7~Z?ly@{1WFXY^z1_N%(C&(ZT z5?9?2+>y|UkOWcJ_aEHZ2j**opvEqJh+wW5*ocpaceccav0xGE5g`JM!gjwWyg5%#siwm(z^E zmCAgF?i%<$N+VT$y$)vY(S0DYg?;V~c_w%ykadm2Yfe;v5^*vO_3#&FQd zgyFP(8R6sFi*~yKkL%5G-#g>-o7%mLPyNp&suKuWI8Ym)QIyF3CufWZ$)ejO*_*dL z@D7c`fQ~1hS=Rz0Ay)F@S+_bH>R7lFk49J*gwqUSp9~g1gH7EHO+N#H>uU0VsN=BQ z<8nokx#k??BsTf)`6w3aKM=sD}Iz#q0SSD@%z8085nGSLv3nU!trHE?8^&Vx-44e5E--QrJ z@OHerX`>Xsug31dm<_qX%4)Zxs)UtPeMw|NSEM@BY4@KEh6*=X;;|w^&+^*8jqiV< z-i}tQI1Y2KM4*fPvA&ZU!18zZu1P;#_O>S!%yN#ZF3ZMfIPE& z;w`6PySW18C%Qm*$P6r+&|inG#d!$76hS9Jv^~B=!!-}+)by zB;Wv-4do_<&$*=8H07{#Ol>(&)RAf$oaVE#jw%Lm(9vRehdW2lw%n4s>gC4PVP0l0 ziA2d$%~4_dwJ&DF=$w-pjWBy~f)n7SukpoOp`}l^NKxs)MKWgH**<4JkD}{$;G6Y; zCBDSZOL2l3_=O~>$Lf8~`A4aVWGnR)-*e)-FNwki^MvWt=0PqwZgl3_$a^x1n%5PP z+u*?HP_70r4>^|HGgN)U8MM4*kW2^urR^_~h7~Cc$0@p=r?M{x;FIF-U=%DFABeLA zDs`|qo*ReXj1qY=gX5t1TBEWatNS!*dDBxkbH6HT;%YW-VRSi$^7FI(HWO z{{$w18@3gf6eOrbECutlxDEYDgW}s81HP9|C=r%5FwFS_(~x<#^cw&!vi#yDAI&3# zHR6X#AB6!H9x&YD8YbdVMcQjf2WMH6co5(F=TPlPA)s2Ua{N?4o?b=Anzb6rX>N_C z)j2$Doe+wJQze@(g1EAiGHxngn8r4NRkxBMM+q12A_@?0<~V8Fj)<$VLTZ|Icl9oSv1` zu37bl>ypgt@SVGK_+Mq7GX@4)68;ksGHg|;_9SOb{mF8;=|Or8x6XVb&A^L8VuO&Q z@~c_cO|%@iqa1dNN?voVZ+=+?5$cIkQ=7`pL~bi&R}3|MS!clsHFk9cGN&rD5b*e9 z{Gst+M5S0nJVb4fF~)`Y^c)5a=eP9(IJPfv_X$tkKH%m&*zqF?G;a7MiDtG_D&ng= zc5q&HC!Iq-!w;;!@70Z|y}{#tp;vG1cWOvzcaoCTx1g)&?St-^iJ*~lA&E_`e4a(p zR#dOHpWIE$Sg1qfzcJz} z<0RI@-vor1T3S|7atS`QR?th!5j40AIwg{g2h7Y?YO%&NR+T(Jqs%d$`z^ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509042002-Config.rsc b/MikroMaster/20260509/20260509042002-Config.rsc new file mode 100644 index 0000000..53b2822 --- /dev/null +++ b/MikroMaster/20260509/20260509042002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 04:20: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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" 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" \ + 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/20260509/20260509042002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509042002-Diff-Config.rsc new file mode 100644 index 0000000..a93a4f8 --- /dev/null +++ b/MikroMaster/history/20260509/20260509042002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv 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 +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0

&e 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 z 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