From e4aa1fdd47a51170596eeffc34ccf020d5c56a3c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 00:21:10 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 00:21:10. --- .../20260510/20260510002002-Binary.backup | Bin 0 -> 300002 bytes .../20260510/20260510002002-Config.rsc | 4643 +++++++++++++++++ .../20260510/20260510002002-Diff-Config.rsc | 18 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260510/20260510002002-Binary.backup create mode 100644 MikroMaster/20260510/20260510002002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510002002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510002002-Binary.backup b/MikroMaster/20260510/20260510002002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dd28670be46cec348409fbf1946ba029f0fef2cf GIT binary patch literal 300002 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

uk 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 z�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%0AgjZ8T! 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


+kMPR%WGX_{^azKEpXQ<*R4 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

;*b(Ow#Y5V4fe{6vNY+3@1 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 J zzaE=SsebZu+K}fOiW(fvvfANgOm04=M-*qMhTE{;ky!}Ue5a5k|Km_iltHvo>)?^P zBi~N3$(dV-a3?)tm%sEP@{rpq#AOnPdp>WI*X+khu?ppZYYh55i;^@nZUkLiqIbh4g*}O1@b^&q}ChzRv33_ z3T%CouE?nxnn%RkRvEu``+!ojl2M8_k*tMP267s6A>or{KI~CqB#hkAb|Yi}*EuF@ z?+OcB9X0@8!x7)+VK01xUzJPk1-ByVgSXl``#a5Q#ciw8_1tmL-fBU8swf|q)0@F8 zGlq~-q>Gx%75)*bc9EB*2PTN%RX13GDA7obf7NtkM@n*o5jcWQTw^R!6a#me)*&Gi zDx(}pq{GJ|snn<*Cuh)VY5;aWs-*F2zQaRN%xBmClZ^M)2k6W^hSa#h_nCw+iFvL>DL}TtTi;nc&3a0hC>-OLV&!*4QR=tIf4;yd zmxAJSB>#w?wZ8Y}kV6vi0CQzY2qF1|HW*(JObfo(?pLOWU#R*j$=67D$9t2(bA8@C zM49Qu!~aml3|+0e^U>4rwO)T=rq*gJqY6T6;Y5@kPU!2AOYEQf)U~c>+Y@d7fQCt4 z=}0b}IU*RgP`vbFhkPD_RZR1>zkIzdk=V0=yjjKE^~%}&@@)z5ThVvYN)cDWAQjuT z-_vK=(4|=AZ{4QqC774K4{wo4oNg|ahxy9SU@u4f`X=g+NIHvdvpm0ZRE&@ zq~j!P@P9EsCC*<;3~M+Eei)3(M`<-cL0IT9PhdAuy$HR&(c^48Q8(DT{*;jjT<+wi zRWaBzFqCem*hQ1hQIL!`QW|zEjQGx(C*br{-XMd*({mjDjm2`wLKPBNoe;R1UGkU@w|9<9rf{WZEP*$T*P2k zuWH#OB&JU?tZ~{MCbiGVr%oK#FCO82XczT|H|;)uZLALrucj*xOVt?hDwFPo_+G!Y%+vIJZ== z`lFlLX|r?KQhp4%&bgiTan<*3c7EbcbG4+edk=|y8Z%$%9^3uaG_=)_HyXK7@qGls zJ@96Ectq-qPQAcu?5;beUd(IN$G0&W0;dgmkEbjgeph#1g?a*!Q?JclMM&h=8#dKSv~7Wuhcl86c9>k%HlRx4;h*~NtP*{82FsS(gui3zGkYE$@P zhz(;{^>nAKpI~&iegpk#5~yKgE#x#76wJwy;}1_(boia|l`#*#_H?@Vk2x8gg9Q(Z zim#4QQ-*lA#cwA~0Ob`}IOuB`TCla#Bb-!5-K#1mt&;%n@MVp4ZU8YK0wyrSA$L`Ck~TIEDcc*QiILX>&v2mUF^3UpbJX zj)!fQtJ;1y(^Z(xdw2OLS1CXg>iVQEy4Qrh+bvkM@a+5v^-9^{E&cfs(B#ZN-QuV6 zy-GGVk5Q~O%448Psbh}`bUB1P**0|{AVh(rGVan~8N&!Qaj|r0Y~%aYtLdwXFa`%A z68zq&GfQ(t&@wIo>yfwhZ9~f%Cd2xuCQCgy1uLm$u}v2MGV_EV-qfqVN%tG5Q-Zs( zirFD1!E+?9-=#~CopKD}p|MN5+BP05@3ThV@h#AMi;~Y$3|JHbw*6(Llrco*l7@Y3 zk)B)c`>CUD95pA1Gbj`Ai&Z>b>Jy|EK1+;PB}b1?=$A@&(mC7TM1Sp|GnUTFc4Ohw-PnK52Lf=F&sQ#)AZ?V>*p+ zlTKC-GwLV>o)(a=1v7PETB#q33Cei&Au}BU*H}ppF_;i&@c~Z$D4&`VK`VXZwjjgm zbW0hM9SEG-Z}(yUheK$?UWfGl;^4M9D68HBuGh%0v3^;(G>Ph)+9b1vKznWt?J#FJ$FV`=-E3+D`I5sPRa~P z9zBK0`JdzaUPrd0-`|Cv)kv#F<%q|{?V)8r8OgztCZ_sacy@aKPzy7wA{$LnsZ)F2 zO7I5ofV7bFR<^k?CO#kra^P^PW-2f}YO!c>u)@?xnn^Z}?ao^W;r0a~EgN2b)otp> zO_wwvXJ1~ved08QZ09bGiIHZhHGy$w+X7X9@XJTK83gQ6@2Pyxw2c1T>2a*o%V$`c zO8njUg|6LISGbPj8Q)$$pdU?1;46F@1MHsNE2tjln4!g1Mr%G!de&y0S$xRx zC5A*J>XsFm9%jgt96)9toB&elf0K)#t9dSw=6;qDH>vz+v4R4B+z&_-PfEs>ireeI z^c!C#KwUX&a+XkDFgya>HNJ4o&HusKL9%C(0;T|bYt}sNpEf&`_RB3X#vBus65M9xBd7M- zl~1m$s%g$>u;1)~KCHu5>|~jf$5}`lB;UmiA!N0;h&-=tjd@tC<4=Taw>}pw!v^Gs zhplbf7O$~$kuz?oj|;NOrAnQI_?+zwsKoD)}LzIxNUuRV4PAZCnE0ZHt(GA z&FTz?^rsR%2~H62590PJ;H3kAnx~lT8FZQD)N=@j>e6Q|F2(YZ1h+1c#)+QEIMbNUf}e+Y^xfPy>97}3^>Pc<2(mO6KpNO{H$oFNp; z(E*EJeTfQujj4LxQFw1>4aroXOr-yZtuCCxnJJkMh~1!*aL5j{#)QkR54mS%@ADq# zqc0b7Rp1d;7Ji4i&Cd!4U9%%|?r*o9@{l-pJ$aG=9?DpJ~MZrKj>HOqhN#qm)6%~0Yk7N~sJ zvb!fr2zmDKgX|(y)4&I_LS_vlh~u|^k1Mh`c&~-0=feW=Zg26DEeIz%m*k$4^pdOX zfxf&l!3HGLXQouo6{IaP_V;XxOBQ{<+jVw853*tP_@EMg)D{}!02uAZ2V(*!N?E9e zs>C73h(@&4VxqEzxYUlWIKlk+tMCgHXen|q9(OZVN>AIYVURf92V0>`>}GQnxm;9N zTU689Qz_6wOa3i@rffy`i8TjOK-I3Kb%jf>85RW6BQ z55Gy&UdNERrBPQ{yWHmmU+d{RJ~k}yR!#c5q&a)K&-w7d(xe^_-U%ZL-`^l;b!_zd zxa6k`D~k{;8Q*+hDRCg1sp3J-7&Zs+ux^==^ z{#Au%e6VnTjD*xN7svV>Adr)H#~Brl`VpqGpB)NbF~_Csb3!Wqi(@~?i65cJ1Gc{S z1CR7-3q+jqux*`tm3v&-XXTJL??J!_rEH3SKChX(`1<5 zo*Rd`$nb^A!c+~lJG=GvZ;GtVzBVoh-RWB#-92rXh(@i6P@~LexTs;!T5DWAl8K~d zjL_k=->KOFdM=gtYCd`!G5q(g%xWLkb~k3BGRtyF6HQdUbKQ%v-#MM&uHOav_@6!8 zOw{{|pghwDAE6tbh)`-w&5o6H^x_!sP>Jv-t9agOT!FdAa{pjv&PFZf3I>VzSrNU2 zx-KMe(wi_DS__#`vv8LB1V>r)mmc!@l#w4<Y(nH->+sDPm2EMS1*h#9Yw<*E$4P;JhdF+E*hX1VlvZ)gm#|@`}794 zy8u&>)ec4dis#2EJONcnO4XdX)T*_lWNU*) z9t=S^x0Wn>+}O*TOG+QGp?iy~8b$Up;X7NLa;Zc*!t9}CZ~>{82SzB(0jyyLiORQ! z=facPv*36{zi!@`?oB9Aa4W5-;fG6fCGvmxv|&s(A{kr1<()-Q&>O7d5}(bH@(~+y z7WW9KECs;Vdiw$g*ALOGxFVOjJjlj^)wcc~N*|}gn5o%&6xjD=YWPBYc1LM}S6C{a z_&^!VLV!!?by4F0=~!)k2XKUKklef_07{apEbk944VoC-0v^|Dc{5q@ERv{#fxM`h zu$fL#cfmPLer}vg74$}E3tR;$4U8Yy*~<6CHRb6UW|qgBbfmt*q(zZqe?T8Y-h*7 zQ{Lf0p2}VuZq`xDlD z(0QF6d?K0XC_9V!9kJOLli_Kzg}|~?RDGbf)}+N|JBP6ZD2+KL$JrkWbI<0LKs*h< zH0BdX^A*KBID^qL!vzYeOvnPgw`1w4sx2gDrn~t&xo!r^#@$*1WDv2MPLUI{X1|rK ztkDz!NNKpeW`|bAEwv$g_h}Z(@-*0|qjF0C-v8}$_6)Dtx>~(?JD+Ai*j?HlE|WIk z*vb0#I>9+XYUAuu9g4vvsgnRR@!EG`#}0zG5_l;SQZU!1OA3uh35$|UpKGT|Lo1E5 zD#<14KRo1oH~kq6B-97n4cxr>XR?}d_o2dpV!c1%wQJuMXNb;mdYGrlBEx|#<}>y4 z81M#|96_{jM`(Lqf~>Bx<}o0lr~6-UuagO_kG39_$p+(kfF^^#;Su41y3;azY-k5P zTQbAwYDN}6AZ|Z(^)1|%YiiCXWklFs4dE)3^ltI+i?}?Q#4lR`P5RqpI0N?`-rqgq zs&91mkPcLbor;e|8$q%~s@q<^WKr(OZ9WmUA6#xr6%Ih=^sn{xHcj0=5X4w9hLaJ; zxAkZ~oS}$m+w#8^mN9xIo_GsVvK|gM5ewXmEnWcR@rc{^?Zi1n)h&x+$D`#Y;fGal zJ&VJu6Oj$j37gp)p}{RfqH(;mx~tT%DDU_r&jis1UMmL4^N87j4ESBX%_cuQn)-Pvq;MF;s`s8R5IMfNl0)C*KbsxxDnx zB1%dAL^=u+7q2&$DofpCSL@Be|E{)0_(9b!Bj{hwwUMmRvYr9** zK>hy1;skA+vc2jk?))qslUdxf#~kIXquIl+Z(Y%o^C=OohJaX*QM%h&t~PDLeFxNy ztUempEuhnQ zaFDW0`$k3CP}9hy3~MKdLh6412&(Nk;#!{<;_RsD0`AJIjodcM{TEFFZFAD& z#TF9Cu)X}HIK-N?GiZR!4nW zLn#^Y<}?K~c9jYw;$t(&&8|o1;llm`EMit$Af^BKIU!;nNKpreXnG3$rMmphpn41I z65T)BbPFx7j)Bjl&8$p?c9Lh~kmW3EWz>Uhf58M<5=k}!YH^P;Lq_RP$mR^87D2HW z_ONFZV_+N_vLSiB6YmiCJx$o{q7+u>W+~A-2VYORn~~FFc;Cqt4ZEfLfnl(mRX90% zBO-0I86k%r?f6tG9|j^vVa_Bb{P0^-7b9Ly7K)!ixx4J+wNz@rg`9bDWPbFWo_oHK zpz^V?bTs*_@uKp;z{cjb-kmAk&f1y4dEH>non-?kmNin(`es~}RKiE%+7ly6p6B3W zuRNEv$g3--I=S^P`_CD0dgs!`ikZWhZ5mo|u5day*7f?2i!x^{_y}RMaz;Iuj?$nj z+3cm`#W`|y7fy$RB zxfIBEznqW$_m~82k{(E#B=G>e_23phm!3$fRPE&29oU)B@ z410j%;KwwyLooiT;UMQruxD*{ex zpui9q0s~zl)ptkH5n+?@G2f9xgwC@L#i$`g>XA8DXt3Vq8%C*kw%kTb@tmR?kjbyY z$Jl9-&ow81$zlR6OL*O+i-YRrP747St*{bpb-lT|8ht$;3rJ=<-BJ8PiD&6eeS_pv zK-vMQDWjgP-C~5lz+h5eL5pX+M-F9)X63zwz+WzmPY9!aIQofB1q;J*T2FemzCyaM z^lchv$3q=1X4h~PR-2QFIQ>oinGmw~l|{K%H~l>0n@%}MzpYH?7@mpP3Y1-}{&KyX za}$WsI$y(L&#n&pXx%{v(b#*8g2AsOZMjC#7dq(wxu2cSNsQuZBOy-6nl?zja zU^g?f7wxPMhl*nsh5;qWWbSHx(3A6l8i_J|lc;YG{Z{xi^PEm`{tk5g6N}kGhu+eX5s)opeVDEm zMVOZUSf0^O9Ri74Xb|8<{LZO=jrIIFK3~Gj5oE#qujg^J?n3x1Om}VXsLxvfT%!iFs^v4+pP_z-1FitU2j zhA2@K;uWpV{tp6v7cFI@mk1r#16qA>5YMW_x2`r=-9F(RZ zJ%9_`geuIXkjxyMwQ(H9dnk674w9l-*Z68D zPd3V+-t^Lck)*m6==mnVfzq4|I;*UWSOnPfGSxrFDIum5J_v(1;=R%oKQjRN@`$7GMUfp5U%KO(|UL z2Ge59T&+b1dH^+GZ86sXqy(8Yf&+q!fXL$`cDqjdmCbo?o#zVuRg2xf9Q0>kB8gc$ zwnMmmQN@>t+hRQ^P%Z7a4%<$h`R^_v;j;H&S}S`qqwwa<6SFh%^cy-YVe=d%pgABp zi|$jml-Lf~Z(dJ+Ek5HYmWL?5mL^LrY-Z>1!r}{p!CYnVD{_K595SwEr|UvevL{h= zV3Cm34(RRudRszDjmHsN$#!!0t~v^D&N=Lf%1V4P3^YlgPo2lfnBlY-p(nw+h4$9 z3Q1|SCDyaWg0d)D%##!41iNJ{8J`74-L)bJWPn1+F@QtL)RtZd# z<9u@}(*L&Siyp&oWnFrSQEsE1dbbLYuW(;AR4~8{sJ-o{Rhe1fh3|Fc1>6*DrDsXlsDL~$sTvV)g2tl2t5$yXC!ygT$@SjXjANKvwHFqa zAUK=uKI1;wvcih{LJe|OY>rQ(3g||5f-sS5T{oZ@3~96ZGMv&uE%c`Tba-v~;J}{x zh+`10Ij{yoCiv3U7^Wi%$|F1;O|WS(D%gDHh%u0<0ozv*n*uBfRy6Y!Dlpe?9%3NQ zSt1Zs(#uV1;;U=^a#r0pO#K@ruD2w|?!gssB$Zo$0D67)M0wv7>zSGwR4z!^dC{i# z>F-c+oniPO36AemNAwP4(y2|JPZw<##gy!ufqiFgsa-cwrZR8y=&PeI#rGpj@J+Ir zu$kN3%%JJXk~jmF-NcFFfdJ~jJE$bAp+Ve=K36E zSd)X;fB~i#h8dF~q>r*ek=m$!P_5@mRqO^e8%{nO9h{Q8`FqupoV{$XPY)Xz71mzF zz0W-&Y9H5!ccWBy#d8t^wN(TqDZhkD*-AVbBTHXLhs$=dYlZTF*AKU>vHGH?I3Bj7 z*_$E!ivB64gh?L{Ng1NZ2|AvR43ov^R)U~zlIs$?i7hfhf0d(Wsb4OuRIq#HsaYrV zKot;JS)Vj0Y3ez$w@UR`Adp0pyH*kOJpsPGgyZP4X5rQ6IWmyCtzbZsDb>>xti^TC z8JwVNV5W&B8pWciHYGw$@Sy7G!lw&n2`nU8%D~tdm`d6yS*d7peD8SC!vK5-fD03J zy=H@TtE!t2k|A}7;{;VD%@Nf4WC~x#Z4B!#Q@JJXh;0g7x(Kbumsi!E_=UaaawD68 z^)mBqPjy>r2b@J}$%HPI)#T^I1uoV?u}w+=(&8@VodH3nf(M?;tt z`1!9H!bC2jEp)!hqzAD77s1*)!Hh!DvzBA_fgCw9?$&9W+aTTBHu^svp816Em%fjc zyyn`FJ;25kuZ@OLNX7J-$Yo_I&fr^5PqZCG>y zQDUk8eM3Iy)PQGV!nPgI>&+=%thhE<&C{w!4sjO{VE=&l=JyQCny86O=VQ<>T4AMR zp>Wl>`~h5A%uH*CA=Lz_M9r4 zAAm;$=-}_7Tvh2MT6G8rJt2a>zyUCf>3(!HjLCK*`+C}jF%q%Gi*dYV^ObQLsccv< zS|WMXSfPh@E%Ju&j29ZiiWdJKO<lG3Ygtr2TXt6eXbkahTuctT;_;^ zYU5D4IpmBE<2`qX!ta6#BW1vwma7q0wgEP1g)x=+p${u|8mfuT9jixuS6_+qn~CqY zY~B9wf)Z!6RhncH)gR!b=YJBp6yv??gZ>O{Xl(Ssv&6YFd8&f`ll|M_C2=%hO%^I^ z;Eo&S@I;IQEIat1@X@cD*9%(3DU=z>BtywWk%gcea={9wVQup9!r?-e5%VV26S|aF z$h6Rvwk-59&;V4I5Z2aFpH>!o#Y#cV*BQqpd~T5gRitbx*ha5r@)--JrYGZWvA0Z_ z%6_BUGJ%Hb(UdQ7**>IC5S^T7IS^n=cflyxfYa3!Ne*md4WN3nhu9H#M(pb(yb8U= z7I5US8wx@`D^MuX_ajay`q?Ij!17REF1-EJ!= zi}&R7-}PYW_9oLh6K76njMrcYOSXC2#BH!H#PxA_H!5PTxg!>ZYJe;z?JP94+W_Op zI(7|6zLw&~4m#(xC9qPU(HA2JwGsEjK#UA|aA9F4^Ige{zI5s~P+enf)pJ>6+vp=( znD6Ha!dE6{5QPvzo?A7WFVZg4T(_0cFSGN(q2Sx$RX4QHLEs0|ka}q8CPfx!yX1K} z^%-sW_j3I-Fc2gWBuEdaMXK-rP2TpvqUxSEr8oS8zzs_d$*)n^y< zW0q_g6J%#E7RYd5D~no8cksAzoQH{pAfIpWw!{OeJ*S%lKL#K@<0}2o+2k$2F|w`> zMPx{fSeJ|T0Tk9ouBU1S>`LL?p<2MyR!-?lyVDZ~r7_#`L70td{qgETGM0wS2FQnq zk%oHk7c@fDDixr*lwG#TZk?=Jp<(YA)@}pd;(i*faDB+5O4rFaPoZ1e6|A~*ctvtD zy+{55`Hpw5-2ly>MVI8B1{a~3g8!{8@tc6*ijH|N(n_ZK;!I(NlGZh`{|4}`ZLsuF z#-&$vU8jK?#3jK7dChEZb??*OP{?m0f z3pU*G>tWbB<@BQ#QBL?XLq~|ppZ83BiRe>lU~G&3Hj|yoON`@4n!Pp?!`8sLzHZ<75t`+x%6$ga{D7%=&ZaUqw+rj68V4v&+Pa@zDHhwfef4$97qE^B= zP$Mu_@j55g_~KgWAArRm3Vi&JqCQA!IJ~#%V)*Tk*hXLw!u^;Ekcrer2gA~L(t-Ddm@oO0*z2%w3G}KGNSv3KP z>ikZ<_I03-!ROuNa%0 zg^By#jXJ*$BthjZm?)NW4_a+iQ!Y;KL&c(7o78rNxxsRv%-I2t9SdjnRrJo3gDt~yR zkS_TJv8PXzT?O3EGf-X6bh&cEh_P46OI8q14%lp+ye5;hArAFWG=-2q6nD*}^#;#y znvZA->Hm2*`>zCjUy!c`R29~nr%bP7!#Avlp2fO z2(C7MXpy&fnIAIU)F)GT(3packapVXmF4uIu-8$kEor*T<@@kmsga8k+q6Hn9y3+! zOdKNbBXK_~9vnIbLi?vtG~e7;?0^{6lYjM_ZXpImBXPjXh!E6BVmFr%6KMkvJO-(m zLZ=b+KsM*1N-Z9l@au-r+{W3`g8`)y^M;3NlR?&j-Ws0dc|0P zRMuPTRA>G6OqB#ti~l>U1VS)jj?b`jREoRdAEF;N5H;qKCfF(SU{DjIy?lw&d#O(+ z=$0ZZ0L?)i9@sai!S1`ntE#Vr7yeWPN}tuG26@4M?adfi9&}An5Df8ASS;Q9cdMPi z|3m)k5Yzryg@PO9?VgNw{X6Y#PcenaAF7HkH`Ojm=$U$zu>C^MRUSaTR1t@n*m@k=#H}qNu9lXf&7YV=a#R!P22BdyZx$ znkWe+q2etVW3dtLb`1+3rQnVB1jBaEP&3^Mp=ZJs>$eenUXq79?1N(B6b}!BH1TJ7 zY#eUoEZ!hFU%z)!)Vaj1PJmX^GNm}@yQG)?yfhJ|Bdl(UeZYc4A!1^wW_v%!QTpSr z5)~Zfk4K~p8l4#TN$OBFHVou;N{L z@PM(0q!jcTcv_Po1ds<9tPb%U2#=097qEi$34`qhsJU^%biqezLyfWQP7njIO2g~_ z2m}M2aBixJakOLg98;&+vk7Ii36V@_EwRu=K$c_lKKSOsYer=%sL=gk;LSgeDm)F> zY7U=tX17?dB>e^Ijb%xRIn5X0$&HJlDemIuRB)JRC-9Aa+M2{@HA^iTD*>d_F>_!3 zcLIX$=o#(x*M$@lB^IulYKI`~FVjd?lUUIiZGnN}HBY3*=j~8>CP4bf2qtDdG}we( z3pmGB)OgNE?HU*ce>CbjJpn4R6Io|Q#Gsd~8-xCjn<5y>s$-IOsZM4mzz{qsER5X5hO z74)c9JIJ^)@M0`cV14YWAJ~!=lb;SF*pH?CRa7kdEIyucN1;+_&2!c52^)LN^ag#j zu5@{=B6Dk1eV2lbL`cr-ZnUE4-Rz`5mysY>6}e^M+C65d1As2hcBubjji2<))ig%U z@$J~+W~TQaT1|z6Wzkcs+EtF|>+giPe9rsi&FCSnP3#loPkom&Ad{UKQat}7hFf7>BvFzx1Hgxrp5_{&=$ijYYZEkpp!;jTKqYU83-9znUpTnd_I#?qJ~er zv|?A3jgrD@#GrPcJQTe&1LIUNI1ICl&GP7L$krzUpL@fOR=JjfYq+s^F@W#QRrE=R zJ-YAGi-~phss#|M_tM+uryNzdf*S4Eh%v2|r&`weL*xhSJ)-%9wLxC;fvsD$&gdas zKWLZ^F09$Mf1_Eq#HBrwQ6g*kioN1-DZ&HOVNw>WA_=^McD6%G#ys6*0Pss6Jk-pbH>rUY8pU_YC_+9af&zQ=vNHEU~sm> z_2&6v4>1f#T*&FQT1AJb#MzL+lQ3C>OUfjXcPBWBdgT@`j0@Coe(NX*$opt{R4x+C zV42-YhbV{WvQu3iV5>qB**~Y_jD-?b

~I^9u7TiLMCDgKcgQowFjVX(7)ZOu2j~ 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 KXbu4=Z{N~ele;AV literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510002002-Config.rsc b/MikroMaster/20260510/20260510002002-Config.rsc new file mode 100644 index 0000000..7b3bafb --- /dev/null +++ b/MikroMaster/20260510/20260510002002-Config.rsc @@ -0,0 +1,4643 @@ +# 2026-05-10 00:20:05 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,::/0 client-allowed-address=0.0.0.0/0,::/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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" 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" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/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/20260510/20260510002002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510002002-Diff-Config.rsc new file mode 100644 index 0000000..64a648a --- /dev/null +++ b/MikroMaster/history/20260510/20260510002002-Diff-Config.rsc @@ -0,0 +1,18 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4292a4292 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300,4301c4300,4301 +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +--- +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0