From c8d916018ae02bf34b7d9c2c25642178932ff137 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 10:40:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 10:40:39. --- .../20260509/20260509104002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509104002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509104002-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509104002-Binary.backup create mode 100644 MikroMaster/20260509/20260509104002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509104002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509104002-Binary.backup b/MikroMaster/20260509/20260509104002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c571f7d1575355bd040cc39c6bd3f75d80b7ddff GIT binary patch literal 298264 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%0AwJhlm6PWjL{H1_r^e|ZEf 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ℑ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

rBj7WTLHf)l0Lh1__loc)GOv49+>ko8tT9 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

uPE=-7 z(2Fn=&+nXH<|eP8px3mR;VbL2^8TnKlz3|ud!87k{uW)*BGtgy{(&?A9Qk45SYP!= zx*0h9&JYQe=M+#}lA$%aXpsO47hzTo@4EWu*noSMdhOh1JHw$OBkkaQV%yt`T??zi z_wne-+A7f&Zv|m>&cEHt;uvrLIcxGY_oZ~7!??1f3xo3YHlPWL*%)g=aUVs` zDR9LfTSF464d-s=O*T{m|I4hgn9)uyb6n`Izp~zrv{D7$S8?1&zoyyl$&DrN=Ety53dqi_M3ldtm#{`#D@g2|HXh8_S9d+t>son^uf@?h+-iZ@Waht7E`S8|y~@22=uTix zmRX|7F)LX$pb`HT&a9R=S{GPoQ0*sPU~L=^F&HHffEveJJI4pdy@={|F`P zCnpV1Ua0}KHKHzUgRNn=gx*cDu-*G2gP>atQ39tO8It9K@blD-ZwFtyPL`McXxfsZ zrn@1bgkcN0VbMHhsH_zDjSgjk`c*Fc%WMCiWE=$y)5);TeEM^+$rtrHBtQd5FAg&k zC3ZOx-lT!(M$F}JC>Blpy@Ws{ccJ9$jNO?w^5PCv=^eF#cieysl<63-3x>4mW(S>} z{_<-YXxw8ih>Ed(8Pf7WXK!#NpdvI^=FWD` zDbArTX28nHBa^xze?b3}%K@VEePeSXN#~P2v~xD{A{lC=vSgETUVydMn8P+p@If%={Gp==P7@ zrR7w8c#eZ#?;;jEh%Vhk_rTCgBB6+#@Qn!^I0S35iKaZI`xNy!<85*`Qt-a>a~pUc z9gO_5mK*jJ3neT^A?=jJQBSAHV9yK6kA^81uapXKt*U4Pfg0a}}GB-1;|*oxQMKxSG%t@a)uA z$#}YGk~(*k28Kk7HexgdPrbUzsmz>Y&)!7DlySEeh6Lttl(+YLm7S^M`Ee6wBv=}N zhRKl1_;`>`;vc>lfdnBt1Q)$FI#k~nWvj;>RK9!1<}m+mhuiFq_9euSDshPI=%GokP0FUmeum>R|0hR`@^ZdMC-)ox_o<=Ku=KB+ZV^UQ zR=Mp$16_JeW=-4TR6DvLnyC}Vw zq_^CZT2(!iGJE&NOscIe-2!%Q^oI~uILk6XQs35=_%(+@;1H+-^}~;CdmlQQ15Rqt z8=@CRR>U2?VBUH6-u*Zpu5Ze6Q#JlH0RKM#z=NPoBgFTO1FG9=>4cd$$j{}Xz3}yc zAbw{{wrCOFmqN~5#xcBhhDwvVR<=az8XAxzgV3D`J-At^_)@jW?q(ZLsEpT_bPPS` z)IX!IHSQ& zIU8octIkaM;-`Rk{<=ZX^zhFWuyRqlx^?vE8@j$QrOKRSFT+K2ltJ~+2UsnBy!dWF zu3u~sgrV_2$_Mz=J8YJYyrh?-nBU}^QO{CjZkEmxV9hK~fa~?h!J-gn%U!@O`Hn!{>Hy1Bq5 z50hV6cf+c<<+}63_ZJ*pc;fkzG8zHyjrpcxPkz;+qLp>C7j@N+X88$s%S9_jlt6?omjFmRpqs@nC6o5$i&U;qQM&L$xvrt>ZL)Bv=Vo zxc`fR!B{33gXI0c<=8O?AAWZu-o|YxN9zu;a6I# zKMc4d5sI3z51IZL)q#W_6}U(Hb<)G=j3LqLfW9*gl%3-?dp}I58Kw;&WhPs;ctJ%%ct>=n7|` z&@nn*`zrowVq|ksK0Vk7KwV978{V5f73m~kNSu(lei9;72*lo#^~4tV^0olQ$+p8= zxvdsl0+)m4dVbZiZqV^mMS-oX?7J6k_tqQbsnRotqPU1Hmf9ZERxA!swY(}-OP_b?T3$c>aXrz{LMqDXi-*4#DZ#(kaS zZ5aK0TgCWzQ}yq5F922^i-{{y$hHl}cT?Ow`srgLGu!s#PA!g|vWS|EnShYWw68R; z{ykng@()&C%j#H=G9kSzELKp@M%m8EIjbUgs94an<}I|BNE0>G|1Z#p_yA$QbS+{- z%cOa(Dwq|7t^K;Ml$0#uePKuE zQY3M7+czhiT8Q$RPq%wI;x!yNo4pR0XVJCvZ3X~=Q2N?J%hx4FI!DDY_A z0hC`o06ipjgBk39DWx^cWE!q{kyJec|EVmYlc^T zKFDR9xfouBh`N}NenYO>)h;B%SHOJ5MAq7!S^&$m$L ze;C(J2E)53!rbO}`g4t>xJ@i6Vg_1CdsiIV9C2Eq^e6oCrbo0!NeivBmyaN`9o0DJ z1gsnedZ23|k-K%KioW}U5OAegNWFUB0KW%_Z%kh5RmQHD>`Jl8+??oY46{XFE&}& z@}HiGyl7Ok`hJizsE2)HYukdoL0ax}=Sl%G$bYaU;!FuJO>VUukIh{jV}})xzhuz+ zCa?`7aC)y}7hyiyo~gaa(+s~Ok4RvwuML-;Ru#T3NJGuYv=!E`8)VO>`v(}YjPGUI)T9zecZ@+-~XwMpIrQddi@MYpJ}M^j^?bLjkz3j3Ny zT8*HuLI$a@`0zymFj<1my&-&cH#-pn7_cz*hPG1RVx>EeD%lpo>(+x^sNL>ks6FX&-jJ96 z5!CZr$EYN99dx`x-VI31HYr|}uO+MWy*9{D*U^?$z8x$*6sjI*j?I@12=1b7^MbjB z49!g67FDS7=7hQFcs$q;1jW=1Mr zAymCzbob~wn7NiG9t5@!j&xg(01YGDe7RP zTIqR8!ZX#p=2u%DZDq404074c)>dSsGS)qjkaE4?l+HUX?0=lS_3s`>!VIG~W4NJ+ zsh%K`78n~8x!1efRiPM<>c|>Z649-w>K6=%0quKWWBNs8X>pXJ3;fhpoi8?}eyf(@`3n$CvXR5FRg!BE-sND9}g zP5+D&oUetC68B-{8={r0&{PJa1qBQi)wfHCBlBP2do+dS$GcQ*%2JI4CFeu_mM-KH z6U)%zi6iL^qc+Lc=7Y?#*W4=-^HV#c_c3Ly^h@XJy3zqnDbZor{YORu*>NY(vGePg zZT5V%4q#^t4e`)Q4GDf9qO5>2Z^S0XQQ9TOn>)A&FWUL{E&P&jKssG7Ecq>B9rv?v z=$;iFfHJ!Fy8V0Vcrb=UK8AR$d6QJGabF!ffQZU|K2aW`v36PiDfzZg_ZzEVbILx1 z4&xyH#>C){C>LjhMwhYC>bN_@th8h4UcYUcoKq<9`HdVF6zTBk#G_GhD4s-q@%IwRC_#1$9mP+k}^~ydG$M z{`AuwUD}^aRef>6*QS(b^u_Zok!2wlvqniGcmbdyls+>movQ9?bER8wqSAIdr=!a6 zI%tC<9+TrK-?El-WHnE?R>AZkRIoEECCyz#(*Vyd#u6p>9ZrBx=;fTO(n|zGxI?4t z96#!>U!BcAe7wZ`ZSKe>S^JYg%UngBuL4QS zXCMFg*)hU*o>(|86qxv+v!~kV!#;~M;UGtQ zX1EfWHY1xN3Yn{J>W0msrN_QG{zayu%66~3UXQ=DpdSn`oEkj>E5>!=v?n$0x0HbF zpTW2fPG`SK98X2=E`+zYNFq8T8&lh8$F-QCwMv^navwJ~g&L@!GvR zEEG}9%9-x#IO43wuE<`uLF)Ov&9Y?ys@Crd}*SZ_(}g#3TW9zR~g`# zUNGRpJoMtyb8R6--2?ci0xoM?DyCLgHQqwpdp4kOTTJ)Yx2dDo1>NRD{6>TsV(bYG z(3|dlk!1SLKfMVfu5JjmmOorQcQMt#33k|f(pb}lJbjTZx+q|=IZ(3gZJ!ndxp^fW zmQhEUVaL?J6u+j(m?q481T)-laB#F+Ec4et{MQ^4{A89E5lHE8DCMuRJDb(TA`y$| zey@7e4e0@^&9Op>s57BE`sF=*q*VxRy13#w>KH1-+yg!&P@zsIiI=7*5^X=gE(9># zvm2xb%X4M-`7;{q3ceO;>j#sB5|eagpsT61z;^;%sTMT700G%7bFnPK2vKx|eXsdt z!!3s2$c`NrUk5YLrWhNV7_pn?7dseK%Iy0OhbeSmO_i6k?zlD0a0bnvJV2;j1c1UMCEKBOl?_OXe_sYW#569p*H6j755Sdo zqDxEI>MC{xm4pQ*UD^yXIl70KK^mNTSb!9#qu3-7QNG4Aed@C^+PWrk>1Rw+4<(S& zdsa0O@NNkATDRJ$w5QY}1$=E1eiTXot>r$Lvs|7QprFL`w&sheu$6s^-w*H_wCBE# z)T2;F3wBo^`()1^A77yT8@1PS>76z_1H`99P>Y)%3@TAOCA~&Zh4L>~V%=T(=!Z6T z4ubBQUE%vsV`ol;w?5|q@fz|Zj#&4iY7Pz_+Bl37tt-6p&w0K67S*}?x!w*YTrK*JT=)?>x!W*9iWnL)g43`-R! z4ts4h((S{P%aG?Mml*yO_q2frP`H?)rWr@EKJFig#-qH}Gg5W%HTbMlLv}KZ;DOo9 zo&~%@$xJ*~{ZG|3#>K$<$r1;9Id>gOvqq}8#u_v6Kly1nayQ&N)}q{o_ss+6^U6sNI*AqYH-FI6IDhFX$G<|Ncd zN{w8ITI={JR$!cQeEePV9U4*!a^Eu(shJSSS-)W=OV9T$Et`RlZd4YM=qXdPG^IzX zz;K4EXH+X2lkAA?T%4Q4O}Yi@Tl6W_`cuMm0vs&qpVEaV@>RaGefP%HBza7=a-jq@&Zm(A`KeT{h)|X&2D(lQ645$ zES!2k72ge%!(Wq-%C1Ct855+T0jQ+UBnQ@1mU+H{2-f@&dt++)Ct1G9dsEXN#DYH& zw8!(wHb&Y+toP;f1;Dx~DZI4g#ACn7qSFsh90uEAEz|On&H`g|AQm8P&6AEa{dn2J z$ix`dOcQA%Fukq+;*z%a9VZmVvc)v^-bFONdQ=A_IAp2)*lx*R=W#XO-L#0cQ!5&A~9Kp+EY8D3d8Mu2Yi_Z@AkcU;4FtKrz61Z{N zUX}R+{{!XCn8{tWvpBMtMK|=pBD7)>Ut&C~!3X#BIhobbeBXTVxlm1qKA=e}%G+EL z`OH&WHnb*^1)n}*Y(_2&Y%SSZNmCBTNJo3e-k00etqiaP_3oC^v$6G@HK{VY+}U9- z?+M!koj;vgj=&PgPHF(^9Akik%{vtk+!m~QLh*WHY>FWdC%gj;li!>exQ<@a#YtS)15@3}|TRfNI zUnBA`7H3HeA)u&$3<{lPGJG_P)hHOdMh}L+?cUW z&MFZ<^w4s=a0;{bcE}!~A$W3Lhla2h+$CDF>F4^YBQqKkq7i1~suj1*>EX$iOiAuw zPV?QZ*-r1k_rC*NB(c(j)E<3^|NR7a@+d{PJow2#Pc(Bx&^`LbhlFrM^C(r0^z2o&n}IqP7WJfm>*@^CdJt>UM* z@vb_mY`D?-D0UxHLxJ2SlSyF(PH@>NbF=_x<|a;-mxLsI07N@qIMj5m#BG~tFkIf|JW=o)v>*&byg za8bhCDmE+qFW(dw(#m^pxw>R%csKs76U_bo4&e$%d``tPg6bZ*2^3Y5E(ZuwZgti( z#JP}shL^GzLmIedAbu^rXkcSiX8SOz4L|9jJ`4lpZ>yW%>#J0KtFnZS+c9CJ?Bwx~ zDyaAB`DgbFVIP+Mw2a5T^emsd?WE_3(&IBY`XRaWEN^{@8@3Fi-XeW4VXzz^kEi;U zUf!J4|E@2pEojoKqXjk1sOs-hU*RZ9pzTW zBTE=WUd>Q^`{E{Q4i{osUeGNW-gy2hg+_LW(CN1V!;sr>ue0qhmv+cTe8tqC`)8mo zNymkY4fdCNAUak|*#ZESpexy`WgJ(|jXoMC`WMkb56YQoYo%gF??Jr=ZXOq8940wA$QAz!@Bg0F?*7TlWxIC&Y|X$TNDWx zR!rSyN^Vo427kn|w(h=EefB$~`Zmdn3sdKl1hm!rG_BG4Dt-kojfadk8SafO+nlRA zH?Dg^yU#2ozeD*^3cwldq6*N)gx`L?3x@X@*lR3-G`_nR7B($;h4xbCNVwZwkO+R~ z6d5nkJT<1XzrS{3L~Q7X92)5fLU5F%j4SpjDz~K7p)QFp++2I>_O;tMZAK^~GPy`2 z0Z*(vw(O}>{;f~qq5@Qk4T&1}a=fE=LdXdtt9(#1o(gnJ1H4U#VYaE>tb%{Q-gf$=3{f@FBq9m_ zRH+<`=sA;&j0DX_1!Bz`b_0nC+>(P{Z*ca-bW6%mMw*oGmZfPDt*5NNYo5k=#F$4G zFL9_>He!G)VCN^l_GLr3>=LjmiP?C((V~<{P!x*qrasbzKceAqf0FZ3EmWO@ zjzf}yHWNCo@+{|Mqd4!`pJB*(kwnMh`=LARpqr|WMwwcXs`Ww>s#31@dNUrXN? zU%tm;5u`LX95OQDD;TW*-B4rs$=>@Asbxho;q`apGJd!q))qURlS)cd&s*B^ z*sCdL#@8M1WqgS^T^Tq+&x7+lQs`^MyIJi9)9odjkF47IBn1LldC^SsFHVQ6C`eh7 zmZIQwE!d=L@G~$lc$W&jPQ)36;Ex3IaS1@DBs5xkL$@4RqXa>im5 zJG(-4EU*gS9vEho@au7y0frGH$mdn47(K?#&~iBH_^msA4p;`9{6rDbXVP}cL`C## z5GBNXk?{Tq@w1r;oj#N7Yc!zOtBAJZL&k2pH}!a4SkvssXmUwE&dkvEgGJQtSUpi@ z*^9XM<Y%9>%J-Hgk_U)m}ZDEDG4Cjd|Rz|20B zT|#@z0^Vq~0=l88?G>Q%C)=a@$77`)nP$ePSqOgg<~xM_m~_JOe{8#FdCJX($^8C2 zheM}h%eqEv)1x;jqfOtQ@ma&F{!6%1ndNvlBr%!;XJ_(>w3_%to{h($`AP<@ya_cSX}tvcm2xIn9X}h}~;M6b^17Ld-o`cNuhuperFCR9Mz~SS@wxUe$k8MyoXfF;igeIbDaut#p6V_@ z^W>ER8R~BOlm+^;%UTKh(%jbDyDp1zhM&4>HJl{w7^ znmsb#Z_Er1|3B37sDPac;{hgNKf^^UMAuffu7De;3bhA{`zuNFi>Fz}=8{XTpfTu; z#TEu~dzueCGM{f__BF)Gz0x*+o5?%3(?m8z2m?V30T$?KL!aM7`}6u(JW6s=Y}oys zJ`3s@2j#PRe!m4{@p^PyQeWK31Gw`kxV3Kp3EtNc6YH4bU%(i)Bv;pKB>n>u9X6@5 zIDHsWEqODOsb+{iJdqsO7$W9x1ji38wTCf1Kt-J@Z!L3D1H(EwrAC`4l*{PJJw--7DKKzU^=-KP;t zcLb`Zkfwa;3){HP#~paLiOB^A$6r{9(V0fXxX{Ny$uj^m920REUSouDS*Bm)xtev% zr<;r4!7bB`VEQeH5>ML^s{GMkOgevih38TlcxgrmliTh zpDUT5cKBBV;Q+3lMt;uiHAi!MtLb0qoxsQC2Za{5Zo?0@DQb+b75fTZ7~v2lhz_x0 z=@E|c#oR3ka+m1uJc^@X{c-DT`=kR>MVC|B2!CPhQ z9g~B@Jobj&iJFpKt3Be-qI9}uIrYo_5vuzk6=3-ocbQy1?_psLuzMa*kFv{!yjf~dz$1cIngN#KD#iLHavzY4Aa6i42zUoeBUX*J;Q^OITf zrLQjcHFfE69B@l%4EKSsd`>u{;#?eDhOv#TUG@4J#B0M50KC%!#>%i#oxdKJh4evE>e~nG zuYx3VZ$$6Z7E3qr^H^GrhvC`3@ET^Zorh3?_7K1M&WH#&f0Z=cxdMgLBV?Cl3N-Y+ zZT|8D(C+rEzEI_O_|B-c>O4Qnu>VW)F(|nh5$YK?rUzXqgSwXr+V!6MjSI+2DPKS{ z`?tNY#j)E;bMgFA!@+iEbF;ieP#|t91{m6QQbA*}#?TYr^ZAdG2rE&X{T^}w7um2u zhkj`odW2)3oc0 zrztW?FhV{)-q1i7Du|;YUFrRQ>CDDD98NY4SY>bTRuPcBXbL_O(m4xeILmiJYm&JG zAtLYmnt_4G>MqO!LX>%&+7r{Ix5q7+;Sz2jH$!VHEIX?%KdeEryQ+*MzlW=0Jy&ps znSj0Dyu_rbp>y#9@Nd>YZ(Mxv9=_to^*1?}A>f!LnYJSV54}^(I7EKY0dMmROmNO6 z^csbw+YFt17K*Mo3(^;l8#E!IY&G((cnbEAj8I@bB89DnH2>rM1tIn~p3`tfHTjG` zgpOpEY*fYL0~4Ow_O|NK6elbpJu~noQJIVR)wxX9f9<@YmfuNjmWcADVm-8@0(^);NF>W=D6`G za+g_s6T}=7;gQZn6MJgkEml`cR>gN?txW442qdvCE2sX}>>HX$)$n%M^w39Ny!HlV-=pB)G^9s&)^S zz;=o~(5MlV&nPm)(cm+5ME=GqDkPDCbvsGm6>_R_gvbtFgrD1E&_t8`DB8&C)0EF; z`VYLV_RKJexNAIfYJaNt4pPMnD2@rb0TbC*&si^6Pne%ZccMieHcyWEX#e+W>L1M2 zMF>JMiKpA2ZX?(aR&F7SI)epNl}VoY<_aE!kD%ag1iAJa-Wnjue2B1wX4 zSzN;W`+m8sM$VOauE(|3*<}u?r7%|(6z;XbIb>$vYJkfaxB=X3>k?^Ea(X^gKA$m1 z6W0Mn(*K*5T_t!H%eMnDKyg7dv5ZuU^%-b?34quyZ2XSuf*tK8z|p;=;!GoM5PbGL z4%WS`LLRd8QKg3J3!QlcPA7V{J&|$-ygXYrO?oOUG@n#w9`}C;$kX@PpS_Izl=!+3 z1nH9ey?V)YK!+6^lss6C2fL-L<<*)!}Qwx8M1MyN!+Bh=PjI(9=PrQQ+?TsWTI_F;$==d^d9BoQ< za1DpH7MD?C80B!3-)?+1`FxSuyvAWY_n&m4#kPCmB~n&rWEQl}tW<@z4G z*CazCUwrc*aZqt?8fE+8#XRS=rLQ~tXf}zwD{MS5mxAm0H2srvc`*}c?kBdzpfROG zqd>u81f zjVINR%YgFYv0ctF9BZSPa@g9N|1Y7PrNE000juV?>w$@lBIuoVyfVykd6_zkr?~>G zU7r+nW6b^T?KWY{Bfx>1EX$PrLdqpc8-w2+`s3O}lxsSxunIA%Rn8@wrrrNapf5gw zDV*CLhlt=oPw)h}RTWt-1=q(S;Wkk*xS_$RyeNAl56&9g(HK0ohm(EM0)5= zWK!V=el{sA{a>-NzV>UYM_}sFd4it~#c2&S-dH12roWBB;&~z=TzGN>FyHV%H~fIF zsmD8v=p|Woqk8+zrZl~`;aEF4H{>;kE7suxQyWAP%wx@DlkQKEf^ zJj$%HAQhtH<#%+lRTk0Pm{zQ;;}F5MJ^swXB7hfTPwB3jujv`*i*kEx4VIH+vL(b_ z@ru2r{m&USGkTn{rH~mfrN6Wd8tyAp_&VyBL6|=4Y%n&0zTmA4IVU?A!oPSXYaBLR z(lSB1io?uQz8ogUy0(1Uzpek>l{OODLVRer}@KVE>`qSS8eDnLs*>p)Eo4%qV=c`km**I zVh<4M5ZyS}x-)=VZcUhczQ3p>cz}oc3=e4W1xH0@vGz|i=ZhGs#aHI?+Rl*iucWD& zL46iM;e!uLC#w4h*#zE43F=t26k!Ph*q~liI+g{U^A|jaE_LfjnTDT+C-kEjcQGh6 z2)36f6izZ(zH_lh_#zAdCABZDz++D7|7!CyxtZQJ9g`IIDxq%;gOH4>$yi@;#{g2N z^@b`ZpInet`--vtMs}*hG4EU+aeNbiBuE%or`ppJs8av8;0{@NNPPUg2Eqv1V8W^eWh9co0G;4E zgroiGL+}Avg+3Zu{v1#y;zni)ebNE^*4^$3)KVh1uE+!S!dw&QHvUljHD-g+qtQF$ zVXlgy9BUS~lE}AR&U`G;wwW@on4IewYT?+GtS^ls)Ikf9x9b4PAR&3`fS|3(r2E48@|#qGf{HLU*Zxu$7|Gz?!6OJx_{ zz_Vn5JZOdLTx6%_#@B-RY1KVt2zCn|q%GIr36sUx;b0>26ivJD{KG7yndv1uxwT_eFUL*9qiqve8Y=$+gMJ9x zYjUeS9Ndg*$f1`1TQo^e1~9n!_lZFFTj(maH-H%=ep;Jqw6sdG-j^tVVIyfN8UP(1 zh!{adQdg4?%v-g)TB0rAkXc@a1`=^Vi}%Ck{N zk_DIODL!~tb%{_$@8T{$9_35`Xae`-j8nmRdzOU!Y)L(tFkCK{1Oh1B8$KsvvRPGh z9A#17NC0q;) zzJYG4M7ltrZC3=Z;NYq;FgLjOJ^niTo`Mj&ZPE7~=lmeZQ275+Q(JKO5tnxDK0M~= zs5GeViy6Eb^ISGz0({9_wQ@~pN8Cr&N!d<*TYsecbfIr*hPx4wJDOQW8##oKz*tQ+ zPm+4GGKAP!PiUJg@fQ{n7cvAm;8yfakBcLX65ncW`dvo%f^JGlW9Oo3fdhWGBRT>^ z15wz3!U{fR-J~Buyfe$ca{6sj2Wl1Kg{z6dy!@tIfDLzPaQgJ&N+c6N| z3!r`7{6t>6qKP3?KqKywaZFY%<#+53jFQ8$+FNqFV}jLK|efGe3esI$tvZ6{9f%FN6eY zb|6vGy+?6>FLC{~))oFQ!mlVZ2al?o%C>^c!i*sxH>;0q;Z{6#yY?G@Jv^0Ux+TRd z_KGaP5PY#09HN2CV^ zENTF|tsva9(a=}z36Ai?@PF3L2NtB*N080boDVzPIeo5`Z!UV;nLsOoYa;%&500Jc z`+LJJ9BHxu-QmW*eof}L6VKHVab#-edLTC~EF({@KVtgV3xMg3pAp<1odZRbzk&JZj>3n2$ay+SGb&PTm8@)fFqp}tLg#r-I^^8?N zj;LsN-zx2Nz^7|f!+z`MnS*!)@H!NPT>L@BS5T0KJFYcoq|38&kJJ~W?&z`GTw18x zLh-jS=Yb}u%4Kbo$6u4Xyr|YgS3V2p>>(;g4Ngj;a6V5(yA%@SOLhl2T7d~EGdgV~ z>mR4GMMlVT{)BN;kSN78+G|+y44#8d2RKf@m3i$#C5l5WAbN7?(QrIIA4!tHwv*#g z3l!yG^X|pROZ{u=X)<|^T5;pN2*5=fp%4`HJQ%wBw2v&T9rolS)6t+T;VD-%qkoV8 z-KgvUvK$e6lPHgb&vzWo(guEBC8<0#YEZHq=!`292q+1LgNb+~1E6a?c+1JNTNj6h zw}JYR5zdeNg%x0G``#Jh`nz%+e1(d!2NX&Hk0-BHaefpMTPZ4q!|^*LQX>9BrJF51hfoM zF4az0-=j8!or%K`y%Xp$s?bgr%wF%{AvP4s4lo%l!_I^7o7KrjQIPG=k1h9JE@v#^ zaPeq{GoKGCC)Yw>xJ_j03qH%%c@v-(*gR}gTQsUKa-SYh5Vj!TU!0p_S{`0B@M@n*fLPOB zLXKMIlSw}C`l7_gAxvX9WvJSaq1Uba&*}{+6)+Z&n+h%-o==BRw1}`uX=>991%ZB4 zXUXimQoyQdiq^bE$XPEbo5JG1wUij?FgTcPM+L=ug_9~!@7kEEP{iO?lyP@B3HhoU z^G`3_Vrn!*;AH=^F=}Zc+CVM4XuCW~jL>t_#@LHqku4_%s;weM`0EEeqWesouOha3 z-AUybIh0Z(@#D>!p=C&EAAVO5&b4l&kit*-pXC7djv*i5inh!g$2V%*JUjbWV}fL; zTP4s*=<5s08^L>pa3rmF=+fq@Q&w2nu=M>861Z=d`oF0K+g`v6t;Lay>)^;6pf{`dCh9&uK8-56SF&v1X`4~fzc4ZKW}8CZUg2>4g-jq*;!-tOmr;AGRoVuJp-Sr% z^A8+3(MfmbE))4fIbGVT4*1uVF38buL*FnJ>!PzIfnE3Og`HZRKBk_*ihbThOV^Ui zM=&rU+sPa7dxC978INvv6qnQARC=a9SGAyFCZ^nk9{`u@h%))#rKX$PT!b9CsKX!&T_%a}flAc`}**e#QH;P`6b-ZmkfN#hK^1s>nDfB>;> zx~;k%)l9Kq%0g}i&;_BZ#S5|w&;+G6O)xx6nBBON$G8N-a_%qa|JSRQHii3WyY^7{ zDRA%+m+urh4)M^OJ#%j7cX{y8{e<-vsD}8itI0e=ifdat%h@0t{Q?vbD1qmjtX8mO z%jNs>QRsOmX4A=?7HkK3F_*UNX#y(4sOj;ngRth3t^AVQ>E=F)_bBgiA>{T(e^@~I zmr#G%=|G#d-I4>(BGfh`P0c{d@Cr4({~z8qQc%IUohM+RSWt;{{I9MQ);nThFp2x7 z=({NR-z}433qf^4Vb$iSTS(_IB=x~Xj#sW@IF(2>+AFkPS_DW;&tBA(rpyhkkVKyf zgBQbxhFQeW2OQ9IPlawOh1*0li1a(bsq%Bsq8%!G_$}qRhc$gkITepBd!^fJd(*cf zt({y7WtdoxOfHA<v;LX|wYQ>Mg6|Tzd5l`saxWjg}SdL9Yehp5wMKH}s;{RcLlhx|BD6 zHW5;wjY2wx;j+x>1A@8|UeXZZR=y1XEgmptcD(;KG#9Q^f zF(Gf9ve=vyBI?hhi>*gQ)1;M!+k)*PB$WiutNcsrRRpa8xF^MfC5}CBJJ^wx%>T`I z88qUv@nrYDz`JsiLw?VGvr1bc1_l~9){dT@yem6l?v9@FiyyhamPnO)2BW2%EZ(~h4hEmJp~~5&HRXU-&HdMTs&FNwD9=WC%01i($ZWDRe3_2j}9Kex;^j;5oL=p zlIEa8y&j}}i8M*9gW!*I-Xs&NMuDICM%pHgh!XlBQ+B^5vhZ$4{fq$@-(v>CVt__sbivI|1O=RhYGCC> zKNfagg(oI|mp159n4_s`ToBy)QhBW2dgibTbuk=*= zts_ueJ2km_6^VTj@7SWRGHcVsA|Q!-Y+!R{I`@8dW{BRXr4i+c_hZre|K7NtWjXA` zZ2Jy_`+_k>DHCG?CQnt`s2qD#OUU(`W@Ul|9N~?|uy!;E%BY2xS(xM{{5#`EJ;<3U zItz#1nuQs0rxEIO?gm5!H8Cr2k>RAj^&Y5OrIX5MCZ2XZiQ|8B{6;iNC@p<7^;F5C z91DG@aIQVrXbN#nW9~)yjmnV3E~#w6RofjtHFZW@$GRsNn~T12Yijil-@Z_unNa|p zzV^`}E7QRyhv$ywDqVznHRY;d;8@ul>rzf(7IguVoC~)$yQ7Zk zV~nS_3`xbL(KQ|?O?j;|n(uvI&+Np6&{57p6g_iG!Q53SZeLZCVexctr_Mwv1d1&} zS5ia+T%*d+=;Tt!ceGGoP$5WH${vwtq3d+*8AW>^G-n^C(j|~RY_xoLh}s*s>4DpW zte&_%&N&_342<~Ib6+8ZxPgd#<)cq@1cv*)p=MyvBdwokzyv&aci28>B_M9oU1yHM*+tgpsy06dJ6TfJMKt) zgPjwOqVEgEx7M}bVCgZ4hE$=)KO?SAaYyB}py&M?hIqw!bh zwu|RpL||tOHhA8)ZOS*^^X9uy0n`39(~&OXDU^2L_dU=o)!0?au&|l2QxU2f2D!23 zDP1CWZ!C@+0}gIjbllq2Qc@F#rb(O12AGEv0kK+l&=@TXZun>ItU^9 zN1vVVVMFeQ403eD(AwCyD{&NtL1GDxD;mv7etT5r%o&Ao#YH1*B~+Dm2`3ma`$k~V z1A;-_r=2o1lH^v~A<(-+7=(i^&vB#P9vrqsj&9B(Jud~7hC7#nSMjRd=#ZhFbfFsc z>H1Hcsb6IS7xZHuAmdNt>+JP91{5MabKV|SG=THeXx zYMQ(;Dgsb)Ji`YqPe;!O2A3-1@=(?Opg#qR1;e{%-oKg?uBPB-W0Jga2OwWC@W=(s z!~(@}e*irT?0I|{Uw?k8qU-UM(m+`_B0SI@a zb$$Vr%=k_y`vBp~rpKmT*UgSYvUfnO#?4Y5A7SM2g)zUlN>)|XjTe^Xseo0MD0#p# z#nco~U*?&W&)N6_2vC*3qO&urY?ripb!AxhbX0+NqIo^M>+H&>Q0n{W3^Ynqa4#7T?&d9C1bM6hgZ0ljE-X?ns(Wb5j;bKflDNgI# zW)ll10>fc%nMX>Y987G#`Pgq~G`{&JB zgNXtMTJw}_4fLV!PGSy-a+h4U`=L`GnObt8oH*Ref?z|2b4)U6F6OY?L&bs`RnaWb zr~RiA|7W|UetN8Jm*K2=Aj*0nv@-Z$a|PnJLhx&d&2>63oV+bojk@rt!nslKBN;JiKK)RPxmBJB$`nDUL6>_MzO_9Ow zGXq4R0>p+|cl)gXWDCvv1{gf|w>3xhkpw@9fA@{;)CvQmG&nm7NQSA)ab+GpJorCB z-0(X2$g<4NRn@L|+RpUt!|?4u%x$|=_soY643F6<2eu9t-^oA+RKEFSVcAilVx3P` zSMqk_ZDB~vJdUA7Hzi~B$Igsvg(dj)DIHd1+k@3pj5SV;pGX;~Hi zjKl?nO1{1d)EQ{^8#If00P8$V=ZXV0da1fwnlu%Cv~8ODMqjGc2mdTT{0dkP^!I}C zN(Emx&KvE+Ac#2>+K;A-T&y2dMGVog`p`t-K>=&6wQrDgVJn#Nd{jzU21JkKhd9tf ztRzvk-lq}X<3$Pl6de((m@sm4if5D!g>INKvBZkRaZL_}{y+S;-|)wclXe$G0T3HC zZynXn<^+%_+*metEwgzC4F$~VD0`~=-F$xc)Wl>W9~_&vA2|N3GQ}DET!g&=#tOZT zpI?iJRQ0%Wpx`$kZe)Cj!_N}BRyBnemoy$=X|QDC*b0NIRBbLvax^~{fa^2^ZKY$08rtSj?vP3olX0;o&Ox)^R$USS z!MK4QY^)8plW@;}mK0YI7WP(cWY2U03j|fxzTtr59BQ$}VHF9{se0ZKX%p2tEs?s* z(ydE+l&lf)Da*gPFf&?b+qtziY|KV#)lH!(Eg;ob=!*snH8(qZJcl&6*ESn*^32(M zzXesBP;3x`ucrR_1+O_hh>z!(ma{cN2WY-ISxku19Y7*C^=2Ybga@B!@U%(SLCzeV z!9kQj7#oOQ)l^o1U+(6Z&?6K5Nk9nhe9;yIIrIttvb6}6BuX32LqyBCAAdZs$DV*L z3(q->t10(*^8<5cp@6Di34LtLmS?9I+Gd(oGC>RNYmUc4Vb;8Ais6T&4#im0)X-st ze-QMy-EbQLZt#=;$nzNpfZ=v?5QFZH*kdTeEIE&VxG;*;SO?6A5IO^c;H;~p`fKQ? z>0UypJi{lP0S!VnTYKdpF3X_ZsQ00BDrW?^a+LGGyd^V6`DYmPge*c|-xOGj<6K&j z^d1Wae00cLwc|{TQQ?obsIs}yPOizrAunVV9v9=UUytO=vdX*nx-yu?s86rAunw$t zV>nkyR^^Gt@^ivGHGjUKW&9ljix&g2&##|)*y30jZYKOS=~>V17}r>SiYoO}{xh#=PT-tZCRa!q{haG4@;6*lvn$Ch{pw(9qSK8sQtX zyEMpwC3C;rG5aPk)sM)&8gCi!inl`D;AQJ0x3e=!hjP9sLn6dBhsGdQX%&K#0IPd- zENpg$1}N}DQFB8XD?e6DKoYlLTv`#~ktRfem`+@Eoif=@=@%Q#OZAVIWn`6Z`<1xS za%(`-YpZ8~xk@KTpJ0Djq{YJo35|zqmeie=exrCl3Jn8G@G=#Y1G}~M(1U*{E@jiT z;cXV460z#yi-6R@+)f@_>L@Melkrkg_0mr(2omnrn~V`fWXbU(lka98;CUcY8tn0p zoWdb4puu=F1pWLJ^IiVFG3DsmkpN_{mPzcW zt@1TPl~PGPR}w{Dm4En;;=(-0jYPV#Pkrbiy5LnOYU8=<5T4MBcSkire?(I|!&My@ z&Dc<>Xd^py@j8gHEIpDd9QOxcOEI=J90W$|M;N$m8(x9hB4XC!pBFn(lLK|6P&vJ6 zEHjV)2|^vE*Yo<%L~iQu>pY-6m6o9sz061bX$8=om&iW#!gNwY7FyHj9y9`omolLR zEAyX9^Tq#ldu2l~twpChr+)x%5mvr74aMt844sXZTLqH)!WfP?FuFaI``N5L z^{1F93m4qz?PW%~NtaQ@`(0@)Ss^`L=Yr^NQ0gZ5)PTZZ?ImWr4{gPQE3cyaP>eud z2;8*;sB{hLP~|W@3zW;@kVm{z|jJ{3nrfUn7W(%NJ8UbyA z*r>nC@gBk+@S&&&r0uUBlm%(%&t>*Cth0Ho23)B@&_2ZuAi?Nix|1 z-lJ!1a>LYY8e?o^teuyVkV~<~^Dw5+yOv-&wJ6A*f)7x29J{C2w8u;7&ZtdN@nH1z zjAoifdGif7m7b#_%i=X=w(2m#BiV^?+o$hgz#pz&6tb?TNJAb`JX}B!p(!#!oU6T@ zoLpu-Pcf>F(d9W+c|gF?RlO1%e4>m@7JT3bg+?$SGTy~j#rscsG8?)$&>hyQdLAHB zTIkfp<9wDnPcW{>glBC!x)XwXY9RLCKGi!%#Hm+dmKN-u zHnzV)92@i)k8_YKKk&r##MMV}?{m48hnYhnpf_~n?MUx*-g@gdBZh2i$#SmM9`yU$ zs(e=UEth{-a|F%kefZ{HXCYIn+@rRI6ckaFHx^}?A`t%icI{Lk%R_aX(pAA74tU}5 ziyI{UWAdfbd(XuMR>$9Y8s|>@pky%V%^-P$WpQVwS6K}Uw@8HaO7wM@IrLb@>VZe0 z+e$Cg_lKcqr8w6v(mjFA3`e=pAdHvrUwIE$I(N7f6Bx1+5~~EG3}Hdw1#kzsDU>ZU zjrgtoXIHDVDk>-4;njG#)cHVcam@J4s&_=CY(l=f>F!0Ftb_yh5Cx8(O>g{S7PTR9EIZN!o#rtUi z)jcFC#(CrnedyRr3ZswQAfJ-E5b<;@rjdRn(&CDD1j7Z(MLit;OaEeM8DZBU(?7)4LjVY+l}~C(&o)(Y>=d1_%gm*{oJqbMINt@`hTRq)TR%K%-n%314&_~1cd zR;50i`;m{9>0NoK~V^b2fbRV-K|eyV5 zgl|EY@-?&_kg<<|VODYZE4C57E#Okqz#ap}84aA79y;JtEgcN>h`E4`6<9zS8_0F= zzF!z)Od|8_;d|zONN*&GVPyieGkH6 z3nv1yun>|ml+iWeW}|872=bThggu`ecPSmKGyvCzhl;%k700x5^o!js0)iSf{A5DX zTk_d#cB0V&Pu)~PZvyZFHcubFF4=bZb8}4FeV@;JxoS5w#zgK4x+Ih!$X}JDlSev1 zUBB7U{@z-XMT&W_@Y9r({@N^C7)i)r5}k3ymMVGb*p)0$0p0^T!wf_0A~6~k z5xOZOry{dh1_~wtK#aL&`)CkmL|L$~7YRJuo1hBZLjoY!MBKkxR_0MW)6b!%Sw|-O z&ELwz4l#9t$RmREbWx6=D}Nk9Kziz99bTDjPr)9dL3zVZ_PPM?BFEBfu;Bdy%=C9m z=ZiHmqS&9Mnw1Hzi0!qqt`Moy{vmW}T`FhesLKS)(2W9PIB{CR2R_0LJ+Mz)`G~=! zlW6AoCo*!8Gmc6#S*embdjY5MtqxA$+@+fV$3aXAeDJ2y%jrW80lzqy)FxGf_VY>sjJ1L!ag2PUUTIk;_`)0O=i-l~KZ({eVBs z`6A&urmJx676WF_=r!=4-;#Cx=?z5BiA%R%8t<1;MpE$@ zBBtQpXrp#CU)`1it$_NP!$)Vm>=ftp(lS6J@Hn2jxo12}`ymeoBI?3C7(CWGfJA}Q zVnLW1zuO@Uc>`u+OH~6!o`WWy@j0KGHB@H6nKSzwiXgoR@n=xq?1?YA?+H6y{)aOZ zEDzo!0ut-ixF*)$+syT9pRb+2^Ng`U{8Ii;m(QEJ6y67L<}AUBYUZ<4lphLaw@PdH z`pD5M;F_YZ5s?8r>2nJj_kA;^;J-VwghnP@TfcqY#4+bP16@&c{ zi#c%gGi5AZQ;wNL{R3qDZ8!85g6kW`#{FiG1qUREE5Rs?t~#5b2ltePy3`mbk5DXu z6)Gqa79c%J?YEUgmD$)8<=nE2inILFcf8ehMjH6YAphsuvOGQY@&yPSjT7RaDfU0E z1il97A6-1}JE<0rik9aVkZ zcRxz56Wq2SS-Cd>TcC$yR%iI28>b3tp7W!H0Wa$+YDG-b3!S;RHq{?q{3|e1^O5Uo z-C4fFWscxC^hIAtXcz+$nr4)y`&9>F&-Dt8oYwU3YQBsYch3u)*sDFA`88NkXs;9! z#&A~3wp@qUB~oD2cLF?uvJbbgU<_}dkP01V>fdi$7JVIG5DpY3QVFyDPVEu=f;6kQ z(i_ALLaX)SHVGcM4(9D+8@4}qco+CbyQ{tSeb4T_=U$F&8?9~l<)pG}OPA!Z$c*@D z>eDxuU5&m_sg@I^J#6>Hf4OP^m<&{=Ce0hv?i8|Mv59_J;B+#ur66b9DH+pGSXyR3 z`~kB?J#9%;L~8F#ZVvy&&`}ag7QD1dd7Kx7zfD$&@oCoLtCO4+6oysHVjPZp{*Ib_ zTs#;C9dNSuBEUjnd+HDsjKvJd39*!v>L7kt)EvzyG^rSOJI+brVl@hYs4WZJg9KUU zS!&f=6ycjhoA9QlC)oMyk|*y4)D%)2R`}SD)cJ(3)Y9geU)NasxT^^;hna^Bho7DA z1jp{74>bhV_rwbV*H?7Jx=5fXcoc8ncr@h_fFJB#m!6D3ATC!v0fi?= zaYL+o_SuDg?97}C9Rlt_ug+7PR0@TTQZYm2vmK0cp}%zkcSj}9(^Kr!LZ+1qtfg}W zd4YJ2gt&a6y>XA!IaEl}UQ*#Oqy^hU4c^QHfB8Es{Nue;<&AU=J7&L>?pFE+Rq9O) zBS)AYgkpc@*`bvl+}k~NCj5?Hoc%EYtTv|So->ctAP5K0&31}=?}eBYiiQq8vh~XARr~#+(odZzR!50O zS4~?^FkG-A?tvLEN2LgDG<_*4ekOl|?6#P0DArOnFUyyC>xwk%=+te)DQ`l6)@ux;CCXxOy3=x$lv^HR3yK{ z#=H*tD&n!^b`sor5RCXfZBYy#;p)NDHxB4%Q9SJ3bXtJiqG<9hP~(`KN)?N8O2M-R z9$rez#vbM{S==B+&Q&A=L_X0Pl-xK981K(YNMi$Q5&?ncbZ);K#iMeZ#cY+>D!(j< z+$Fv8n(6*Z#T?uwH@+}1+UoW<*BV^5K!*(P%#PA z5)vv||dla$6GOO>8ZaZRc5mo~hZk7l;Tb~!r8CfP;a zo#-nr@p#qwnKn+$4+2gRr*=9*#joP8FE$I=Hib}t{-yKXt_dOk?U*RG^gRkA9au4% z7{vUN65c=}QRJFjFF2+pTPC3G=_$F2Ji>)Z6497Y3lt5je3kH96CuL?0Yi)?g?tgv6c6y{*GcKee2WRh0MqWm$j;2 zOJ?<8VG0N($BSgpw3j4I$6B%#_E^>L+AGZi;5s78oEEa^QqV zg#-|R7vfKt2x1`t@_1#}#2yGJ=^a+)9uc^P&~2DhmtMiKEqpo?h{|yEIg@FE_|51* zMj&}y3p>!7hfEhnItQs~AB8ma>1EVUG|iX>@)7cF2PA7lSUYe~@(rrD$D_)f{igD1 zOdy!79Lv?l(gkP4Ep*0-uWY4J>Rv#eN=c4dSU)*M<*A;e+LN^FX%2ZQg3Lx-TYjT zgDh`*Tf=#S3sQ+*(D3Hr;1#UvdNA0-Jl>9fmdGNNGy=yy98KZjn#|LhyaQzg$P~|LD)r^ zBO)|V3OLU-<^@x2(0r)OM;VM`m#(qHcUwM>RcGftYA;@jU+~Awjq-~IQ?BF`{gWVz zJcNS5)YvR|$_7w^WywhJ=%PFO8>f(Wn~9kO@V(*)WbO_fu$xfi;(sh#+zIf3P;EH3 zulh;p8T8iDIRrD$8o;C};S;-2^1;Jh!L3T4+7f4!Xfx|WqS5t!Q=XIdLjvq8mM*~Z$Xc;m9S9R)w^ZjPMa|1#U_ZXUtN zNiwR1E4zAKK+5(lu++Umd+Ij5g^;Sj>qn+-LQr~R8JiYxGpshokPra~+r2>A+2dWB z5uT5U1)V8QQ24UASZcFRGf%5)avIwU5RNgq^ITQZ&#^WtV%ZsGZKZ-2yovEi)v8#X zlz*fmN}bA7f&^TC&a2fcus!Z>0aZdPiy1~x+p^ad6Fat3PBSuWM0aO-tO6jrz(=Eg za6$mVyhkm<$Veu>`Vwvf_+T<8B-B3*JzF&BSQqI(`;K@=3Fb3)!e79)H z*N9v;(}oQBF!O;Iwyqj*S;`4R46;dzpCg?T>sl&XiB?(08xh6wS4~>jSYKejRX`iQ z^7ol6`yPrUh{5BdwcX75yZ!lJk&$ozai(-2y)Uor06&iG?agfZYp(#~i_^f196{>70#sf^ z2|iPDzs=+iT}IZIw6_XpxT zxI)4fFR@#n#Jmx-6FvXB?(d5{{6sxYpq$lu&t{U8AF8LcsGtPcvQ zETpPF3F3+8=8Qr~RR)(_uERdeTmzAxxkh5t8E8!-jKt-(!V0lyBbYEhCwOUJ$c)@$ z`JA%3y6ureL7q7T713xU#nn9(QIcv_Uyj(JBKQ=J0f+HoS5{iI_AtNX9jhN%VS&bK z(!!nhtX>_S+VLE{yef>{)HYsJ+mw%Gb$0W2$L+@nLatunJa^yXN}b`Bvgrw(nHCk1 zBEu2OF@TC6&UnXzy|0cg*J~T|zdWSd-3vJI=-Nn|fmdo_-3-|0@#}HLAj=2^w_>n+ z_H5D~(%%9RLMp@-1r9D=te+64?t)C>DeheZ=ZNTaZ{wklW{J=PHe!(INHSfh)AiJ7 z@A`?9hB9f}7TvI;m>v5RZNgPKg&v^c$+f#yCO5@i*P`1=0KO8icpJ>+$UeYC723f&O-TiyKE7s(mh5lxQ#2kHmCzz+x}*ear;CY{qXj1 z2}M|fnPqv@L)ra)tk9aHwWR~VTcItkJJ?I!0MerE=L+-puY`7ji3K9o^a{KiWc}*i zoOrTT3BQ-#)@Zzu_!Xtrw~-09Uj(fP;H>eDxU6J++`+L+w-GiNkuengZm*u#YYiKQ zb`_E?d_4PY{{%nya`U$cU0Nxf|JCpayc(GUktAkkWhf?F&bn|x@Q{UxRu1K3_%7BUQR#~&Be0CDWe}$!HX$~gA4bGgJAp>0xv!7)0ywa31vbdF zA_}j#Yb{Cu_aRT?`ci(THnl3|JKKv`6&A%dAPeIBSN%_Z$AxTE5f22TpekMEK04GN z!!X}eb`)E}IQ%hn3%1uDNOXG_AU$NrnD=VCNPsZlPgBszj+sH!9A-pzsrOSLUa<|* z$i@u891Kh}r3{EQW}sSNn;8hFd^LorU#|S7lP%M*C;bm(?=*kvX(A~ zXheP7&R0r^BDEa#DTm-j)gN+%s9$tJN6!DNNM-ysVpP3*p$b@iob09P;im9gp za0#GAf!@vP9Mq#jFYOd|eV8NsFcO&5a6&!h!N3cd|3-daKDIzXk} zfZLQW?3oA#ZhoiOFU}~+J85e}cboBN0l|3v#S>O#Tz0i+$krT%|r8R)9aj5t-{zvDvMFkfzRlCl*>)K0N14wZT} zolqXMtF^?Qf13V0n98+iej!N;OzBjSp<#ao(`JHRIk*Avl4qBVLFG)x@xHMdi|Nav zf{LqrPO4HA`<~|PtS;#AnJ+cfQ69mm6Td!)nuMYhV^^F#6yg1koZB;Ge&Z}$E=uhn zdLHWZR70<=aQaZD{EVbRN?P7j;yzLNA-g7Q@~Q}Co!(N`NMyQH^&S8SPQ0{Cm#+z5 zQSLT^Ni>l#WX~CV=ZMxp)D8CJR_?U}Y2*w?A&kkx5mBl)u6LboG5Y@3O<-cezh0^b5nLiqjcEgA1r{Z1 z*?HFI+)`fk+)Xlq2Wc==^sNu5CSdo!+&#UJ?QDQ94@74y$+Pzj3E>eN36f06Zu+l? zE@kWGrz#@(@J}>~*9gi1Mu-GrSfc5i*&FCt(iN1sad16oV2DbOmft{r~PKMHUc07Y7jUhe&z9eGwT>N(bS4m^#n;8{&NO;%!y^eYb)KlNmdGXy(H*cR#c0A zs1W_Ns7GODb;G{bU|LAX_`<(S8p`6lg`jz9XnU^bVDbz{?;$3=Lm(6$SNTTJkMujY zKr&SLpHRS6Gm|{-2(jVCWU-@c-8w z!nf!jNoZcZ=#R;AjY}r%P|IefNGnI)@bRxUs@grRYPh+%SJ~OMOw9Nno_x-{(~XQa zwcg}N1IeE~HkM5(wF9?BRY9zbp`uwiSc%(8a6!`a7DW^%| zFREX8859?Wc(+u2WT}*O>MmNu6+}twJ&HlFRzH`v?UjW*o@vP}|BG30;D;sQgw>~k zCl@ulga5Ayfys!O%)cvk3M5usXYYCK11%QmuQM=TZ$c3dBzMK;yACje`Kx?c&{z0H zAjA;J?5=Sd64{CPwTm|A7!c#-URNLAKjF5ub$;2-fOL9F@#pDyq#mQB=@>Q8%O#MV zei3eZ5q@S`KkFPqPXf38M%TdON5W}ewZSE|)L~PDh+Z_pdjS)x4~)dE{POFdGSGUc zk&px8;yTrfN0MFQ>1tm;S46oOS$YsM;5b|iwo@TO%&?uiJGF2NffOy_kc=9UMf^J392iOBq~(Y7Ru84Ejs=ffu>pB zgLFq{G)1i11c0)~Pb*!5$@GAsqcLSEO;KV{rb&^95Lhp7B^Nr7vp=wDSMo@z`vETM zlw|aDx}340Gc_GHEAB6S^025h4|{iNg+tcjGodv--yy_HAp4LQ1SK5I;dU4nH`n|J zPG+mtP5YC>tBFEztF)MdeRhT`gp{J^wMPv*fZwfsQuq5j;P)0dgJ{837YnITIzy=f zK#YXt@=0U_K?jVHm!rV0i!c~JJPoqb_tg-zc@fFIh5T;jJ+z?@g)GRqEdP4D-ES#9 zo$zoh=ly-Ajs@stORyCoV((P>+8u7Tk-1ln2Okyn!!DRqIawLh97LjXNz$?|%UWVP za747hzX*tptRAUVsVH0!**dlLXV4~B$O#*<;2G8LkkMa%CNTFnK2#~;ysEC4T16IN z3tlh8OTO@P*Sxe*i8I=9P%#vC{cv`BtP~8I3%Rfm|4-4^4B<}rJ~(y{GMv_AtpG1- z==Y3Auc(GqOMIWcF-bG>hDzsMBZc*Q?|LdJfgnNm!8a+Jqc#`QdDj(g;`)H|!^r6050&Z>>A<)KV$#wicqXOi`JjU0SM)UDZm-(@4Lsef1ShQocH z;an!-@KjQ?*8Lt+T@x_l_!HSlmz%OTE_#cC{sj^Ryq=GTtDCZHF9&(0Tu{dpPa^bfV}ld}w$>XfWjOejbJgyDmh zz|=o-!jQ%6S>*P-y#FW1+yK;@9)V|<+cR)tlywT&b~FyYt-q5aIx8x?V0_~^9sK)= z$@hqR!9B0VigZ0{hPeCC$=TTy9qu=Z@b38=Eu`*T5}COo^JMm#5=>%`VYGe?H-2n& zx#iFBQ^yW;#NYd>lRWLV@S0v+?xA4fX8kX1*mXYYG3-xW zi=!LzsO*@rHR*FGr6B);|K2jTwD${&6%1&BW~~ab7_e|3?#dp_e|wyG5#Z?R4?z%cYvjLYdaGgbivak zoJ2vbOqV`+Wd#=u(kDI@0Qpqtda7buWm)*T{siLQbXP z9Qh=aQI!2i+#7{kW%eu1!7&O*!?@CWd~-0GMY+g0V>(7I)bPGK4FSezpFlo&O$xdk z2QIgt3v3VF!%=C8uRC~%Vb)`yXL^(*%lEkF;_M0+ngnwTCY?L`s{a*3Vf+F<=15F~ z@8XgcVB^%O>7fxW**=D_1+BlY%ur!=`C?+~6TB|@I_i~}3Uh?C<9yG9AoH2~E zpL8+GKv^Tq&o24!Aju<4A-F(Q}b+wshNe& z>K!t*7k<0yYkK2F@J@NYPh)jCBZ>Q6A{*xd-G7vtVS}?Plxt4RQ*B$9^-lnolYzes z7JteT6b-i=L)QG5!34P@k8Lv02`;tIf8P{=>wXm!sUpfC)w{eNoz&nh?1NRktfgRU zC zuD&OBPt1+uY~ceRU!`c0nayAp@;Yqu&g^MxFO$!+f}RWe^HE0U^{~G(&TqYOP8xeN zIj??IX6Nj2nu%TbMVoIj@-3FpWS(OtdYnR$or?rlFAF^R)F58!r^v`6@H*hUG2?dY z*=*cK!5-vMpo3>LVBRE{sGn-VUIEJGg_;@c`7 zp@Xu=Q4$uYi&{~$f}O#`*OeOZ6n@KK*<)1#jPJ**;2D{}{#CK3s`) zPv?}goem|TvgQ80-{8o|*?k0$nj|n7MLue$ivGw1Tz78k(;1y-*Xu;A9rTSz%&;2B z;_h10;F{0sS`!&L13eEV6GI(Sr0@Kc7`jrNeU|cS0s!r?eUS$M0Knird>AHkK-TUl z&jB$S_>V-&gey0`m22{cU@zrz>=||Je{I#*7U?BV*%rHq_zNN!t!%dm&=n@hXEP??lIp<~i@2-~3$>_JfONs$mz2gteo=or6ZiMK8OLv1O` zV^rTvyYCaB->a}=Y3N^h9rI9ZL`|nLqMe^D2O#Rwkr8iJMhbUI6+haWloF_o1Ba%1 z-OicDFu9KPn^@3FfB1~wQ3bqRLw=QOr?C!@+9)*=vF{9+TVyOHiFdaaP@76I$E0b> z8CoeV-kc^Ts?hq(^Y&7ckg+qzGdy{u>5e;B5+bF!cre(=Z6#6C2t*JocMVUf;Z-t` z)%=!*N1D97#oD#$ni4TL_YWTS1@C2*qQ=$3&UV!sc|ygDCGgoSbE@-I5B_QvA^=bUb7}~ z>i(O5(w0||g1-i(??mIyjYa-}HPe`nO_!xLdV`(MD+UMmWgde!wTe^z{y=d?cCv{t z%d53p{#E6Jcf#s{*uIi)!)|P7u>l0+jY8X`FSdCo3TfQ6^#z%9`oKG5_) z>1{XZV`RhqF3mn(T^!>Ok7y34Pixc=^Ysqae2{c7yB=HOv>@QW3YFr`R;`d?#i`S8 z@-a>d(-Y!Sz{$4E(HHSwInU>8eN%T_-B^7}CmUz5M~}qWiRv!B8Z1K@K7PiXCeRi6 zL!^o`(w6t8k^nDejqe;$aBL+Yp&8hT4@(XP7zUTroB)H9Nr{z_>Xz}e$B0*|KorJ( zAn84VkBa6QHI~X}-V9IC-DST;MyDu?+`_5M-knfAun3vOvFo~YiGqUF!onC>YT8h% zQr_X}neAAx*;|-vs`i!;G{DWi9*$)RKB9+RBVGyqGUh-D`q}4?y`ooLpvoJk=>c?= z=hs^-WqDxGkOmvX6A+70+C?+C0Xz`XZGLg?o)DfGUkI-w%jdj4A89HdsJO#+iD-(B zv2ZPpP=cF(_$nS6Y>b6xj@1p3=^hhIwi8)>=0{c_l&?z0I+cs|_<_UC>1IEHA6Iw4 zpt#>Za@UA^1EWBZK+)jWsJxz`V_xhBBM@Lmd(DzDb-`(XcD1?V#Nr8s>H!o&VL`_^ zJQ=xoVLb&FbfK`ludm6-XgE29R_Z)K5KqS6-k}tX=&kGI*>t*;8~TRvxJ}{&{*!Pu z97~9cK}3agzQE%fs{`{c=`B?Am7}oVgNcxb-aEorCl}3(P?>=X(>BM{F^kH2PxUVl=^`A9qeA0*Hgn|1+3FEjz2nK~|boddr^E7Q1iW3XKKojA_X#L{OAcT!0q z&3HH;HXOtRX>EggCeYpSJdz9X+I*9>r*5TMe(q|3Y&9b~1oDPO!wXzbDcr~F@!qm< zfb|`~r()a2NM{(LuJY;Bnu<*sLBk&$5xdxx)iv})6GhP;&?JR5g)$^-Qv>yRsf>JZMz&l5S zrJ5opT$iK)T_U7{IgMQE?+H1jd5#TqA~{1NvcjoY9akzK|7jU*`69i`nJKXIPCGXo z7eEd4i|Qh|F`iMYNTPahs=25yNn|ke80hRK^0emp$^sIRdm(3mC~=@|*rBIcu_D=m z7*_ZN3aq-`RtwhK9m$T#si9ikZ623edgN?7z0|wcx+1nDi}z2HM8q7iq_oSZk@7W9 zROkBxS2H4~r$lrulm~Ig`;f)8HjwgNJPB{g`HViN9es+CJCSm^x%1Hi1x-N}oO6x=(kX0v>qZ$o1JncpwC_Y5*D1AX zj|}JTXF+bRBXYrhLcd`x#_vQ^H`$?^M5u@bO@VLDD2OjYWKU5jgBUNG0}J^Q)u`(? znK#CO!YvVYz8c2*S&qrPC z_#)_VV-d}){W5-N`J`PY$2$oR{=&iX4=7!;h_I_ z#u6`A)GV)?|i_@|GplhCN3mMMIge!I9u0T=lh|w$j z=X{PW3}-~`PE9ZMz&-e_NR}Y$%5fRa>;K$D>XT}_0&08a`&jzFk>MCHnZ_a$xB*C- zXAFSAcW7j^71PLXsF)vDDVffr+7i5UV`b5eJ3vxstr@-D7@)aSCEyE&;sUT&tY$J$ zW39)gh)@tI%X)T7rBcqcE|Mc#+$VZbRH61&)6!xL0Nh!${y#kvn&IO!uldDjQqK_= z)@wesy7F{gqV#{V`RLzf4i=PPr`XZZH50}EtUD-vV|PIFmkn9h&DH?r<+(9s1f$ZM z1v)NQ)EEabPB%U9Z=iYOYQZ{(wf!(!nDf-BdWEYaXI5=s2{h!FBgm5vm=K#cZql{?MC52y4+ctKWWWErV`a6_ z$vRM^G$u%$jTj(ni9=|F8IJEI5eJFjd>h{$fieVUlVj=ppu;7MUo^K9moI05}cuLas z#Z3KD&EL1=P35gTbUe%dxxZCaX-~I2Y4@!d8_M zAo(;P()?D}wUy|TB3}_5alq~BB(DT5josw`m>#@*ntLvfJK#w7njU_=?r9vUSpSPy zRku|z6Alze&3-=Z0fR0cjtN+=+#aR*c;UhwG?NC?sSmP2Ta~T(*i-lR6#XUg3xtfN zJD0wRMG6;XO7$A&qaYMU`2{)vUzZ2ZW}iT>f(pjViynfvwJ!$C7S3xKN^!#wKNY4} zR^#SIJ}r+Nr@awqQc@)T&JOX4Rr2g!WsS2A8naKGr0k%G=isRg=>Bx+UL#6EAY6|L zKrv3xLNT!+vQBmwdO6tdwo%XIe_R8+=H{__Y>|M(zArPI$VFSuN>`Z`|EPzrn5N6? z)Rz6lyem#6sAz&7G_7lHi8hJFvc(hdcIp5Sj%P?xrEy9D3+UvSk#+%1n8hoG7K{`AF zX}mZ4vkA$zxme>BeN@xMlozMtl&>G|7^;6fkM;@au$O2^)naR$Y{Ehg2`udGXT4=T zFpQEj51&QplR}eOL~!?ZIK+dQ!igSdng0n!nF-z0w!+Q*+0W{UJ;wT+n8V|`Eq$Bm zCSTh9u3v4UXwftpE+-&(TSsKueTiR(Z>&37YUB6N7lKOLu;4J0?(lsG0RgM-U{@&l z0OKkpGAP=$KS?>DDZS%h!8cnX6_k9Enw#vt0FSm;Zs=LDZS$7*=(2*!BnJQuPo!x7 ztfYoXTAF#34hOiDdPcW47#Fr=bwuDvaip{V&oWM%BKXe@xL~yb(k+)fI`s(uQqy0Y zV{DLnfqY(ZhOtxTHNQN8b{&_rrlKML9se*fZd+wyJCEk+4W@#d zuE-m3@w9$6knr_y9bpC>E=)8g9;FYSpWe#(dcPmC_f|quy03egh=k5oA@r=F z1xkGGAJH(R#`&Mj0YOMwi4>pBRMp18WS88IRGDs>Ru|Ze@T}~Knz-s@oo2lMS46Ld z+`JB5{I?z#3>2J{>b7Y09eWTj$3{*2C0qN}n4m%v;+{=1OAy1@DjSc&b*T0edERM- zv`(5_7DmN5PkZ4{hx!w{p-maFrYZ-6m5VsSE@~Ts) z*g!ZzkJyhr<|9@R4z`>kdCeO_6QQjqPkf!?34EreNc7KLeqA*?Jz}&Q8XMRQa;fNsDKV zofFUU{HR0VI&n+Oz>^-nIvyVut^cj@W(sP?@)Rs5EpGZVx`J+eXzj2Dbnfo$AWe|- z%2v}EZ<|6~0!6Fw9GWKXZPLORSgRVEmmgTVLUUrL+(mlGCM2`g0vBMnJ#+z*nn)A+ z0%!YE)iYtktdKglaHEQ%pv!Zkh2J72$4vVP-hKf?mksTfXUI4oJ~?Sq2PfnK6* zm1KtoP{X5azndvl6Xsw(4zsnCg=aORkA4p=yus}*8|!p-MM!y_6+=oTSIDEh&fGVU z*w~_jv-*akJzuE7E8}LZ>EF|}m#^|Cg(;Jwwh`g>&@Hr;KO3%~?vL1+lB-E2jKSVh zg}3k`sevqos)!_`NpEPG{orh%Q|GxQoB&^+CEnj=%}CN|+l&9C&5K8n8)thDupsUu z|C)2uFH;N0dGib)XvxP00303}7~^UO8&)x!|LRA`Gy$Zea)?68tCXOSOkCo&-f6;m zh!;*ao-3@_YGny_;?kdUsYEM19>i#>N-{`;T&$~&9|p_c-516^$YbKoPUehK@3O|r z?%$(9=^##^-z&Gxr$1Os7<1Jot|P_q*GyYX6|R=-JjvDMK;+i9{+KpF_|Ft$M+j>N z?`x9~AhN;E9J#+MSJi-8b~%bE7i%sSJdL65zUlV+u3B-g! zQHvN9YkFgtO85Xgrn1ilJL=_pKdas6&(=_pr~mwyom#uhF>({vMsB5C9{NvUivPG9 zJ9!kz9;we3?e@k(NPp)iv(YCDL^d=PA6B%tWjr8XZqFp~9mj2Kwteb3grWMiKAE7J zXVdyko(st?l}#96Cn%Q@w_sl0x<)l-dq%zp0n_zu(s^f|4f5UpYD`U9L<*2b9dp8m zO-vUr!QO<77AgXTKU6~H#t9Cz8+^fYWmw{v)Q|4kk91R=JxGl`OYJzd zy=rfVkX=!~^-y8yW?NP5vsjq41`Mu~y$Dql;|D_|1_)K2=~AcIE#MvRp8@O0p3%7Z zVNr3Qup&`EZ!NO;!pf3Nvab)RHV6UXz(bu-I4isoW%(VRY|h>7gOywkTVN^JY%;om z{k0L~HpTvhTDLpBKS8}u)sGx7dbaHUHX02}dX_e0wj2*` zsADOv_Xi$JO1VY`fP7+j;JVazmpt1%6!ULJf_&)mq(|}*JLiVq=+*s!mEHHqM_(a` z2K(o0@5~)D|FN$C#KXJGzecYVuP~sD2Tdst=8|b(0pSX+`_Yt4o`ZRZ&oHgww=I!V zF;`in8MIU8jDIdG96mxWhft6X+Y92tP(U z*IZ94UC$%lZ_abRM7i)2zsMtcS5=B`IoOb6x>Exxr>r~}lg#BnOp~V^2#nL)vC@Yd zN?O=)VYGqvNupU5nErkBU6N9Y-_f~Y(;5p8N!(c?4hp0Ao?i?be}j3#Em7w|xdOT+ zs05NZ%nnbh2A(#mLVOcUVB+|Fu3@GKR|<^PJTumDz=9lFqf2q2fJ^w=)MyKib^WA@ z07kNEsrC}yu-rnS+*RTng>y%8j(gxC+f~&rEiD+()S{h70ecBq@YUd1Zi_+6*Yteo zp=bMaWiW@7uaZiy?l8j00;OE+H5-(CYs8GEcTB6*vUs)SE$v*i+4S$hEY)9~m-*P6 z$#a^{?LX$!oZYK%I?71udlB(ep8N4j=b)r65H)%ton^sGc5YGWUgI*IwAP40Fvu7R ziLyhp!tovK?H~X%d=r_VmXV|FBAgnwh#~Oey&wMC;C~utE33p4O39&U-Wr*?Xq;-| zYG<9RW!XeD;LtSAd<<%M4z-P7ddruUlMLMS3hoBpE+jvB7uIqd`iwmh*we{(YJ@4c zDOsu=U}565S*j)Pg@V*r0aPlOd>H9no1`=lP?vUHh-#v(H2xzEybg@H>nXzPVnsx< z>RCi01=$BaTlomP^&uVc#~V~nbH))}R+HVWr8~w*1f5xdWmHK7Rcq;uiqXz*SuiB&79;2K;?N1)1xqI zg713HcIKxXIa5KS_Lir8ncw>)$u2j@djyPL;#Y`5#S}840K2jZK8qNCFl*jkRg2?V zb$=WU-9R^GeUMja4{*fh*+xv+OBqB{e*Ii0-7X+5UI7W=u+Cxw>fkfN=J5ar7*oQU8sTs&C9 z`}#E9TQ*@K`AU&sVJ%DKlDcdz6obd=?oPp)j!tD=CTWySrm6ro%XV*wMGm7QL zNQ@&xzxCsn4DCso3jYYfRJqwtnSb;RdJ_0bDZA7CHrvGzV{KQSasRortiUv9HEPU6 z$2R`25Be@z-MT$N6LTGlR?#J+SoSsy=Hj!tMl;jQp)FY7rmuNs**yq(RF+%IN8kDF%P4dHls+Z;V{D==*qwhda1IPwvBwJ8b5)E8);YIne}P<`Jn!kE3zL75Lg&b9)WlkPVijmm833VP_leTT}FX)#V-E2;21A6;JT^Z3#( zm?Xe1b+yVeCsZ)EQZV)C{RCOmlfr-X>cbX(?cvbrkjtzB7xESb3}UE@bU?mIbs-K( zja4}5eG#>iY~#g0aO70N$hfDEKGAnV20)>vFVwg7oXP{2*5u2Bg&SohB0>#&&Q3xy z@$5ICPnoyVJPz_Js@f&sU;4ZQmsx7~lv(kw%*_gk_l?w6U!DYFdHa1XI1L#CgzG&V zGL<7u%YfG(k8H zh+&I7$-FRnkN!qEbqOf)o=jaoORL~>#M#hO#YC4mVBAsC(u^xb3ynOnB6b5 z=_nrvi#f3PlCrvJ&67yJy@zI13$Oe_(Nnpr_NH-V?>kW&h!J%&Tw6S zdDKbpDGnkX987foz&UXQYfD7#s6&8JKrsX1EEhwW$tolMdtl~t` zmAr6f8se!|2OtHU<=oser(lxg<1$8_hIFs;3wZaoG9k>npYn`;zlZbG>Z&vhgU7o| zm}tn4pf{4jR26Jqm5-z5;TZ&8JdS~xAiy71Mb zDwnim*naJy%RutEn4YwiTDunJ{wj%Y9YaZWnIm@^Hs^P&&d0XwNdCNe{RHmqRE#1& zSXY;}{9*yv*mQbXl8b=Jnvd_nrW!gXNY4BUA1ho50XF>5u$DW-I;Tv$)y$uzh5faa zVqnCAqJ&7qyu=00WasS6x%^MkmWyXt+Ko1uV_^@KMRP954ZEwrAz}vlEvG};UgH}h zFyGPZOqy;-cS>yU>v-G`Ocj9hy$b@+>RWQI_)>M%yPW-O3b5#6UH^)9^`!wayR|r% zbv+Y#aXV*awyzKfWgTl)scDX#b|S`qQ2Lp#iyDp8U9lSQzGg%A**^Y>+Mi}>-iaD$ zzmf}Jz(@FY_0)Pwkqej!K~8KIEA^z7ts7DOeCV@Ik!W&^1jm?0RJ^pn?;?0pNdKhB z+LU3<6%YAx@?3TT%r#e({#ZI&{3qH^;EfU!&?<3#9A?D0C2;GHjIHI^0nro{6Tmm@ zKpMlc3cAjPW(c&|Q+D`QzNGTwhMb?n-s~O~22UKiwg)a+PGG@+XX%7;I7^IC)1U!B z-S_j$_r4n>%#7`g;m zJ!Z<@H+1I_lQ&|$u#@#by|A1_^|;pchQprjdmm;RUC6lbg_X6^j0bholofUp>ip!( z;Yw#5Zko;hCq0~JY|K?9?S0>Rx~@yuF6-=3JyrEX*z=FWtP3dD3w^}Ml=gzAk1f7p zmwiD<-|GOsM~bztmaCd-SUBei{T{C$I#$ZsS*Hk1ACyqSPUl3)JF32(l@>eZ4=32g zDRj}9131mYmA7gNh5PU%w+(j{8z)79K_`AYQ;n)rR>zrx9yK@}pAQ6SGv=2is-NR1 zV5j%X>daF_FH{`iTR6_cX^ZmCEG0uT@~S!DU4Y2RtyKpWIb$J6acRaGAXFd~i*c$t z8unL_RighH(aQ|5=dz~%vAG4KE{`%H-MX>v4l$HE+4^H)_{j(V|9|UnZMc6pHapmq;N-LuV_)b`iWC+kYGEGy7JS*Hw?N67RxD)yff``rhMqsHc;Q@98vYU*<9pq;(>$Wd; zb9d}H-d+;GC?}&`b;zr-qyXLy4K4fGl)<;zba$VUDH4LYN}GC8*Nd^S)x}1dTlf=| z^WoRMV%P2^Waw>+nY8g2nf7l6_Ya#Ht5Y+lE^8GV*F4aGG!1#9z5c@cOwha9vq5hV z9VnmmZ7q&Wt9LL~N-PF0`>Aw!={)Niz#?c}u<|T~aKkK;4N~O7q+R8Rm2?D3qOQbrz zQ2Z%9cT>*K+ONF6@2)t0to*<%=aypN77M1A%-_cBC`{n2x-6mx(a7W1nv6wge1f2z zL2rY_oc7wrQ>8Z*ro3`9`9rBJ8Wy-wPJvYk(qGz`lP2y3XQ^e+3E*zuT|PM4dhb&KNsgej#J7Z=WE>?`cz9R zEPMy!lT5dOpiOkY-5NPs-zJO+avTNKxt8Fksew&JRKO0kV+CUKTp92uM%S?Ezs&PsMKOdflZWNaz0{(HbMu{4Q1~sc zkeG2c76UxHOQ3+_g#4aX^u%AXPKL((Tk3DN!z47=6I*`2U#QWO0LuP9kWWhM|Dei3 zE6L9P6t!@Z9%pFVb5#z5CqPpCL59;xFiu+JqlJDp|2uF55H76x(0!Rdiblfbu;H<| z7aI%)nUrV(Uo_%ecPPUyW6bO=Q3%}ht?jqZI;Ne>WDjTq|8pnKA)p@Mm!u2}H#TFt z0qkDg3<$qslier-RZ^u~flLV-Bx7UyjGg+@yn*rCOA`xr03bUKbu~3{XSt)fu8$m9 z@rXwpct->Tb!-uyeq?Pajari*+gr_G?iYQJR$u?!#*E!Q0RTgFV2q6dIoY$(I*}2Q z(A^R2ceIpA2PH{#*v>H}>TMhA#i$;_ZU^~!=-eAHMN(Tf%h%$nBQAcq^%8Dg_aE1# zoY4~3TMm7Ndr6Q#QHXrFuuo82WWaZ)t^NKlrJqRMsaz8KJ4S@7l5j3iZbb~G|1FCP zs#O*&HZ@p5t%Dr;2nk)42pbL75ek7OjH)-bgQu*IzS4-uJ?pGBJV9=j(gMlcPWZ4` zzBJ!)M1;OLU16v+*J<;IrUQF*);cq9IL|+ktlYWoeiYKtCmsrE z2<>$Q$}ntllHqvZFP&(lG}$W}t;WiNg(_zgFT$SLPp==t>N)0TvrykW7^w2Nfv6o_ zB<7Hy`6%EV^aQdc`hAGwxAqCB=0hvrgQ$C=rjfv#?W(VU4SxtC{Gf>ZODo`S%8;q_ zW1#m{>b8-IV ziIIuQVaA)*IQ`uo^lYBquz9yabee9yk&tiSfQN|p?&IJZ0B}~7PcU9D#~6o{P?a)( ze(+I@O5)5In<}vXW)WN@e|=D)3fA;(PYuI+WUbl$LZO?Gon?&%*}0Nh=(FM^A#;FW zqOTW0hp1kli$DF*{;h$GFmcg&y$QMWCU<3o&L6N?=9*8>0xZPY0p2&8fqXCM zI7Xw62a2Iqj5{K*K4Jsb00GW^wm7RuTcEQbr+dq*ks1@2F6n zUB1tX+?V!x_RpI!;^rn>yh8fMz8k)V)Zvn{BThXl=#CeDV$#AEf0Kb9G7TT7wZKvs zh`R$}_GR$8s0``GpYma3y$LbcdAsrYKkFZ$SiW)%c@$W=cHWFjc%aHHeg2{}dFFfzlY#vzVKg3ARJ^PVQo`mh<7EVtB&KR@&#a**91ttcNO9&|ARaGp|V_!oI zOgNR{1`3U$<)*M_%M@o{(w~FhY~r2A8i`SNndhl>D#glWX2h!AQuWJgL78`%iMTxb z7bu~kuy%N!df_iINoM5R{v{*xw!h7Z>9hu4EOs4zb1_DSF@M2Vy!?m!`0O-1sS+Q= zewLyyQF6u!T6G{&?^9oh>kIu0+I13NkFP}M=3KjR9`*d(+9%RNGjah+*rgIr{lnYe zQp{6mI5ptd+Vpqg0W)`J;GS4#u|OF$_=%Lyrr7qha~fWwdRF1?wkvzR^n{9jdhx_T zsQ)?UA6F1or0ILV8dfEpk@NZI!wra{6!G7w6&NYuh6HHBb8YJf6-{yqj_p!m2CxqCWEcJYN#N2HKH{g;1(nqWW5PQ^RZ1*WO;7FadQ> zPc)gNRw}YV0W)X(N0Y;7pWMvsW6mH6Rr+Mr;WjOke7w?yzr%#Wwwc{SG940^$&*gK zBU}t>o7IspzNgs5CE;pT4?O9TUGk)tk=Y?uXX>?J(LKi`qn$z9geN3+s7GVO_Z2#v zCN0Uz2*+358Rj3ujeRAJAk*)GPZ%0sr9gWzRmp83jh`izBV-tA+A-pLj{Mc(+V12Y zaI34_q$Zl$k9SRc@D$J#i_-deQIaqbNcLNL@1vxEM_tJL`UFF#$bsaK@3qc*bo!iO zeT!QSY{8mAo0se{l|}3vrfAItxr^Z}u61CzO|aZ+>8vQ5*q8PyztU4s^yF`b-kQ`tWS94qN!;Lqn+7nVbRi_mW48~ zx5}Fl4Z#$153sh?e6bk$lUFY+aryAeNXQh{|FjJ4zVFS7&l zlpfo6dqvGIFaInY{HKFhBco`d#%etW!Uqkn{1DTeNE;4i|S1zz7_TAPrZOBRz_mVzDpaUYU zFqRR~2edVk2%>2wx5ezd7C@Kmj_;_X&evaZF^&ROV#E^4)54?L57NcDc>>cwg2H6g ztv$gKoZSWhd{33>!taJ2{dCH8y+UMvH_%%p@Y%fo(#dr;Zl7UzDJkA5)V{cdTpEkyZX(<&%!XWEU^_FLO-=ij z-r}sfI>FPe-zI;zRK?V8F4@t3Cf9|iRrcuBqdmUa?M##R)-`TeNQg}OoR@YncxLLW zF>>cXKL=SL&`Gco!oPkXSzr`cmq@a*lB~$2rrQ{qw_p+=XR>86Yg5R55!ib+*KRj6 z+B842a{|?4kS*mrIQ`-n;v)%p42~NFg8j(o3`tMDHFy+mjS-IZ5|*UzJno^%zup-A;e2ESM3=dw&@;dKK9b}C+A+{4WGPfJ z-gHtQCaryAv}&&@G8x496iB)wfn7>fW6Ezy;ucK+@PB#z5K6gbj;$Rh*_lg6xTbE8H*WCJ&t1A}t3@Jw&aqeFpVql7p#WvX;f226MCdE96RP_Y6Q zH0RpJLG?L1d~RKLX9Cu)LmY#r3TPP=(q)n54OgzPvi(S}Xn$mJ!Sd*74pGH6l6l8u zi+3}YGGL{6MvO?g&DuMKYeeSEvDpM@ay%J8jurJtO$yuVORmR5+InjZ2x~sNWKo=f zZg!Y{W@o2K-0yPoIH&@UHTtcw8*8;TnW@K2e|a%ai#{>7^dTLVCxD^BrZbWOsLn6Y zck57sj6)OU-V3O=u_XXGku%y3%Vhgkun&cZhk?4HNx&)+zWW4iA|Ss6Sz zsi$2t_L7)&3 zssEcpAAkno)sEuvr4G^Sut-!@p%Szxc;2`a2eT_58-=WNDHEZjyk_shSE4fdG}9p( zrt%n`#ZDx-1RqMMv35!;DuqF9FWnu=9u%8eK4;HGuJKTQ+(rAmb@Ot)RqDP(jJ!29 zJFNMqXX+CWvxhqcv{c!WZ6(xc5Q-A7!N_%bVnaI}K@=;IinSkoWt;}3jNWSY%FT$@~>cFl3;Pdf~VqA?>2SKA~-9{5b6g!iqVjLPm} zIRihnk^mLt1u%;JhX3`fDCb22Tve3BP($=|!phN?M-F_1asGus=iWkcySON$ zqDV<+P!*+QI)k-|urnDs@&w%Zy->;}?>t;t9HH+ZpHC9rUYX60N{15)r^9Or4H`g> z_eIW>bB8E*`$nrZVIDa#G`AyjzVXBziOCL;8FOj(DfGO|r5uB#rw$ zj9p;3o<0LCdLaw!AXSe2^P{5nHVIWRx>tvq zw%^rs^6@6pr0@@nX?Q}?RXbg3>h^5r;QcEQ_EJ960xu&Z=`o8xowsSlxlF~4J_)&J zykaa&4}UBu@=G9@@@uGwFs!kXlMnRj$Rhbc-(|$i;2iTNk8a244|N=Z;LS#D(0Asl zXt!ERWG12Ei01Cp?@J-vG+h*sf|Q=e50o9VUqpX=5UyiE!V8oc%WMB}SJY$pu~>7)-l$K!>5mTGdGEdc^a z=;YX%V^pIE{Q^jJQ&n1t*HBPGbarI4cuxN&Y(DqjYQ{mq4DFKtws*PuTj^K}+y_pd ztiG_V!&bT{977~6zQ0d(leo}aGKDTTCju3DGC1Wy58v&C&F-Y6a$nyPGL@LHR9I(t zsUbqeR=Xr)X>lST<^UkdAXP<*fH}l5JQg5DbV3>s|0qq&RC6V*FGdVht63D?)J}v&p_T!UmSp@zo zuP!UKD!Nuxw~l_`LMwPtQ^j?tlFUY)_A&mx)&c8QsKF1Zk1g4d_r9CuRX-Q`9*Mm& zO)^BbK^fffAR0>H?SwPt44BED5yB5_kT?n~Z>Mdkyx(bMvyIh$Gd;s-BE8107e6f4 zWa_%L&w0 z*8Md;!b%iv($5vzHkhQ}Q$(s~YUc4jzV|U>}ztn_=C8a_dvzi6CDt z_V*{AClS4$(x|QMtN4-4^AZ;3|q%{b6>!B0_(B) zCUgwjWF$NlAg#8G&8Y-G6k zQPjsnhtg6J5LCs}ik=ft3g@R0a62k?-h$}d>3=V#gmx>;F63ap-a*6jNLw#z#tZ(G z`Z*XENm^{%5WkTs%S8?FDo1YWI=gAO>03GxSMUZ%VFBgZ{YC0=I_X%9Vnl+B>P%crnuFKct#@s8Y>KW`cKWScJ%bsfh-`!^hA`9*kU2lbjgh~M;1gtb+_eEhOTAP4 zF`r^|kt0*;!1KoAByi==ODt5e#UHKo_8L*nUuW-_7+-WfC(P`VGMhv39%0H))gYx% z#BmLM%NM(Ya0j%paTxJu0j^1Y?h=@P;mseR6Z}M1bnkuLn{ST>vc9?EMN z((20aqbJ%*+&I;ogdGY-+rZ|3rax(y4zC2)4nb!4yr=!ctXP=qF*|f*InLGX0VKg$ zJv(oLI0q?~hyFCnpUY0;x1(Ga>)^q8s8_@6$ipUzN8zYx{TUC-iL_GNXaVpYV6Vi>YQku9sP}%DYT@4_=73N*COv zko;K&u%W-cBPQKIH@9nZ?rwdDH-nsT0@9PpF2;%a|p zCqCBCk7^#~3EZj8KU$qi9>oXFC!~ULXKnlvZsOB^5dUVj{ zfo`C3U1zqBIKHu(OqlRzFu8(*)XRLL*dnb!>OS}t2A#(XuH-W#@2=`!#dw0lQ=l9k zkK;^Z+Sbc@KETT$sI3leC9*&O-(BWMrR_9L$dLOR9#ZlH^>%1Y^l~I^Wj#k}RDoe@ zd`lIfPhAp_77=G;iB6Jf{$5aTY=Q1y-SG;5tUu0Yu${G?Knh6nKrJ!};s?>imm^Rz zVK1I=K^ykLTo)A>4?UuX&fo9e@4wn^>*F1p*YLdXgcf$$X0`FF@^oe=8qCA7iz=8I zzO7$Ldzdm`QBONdi-;=1Gf0$0%@9M{S!3?0=^rt2gxH&JE_@+*bal?05*EeEJ8{mb z6vn$QZvJKG#E)ldQLgNKW()X?eln!gMFsL^zcf>9T zOaa@3-vKm8#@~Bt)HD4U7URbA^PqiVc?ojFltC&STz@YCj@M;r?~M8udWOIBpLytZ zyd@n99S+Z+xvb?sVQPy^YmN_J-Q_2@pyr8039Ry5GO;<~Kt|fB;5vT=xZ;F8eFR<8 zGwz&9f919{z{S+ZmWV<@xQtfdKM}+g^d)O`v1~gBqWzO8AAG;LmlU&fbCM|;9`jmD z&!Jsm5E_~W+(ykrbcw_~C}dtMy4hosw@q#wBVu+#k{tjU1J+0X!?Aa1JVOHE-rcpSdKfgV);rlHvdCtV-+kE5sx ziu&fp)C1~DLr0t2hcPV9HX7r0VOEd@d&iT}0GnoSrt3;Cb{7CDE##>7z;%y&m@`^D zHFqv&&^%gc-l47-7W`)2O2&R?HPW(6@M}SB|2(zTMbt^6&IkoYQ3Ef0M53ol#Db0XjZ=pybOjW4ZSGobEne;(;SGhtXc( z_*Dl?u3}5Z%ALPy^GuTz~$JoCh<5BjKmPjW>8Fn6p6#yHYyV`T8)9V2V@`)|?m z_snYoS%Eq04_rplhz|_}*NqQ)154j1=EiUK@c zK5?-NEd9Pikw`vXCB7-8X(tBWwRt-pSxRXdYp~8qCByRAT@phRRYbwDICuHFq~n04 zXB&Sd9b=xuek;P?#3_{?<39abV7H~mcqr;__1Z2>JD}yutXwC6RKo1-CoW{Yt4f9Z ztw24bN(XHt0WH4G;wMncR!FQMW@DBX> zLdM3V7_du79b_+DZo97hsMIY13Y+TPvz7N#gGrPp?%}B?Puzb1iNcl@o}$e z`PxkNegLMLQ`d0)RcqDh8rI7C*7v#(;$wlN zVZV;D>K0fx9%Pa-K0pkHb~a%!9nx%4oOWzj6i)l2xZI+Pn~zuNfR{>*dA1d~ep1RJ z+W}FVXxb!%ep#;*Kto=RI zbKDg!qcYqnuxxqJWT|vfl`vq7L^jBw7d9KI7y93|U76~=ur68vM&S8?C^V9wLa%AY z5*%sL@@FLONtBY1T+j2l*1&r(5e;7r`($zU$TQ(|RbDZ-jp0R4h!F{PnNNEkZP~-> z$*#l>CB4ACLlenpUliN-GKvY%(2xqFBzN&;OhK74|32wU7}BsmW064dP|F5Vyf)Ro z$AFwraN+=t@$d2C0R^lE1n2xZaBqsp!CPQsq2u*p0lK@m* z&MZx8k85fLF1|(!CE>kssUCCR3xCwzO_hDcaoqse4YO|-j9%}6MbIJIf-?DLWum~F zpF}zlUiCY>u)Ls40N?fSc4FNZV|}h0q6L5Jz1Wfw%$zyE(8*mQqrh9Um`H*>74i6a zQb?r3ClM&1Qlezr{&wM5)4}uA9{4!rnB0;8SR;2z6!H#HrAOOs%hS~Mh6J%JoE})s z#L=XhmHk9YsBO{TC9*ICn_wVFS;>`mArz4vC=-ZMW)u+!i_U z8p(8!G=%4OZb|ACn{U{58LcYux$vg@;yq z7AGgvF;7@C9Ap%du5ADg0(i9qe=C3+&2sbAs{xfVLbxZ`g#i}MdD^sk;Fr1Sb_CY2 zi>Y9#psRxy$!D9uqb0V?PXSBU#-c0ttvBw2DQHE@qwY3MuG72d3V+MSt`ag8na2L= z*3TTnve9*aRSW+>Ae>J=pN}z5JPRfX-&sWpL82rANl<&@&F+zem~^5mW(baOnbrYR zO*XHgSRbW`R9c0hf--SMle>`uG7T6gsj7?lw?8F|UPo_RY{NoAl2u`w+wEv!+|IqN z{aW|={&MHDXV5f4a>5&i-~=R)#o=iO)WB=18M{)eIqh`82V(&9Zf*N?$mHcv2CRS_ zz>9v4eqQMph zJA+`j*>G1n(?WIuz&P6_-6^bC%JptmYRA2GB-8)|pCpuVut)lTZw*UU&CuBKpOSrs zz?`(5!vn0BH;8r>0VECE z@+kA8?ZR^#^V-;raxLy6SUwJF9|=TnHC?KllP2FIAihvUQ@NbAD;(;Yis&NN%PP1y zBd0unYker4o8J!zAEA!wEO@bNNEzUIJWWWjaIv|Rky)(%3sABs=d;fA~nnSN-vUX0l`9h z^!P~Z)y!|VrTx_3l!h+*pC-M&ilzstN<1As35HzhsX$FH?rMrJ4KzFAb}|$8P^9BQ zPe5KI9gm6p5llT2;4eDxcY2q>F>zmnmZr&^&aPfl4|X$n-wL0-&bYNQpc5a5j=pTY zjXvD3KZ)*>Q-moef^GR!_$VU3#o!3!M*%P{hoC7?W2FL?K0fQ_CTIevtTVP!I-PTK z(T8;B=sN$w9`?1@Ed2lG{*PJt8uF3h&zTq~{(*~(dlMXnW8{&Z7|DlkmtEKFpZr9U?hm7XWt;5ZC+>-Zb zqp{#`)wTdRvK`P}j?ze&#x?h362o9@XElwlw8o~D8!1WHVwHY{?CdBFdQ1{Q_n!s^ zL%cH!_y^h>4`NdohY6n4uG`#8%#aUxgN^V#F^9??1X9#D$*iccR-8aj-Fb(2uF$V=_o%M(jtFXE-ksD-c`S~P|^ zyzdE2Xn`rY%)C$WnIPp4nxWD0RuG>$#ih!2Ek@}3eX?!*YA zeRI<0HDb}{qD*n7&`vnJhYy%ALen|Dcl?~T4_a=0_2V-0sc^}M)8=3E0S23dvqiJs zD+n8M^VekDmjgrzhb{Gd?TaW_k>^mD`;<1MB$Qe>D(c<11MKvhmEO>>uq85QOS*|; za|LudLxxOt(SrH13e9%vj@Mq)flL}UUy_MTYdEreoWa^<32}?mx?W8tYO+d-4^@%Rx}=VG1xlB$jfZnrkSMrNl)CB;)=^?}->acboXRe1CIAcA% z&55+50ajVp zD)BTqwP|=EcTS#D?yrRQhX5~hCcBo&!685m z0n{hC>-CPo!u=V1z5C*p0Lt2bXJ0!LXNW9(lT`9mn*xKZ5e@Ov;0!cSYa@M+isP{w zvMF%Hbbt+*DR6XoL%0(`Xma$#4`o|EQ&k1sg@HmBW}YL=-Pu^+5%WPMR;}pq9U-T$ zFb44A2(rQHXsr3LSE_N+SB>rx{IUZl!KC+AdJl00d$rdJW-LlJP+c8zR zAg}8P4eN?Pnh&oB(JOdOJzd`Nc)VwQfv0oh##!enk#fs+ApDKtznI6LL@psL-*0?n z4K1Cqd1Ow}!+EkQu;^g;m+{DD_F8`@2*fhrl@6maXEQ-gG42yk@;f~Hc0w@-HSc(K z8t9Sy*W6Jc5`t@6rfhzgDHn#RQ{#u6tKKCwF4aF#i!$32LbHVtu?6W4FD1U1o?Jn8##$~hcJf5em<5sVGB5r}U-UMaq(L@Dy!O+@i zXz=FoFwAIu`N2`QxBbgU44c$yHDqTriY?NT;!GSk=H^T)69=GT ziM@>Ns)&0ALq(O=Zq?j`a-rcb7i0Wqs>D5F7jEYl+%yroEldesCO|XiW(~mR0aDsg z9_w7yBu3J&*3doz2fyb%n|r#2PR0u9loV&sz=!B>J332Y8o(0&ov!ap0I)R0NNQco zT2U6#m3E+GrE#1MaOmy}diejc#1zSw=b8(RfZJ1!eC-Wl+6Sx>nqaV@qLCmbe*3FN zjrsIE!|1Gd@<*fk^Fv^=22kIG+XF;{R|vV`1IV}Sp@PjG#+PFF)TzaiMz(Gf(3h5kS6aJGj`E#PVy zh|RO`=;yU=b}h1tx2KCO`{uSA(&`7;jX+f#`+F0m<&BoE-guEv-F1dT5@;|@3*YlJ z7oQ@ojb^rTdy#E;J{k1W0sgL$=P^63Y(dKf`_Il00$*UWdOcjf?t~dAchhSmvX)?mdA@qqgLMK2vgWR+fQ^j+A`J6XC!8wn%-*?)Lz{cHR2^3@_S6 zPU}J+qPNLq;h(5sJB9*#Ad`;Mke`HT7Xtpbr1ArNMHaZMs>{}mGcM4jSGkAOBENs} zqjH10W=@*pup3Zd0Flk2pu=Ie2aV`emN)}&mOtb6Y)n=4>3*cy0O4ZUg_T)-s?M^i zG$=kOnE1uRH|*Y`g!xzgKO{&&P|_k?k5Poik1@*o!8y9&HL#9(7wrSSv}}bp!Nq^y z^>}S^uZOSQUZA-@lINRbY=*ypr%u0gPK5a^hY^o?8&+Gq7(CS7yo;TRhFPy3o{6`r!pWnm*wVWXCl8i)v4mUujSB^8}JAH)EuDYNoIKZv^5^cQuu@NHam$}8kMc}Yt#+grm$>!?z7W;ve0)UlrYFUW^N+q2$9BDgw o8pe~Zt=YW^`f-nVYQ-AK|A+WuJCsZgp{YdcQ2Sga7~l literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509104002-Config.rsc b/MikroMaster/20260509/20260509104002-Config.rsc new file mode 100644 index 0000000..d3a23cf --- /dev/null +++ b/MikroMaster/20260509/20260509104002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 10:40:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509104002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509104002-Diff-Config.rsc new file mode 100644 index 0000000..daa3c27 --- /dev/null +++ b/MikroMaster/history/20260509/20260509104002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0