From 94c5306708984b82d9901852d0777a83faf49fc7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 3 Jun 2026 00:40:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 03 00:40:35. --- .../20260603/20260603004002-Binary.backup | Bin 0 -> 255321 bytes .../20260603/20260603004002-Config.rsc | 3414 +++++++++++++++++ .../20260603/20260603004002-Diff-Config.rsc | 38 + 3 files changed, 3452 insertions(+) create mode 100644 MikroMaster/20260603/20260603004002-Binary.backup create mode 100644 MikroMaster/20260603/20260603004002-Config.rsc create mode 100644 MikroMaster/history/20260603/20260603004002-Diff-Config.rsc diff --git a/MikroMaster/20260603/20260603004002-Binary.backup b/MikroMaster/20260603/20260603004002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e84f0d443c3cd7a5959f848baaf678cd654f2fa4 GIT binary patch literal 255321 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

mMbnq0`tBvlMIy1J~X?t;4@f(*cr4MWH+@(9ls? z<3$gIB3u&_EL1=*MfHm|&_vMjhN!<{$}@HF3aqM6sreF=arwjXIKvGVFye^G|AN}s zNkJObI$TcDWwtT~Vj?Vb|4i)bj0)cmJBEEByXICb-Ibm|xMEJ3l$xkRW@a@WPW5uT-z(5q-C3Km|1YhOC1-%0(n^O!8jCzgp zwWrtCE4#!~^9>lAZ1p!bz^l*OaN>0$xD972ub~Q0_7Z zbjc)@$UcJU1pet0WJnQ^p4I)3w#Nc@)3lnRBwuqdNB3=#LldLexJ7gTH=zbwZi$U? zChhM#SG5v4E(>X-21#S7WJXO;&k`Ii3A4pSB{wrfGt>9how5Vevwm_1-%mqAy)^U~ zmx~E^I+CpIyFRp%;8{^00DU#cP8p<*oo9p2N)UHiAnVg27Mlw8KS-tRf@v3*kDR-f z_cC=4Sn2~sS7U#9^`y2cqs?xoj!Byn;}>Io?1mi(=3`f#MXmSgpWi>iH)F?GtD(^( zCXYFaom*|d*Y;K7_=c+`!1yt?Fz2Em2r9I!MEn-rL|7@)c0UhFVnZIgv3j6+^(vzz z`Ij4lN3yXD9VgZ1Y3=GJjQ44V*2??Ug!rEE9=ThBJw>tJ^Ubv&|u|5~*mnw4= zKNLM)bf?#Hfa0AyYut{b6?Op^xDx**SP@*wuO;(!(B*31RNV1rG2SAOnusV6_iNJLPD+=j_9%-ukn&=v|zCA zl8GoHs=VOhdRuGI`r~(h9{MxhQe{sx;=AonpS{dL6LngxNZ!_9Sa05^b(}sVp)o*5 zULojf^vZVhq*q*U4we;k>GQhkx9L7D^gZR*)KovDZ8M0ryggE zPi)B*1-Hby&lDcqfpwTGEp#rsWfsR|T^R`>k8ns@w33;yC`5rOO}TU$zA`zZbm58{ z`7mD$If-^eq6A_h7X(>?!}01Q&@Zn5DPDsmEF+c$K=Rm92xb3yOG$0VZKR4?l>?2lE14ehp6o1BxE>d7Lkv?%&7!S3*c3OW^%&gOepKT&nKN%|p(|@L(OWPp@^!}jj z>2sUqha1&M!7A^{R5%$i)JOdr=LvE7htl0@vk4Pg^Sj~ZYQaE0uzWGs;flkJJPAo! z3f%6Qg8jp$Q1eEwp^yUT9xX;^$S~!kU5P}f*pjALx93^9_xJii-_L4$BK+}#;HBmW zW@W<+jdzR>L3EDuHY3-Lzk%X3Rm}ZV;b4t?bW)%h=>3bQ@v!<94qI_RO{bnKw z5hLOnMXy*0soCnhJ!>L*#i{MdyD&#mc3}8wG`AO>)tnjRAC!d5KpAg%%_U#=~X);8Lt15c9$?T+%>uqV?zs@`pyav^!U4F4q9>Z9e`$^SZ`33-pI&o@=0P-skcx@ z`N$*4mtZ$JvLs9pPJY*NQ&R^U!3a(DN}RJ=o0MObtlAnEMhteLk~m^VfK**B?r7gJ z$~;7@suS7~7yDUf$hsS4D?vFU?)lvFr8uTa9i7Ty^+IrhQnMoJ$z-uve5Zc~x4k!Q zSgsU1+4J`#%?5e!(hC%FBY>}zF6{(`tDGxHll1@G)Ocqqb{+X|i|2S;NjP9*;|?zF zsy8AVgN_6ou^^pn^P&sFrM%@VQ3^m^G^lhh@vaf8&U}$nm6U8C4SPRklhvTWBlv%6 z+$~RoX~L8TLF7DEQW+TxqFeb>uP~q z`|+p3B|vZH5u5enfc!zPjkvL8N)b10OhFov+VTOMTdcfLz`;U^pGIFtoH1~mbpbZ_j;m)UnQ?A4f&slxs3`il8q zQvG#jFT_(lC=Ie%Ysz>=E0T~-2HoD@sS*B~q;cpmz?yCxNQgdQYf;S`A>mu}2=_Kw z6G5%gKm8|BQntNZd?b3(qNf7?CY?M-AgW=G4FNeX#sQ0SbbF*%$ z^8GohrtZvzoK85i3TA`o`hhToM(*x<;gc(;-d(lVFuD_`F{lD)q}cEJJpOVvee6{Z zXfQhg3q!w_ht)|ES&gC3I*$>`(d{wuMbbwVo`Qzu)ZSgS03Pd;-4BTGXcT6 z$}Z0TkxIWN`!LbUrg$(;bxVapVV#j|4ew(aZjpl0ZVIx4-n5@T-@*2gM}L7^#&%jB z*EL&!5==aWvYA-Cd-i^;Uy2;Uy8Fy0F7C2PPXeu6-jvH2cAjOMe}wO9J35i3@Olx( zA4C<7jJjY@%__>X-+Vl#^2SRPu54ul8@Qy9_EB67kizRuO}+r(GK+$6C=$Dk7Pkb& zFEaZVw(l8pc@~Z=naydG0%ahOIiu4XoOPQhc=a=N_Bco<&p0{I_FlmMkjoX1aEn#y zQPv#qxrdv6DHZr`tK@Q@=YE=&Tv8<-)TK3iJzin$8}VG=2|5PKQz5$tK=R}G(uI?5 z?wU^!e=Z7_HJ_T|1Ls%m0zL=Q(?iRcNL!I6gGRZS&Y;4{gHyX~6>m3A|#Ymfgm% zu994TBdZPwyPjQ)o6SL56T=0b76P|RaLWsi6PjdSxDrk?=5BfT0(1ERo(E0%2WfY8{LcK&TZdh9r*E%NT zH{ZA!oAQER#x@aiBO3a!Hh;4X(mcl(61->-gk7nO{MDSJ8BWgiZ5aqnO#VO1;5%*w?Y;Jx>yk~uB3_vP$zXWb&?wzvcdh*(pc2$mrQ3;ce| zxAO+#iu)qXR=k<)FyUl&;&V8sUBVmzRDB;nD>x{kTa~?GB2+hHDY3QY!~?uAvK}w# zsk1-%CI^g?6|n<7Y>-sPRXJg+-BR`3DMZO=XORqYLCeQ%TAwe9wV0EEW4(WI8oQ< zzOVV4iCp=vQ?lRO=C1j${@$f;0i>1=;mh<=Gqr|FTi5F+Qa~*Af3{>d_HSplZ?Rd< z#U1vk-1^dVC1Kk)Ut%6BZ4^nl@7n)z4aM&Ex;crF$@}E8_)JOJsPwX!aGS5&rWVgE+jyvnT;M5z0chNUp1cEd1_|Bx` zkd_*_dbu9^B@5~gb`dr8HhhRmposH?vIvCG`!aqV!rRZ0@nQEV4u`%>95khi-dRBG zZsOWH!<_frkUt96yDapB>V)F-9>j{@bWWRH;!~y1g~#|B<6Pc>xlY__VB+p4nwhNC z?BL?8ME$2(zMk!`5@5h?ciz^!tEG>sRjgGsVYnPR0PYgYhiN9_!darb#yu@B`Y7Pp zW2d!c0&idMf%)Yc65;@6D}qCEix`{yfU`bfBmgP^571w_o$R)<`S=B${W>G?*OwUJ zQAs^JIgM`Q;({O}HW=E=nnn=kq!%Qj3|+W_pVXRx+TrX|@8%lo17g8}D~q+8S?WQ{ ze(-@{g=6`tjLHE2KLEhJoTXL`_ms1q&MN>KY$cXFAfT4IExQe&?|YGNvETD-sjIsN z&yK*y!Sn01uIO5VgO7zbT7;?mfXeIan--C2N<^D^ z`55pmAH<-agf#MrzJlurW?$Xu9+3bzmj!kPU~4VAe&vYmox})ffWwT6=>CZugzJlV z73q&pXuiX;f2||q9*~_aZ>%4c6*I4u1YZM;V%8`?ei0Hh|8RI>CA5~e8j_z=lWkP> zli$3LOi?eW?$INdLEP&Or%6^66GZi*X>VqI+Vs;z6FV~HrOKuInqQL%@kPV*H)n;h0PiyM9&6N(otlY%PjYRghNcOHEJxA2V z0%(p>j=Aw~>|-RHwzw2Yh0|Ani9eFNJ~r~KfD@PzSImRcNJBI|Dv!7Y+YHyz&D!m> ztNDsVA2QUK;z$h%Uvr2lTSHQ{ZNeYt#rC*+E`T`^1eAj@uwJXElr(+kxYC#HwS?e^ z3*b7-7+(mu9BE6mu{ORo`$}O-SXkl_-quVfs7SN6DcZ|iX_>7)hlU$K9gza%ztrji zD|Z*@E|91@n-F&L8dkwF9-U62Z!veW@7HwWIRUr#OoN4n=-v7ZS%^l#+nQ}>Jr>3> zuHj1onw5MA)@`)F?YOR!Z{$Gz1r-O$)giu@euk^YjB1kkj^fu!)*HP1G)4fQabXZU zKVPw|zQdGZ6(P;48Tk)pkjjdJ6ECA>VUnd=ZLR~-S zVJ^GO_(?%&M&y~-Mj_gY3CFjxzcae&;}FBa`}G8%qM%jDQonV z5}Cg&-I;gz+S2m-SMfPC`y)!7+=#hqKnaaXQ}5PLOxCTNSZ39z|7R6BBbHJN?T&V= z@t>eiTwA;6K3#e7+zbXtr5I4|?u#+IFPbpFVI7!wAVC6Y!&~5H0Y`!SnctNO4-r(n zp<~B|`Iy1q8S}oMiI^0zGmr}`>nf8S*!mOsq0k3&`?FsHB4&lsoa}o&5|YLTOdN9@ zNJ>90Ff|ruAc^PkhRahkR#3Wim8v)W-`aY_XDfo=X}hC5sV@Hl*A#$jAL6Cz{SRnoUDkkQN~XqNs@CTkjmi05Ok*QdV*99Q=LXMyT3-DdoJ zeHKmqy}J=_rjz&C_*$?;+;P@M+74|nzKA|~D{*eM(LsgyEYLe+Pe?(s`SXO(DBxL< z8b0tnU8NXys;wjcDxusgDVlvr`MLH6hZCOsK646^7=yOZ17kV)Nx=Q}8Kj#mDg-ZF z#det}aN#L!SxDA_0~AiXm!Az1{2@nwS#b)vrfF74fs#JhlAbTx^2?O7397ROD8tSm z0yKS5Wb#UXebbMSNaun|p%t%v4XK1cBBe3+wVik~I15^jU)sH|^?c2N76NZV;p?Kw ztQ@rhB(Y{X8RNe5SR{TjgZ)o>)hl@bDTWPQ62t+(Hu^QvS~kVE$(b|+Z}FQA_qetj zE?V$+3*FbyrL|z^WRuTGXGcQ7PNoG!urQ>LOep6d0%cE*S3NS(BoQ$MT>s zfsu4UeMWOV{o9T+qakyl@z?wekt02S4T7*8LH8)Z@rPgG+(!45HNgG=6AIURcSIN> zRvIcQ<68oHZ>z2ZJI#Bke-|I&**h)oIb_AwZxE;E_)|C&?HZaWft)MCM<`@*0|v;GnaB=B=4-Q^|8u4t@IK)?zX1hs0~WShH zM;Q;{;NX*PR2&iqC)Y1(hbXS&-QNR3H`7(xYWNOz387kx|Dt-k@m>H$g$U>m592s( z+0UNKj89VK9`wc_W<=>Kvs-oHT?*!d6Qk+4&Ae7Pu8q^rmxw%thu!oxK&YQD){-Wz zFcq=-{38??yu&%F`IeelfnIF^W5&IY;samjY11o~*^u7SmEt=aL#_rZlu>LEgcOn( zpuGJ@Z_`nW=GUI)nXkEG#;Y?YIV)*B(>^Rdc_T=EP^~20;|*4I7?9yKT&TSZS#!K_ zgS%7`dr?uBhpVvG%5ke-(d^jzMOv^81V}VP2zl;~BS&9DBJ#W`Qju6_Y!#D5r~S;? z8xXS)7R0r%Y z@aFjc`uGiM@M-Yk_`y^27a}S3^#GZ~GJG)-XN8_py5ns#(?Z+s2b;09uw&Z%e>~h( z{kw5&YYDLWYP9bkVtRO(+=Bx=nfI>9RvvyR%$XkC3?}kwubG@@#XNbXZ-o*=KSefg zw;lZoZ)?$)WQFX)7G}%Z_E*@^UR8R^g3=)y4>p`G1Q6(*idVbv{&<~F@R;{VXk<-G zz0)~G{XRkepUF7sbrs`|P7?LBV1I4H69*j5z7pc!{Y9xoQwEVa5|}xlXd*eKgTAb~ z4J2EA9djzK!Tvxn=oNP!v6&ZfK%%!H4s9e!4MDoz7;&mg{2|mdmRZ*#<|ypQ+v~dy zV_2Cl#F?th5eR1(7q8mCgICWgeZ?iTqFh}%gmv__1O}JBr5zP)x+Z5S72>^=hzS+u z7j7rXZZO$lA*%189#t3}V;)`p^wm&Y8E+;UX&?Qn`)e4Jc>E636yIhGc#)w%ex%Ei zvcZ!GT<2AN&>H02GT4ozB6TkYA*Sk%0FGp4iJ4MG7%uQ^6znR8Azu9ETX%f?rKQm<_{gvdg;ik=NSw~GVr_y7n5xIOz#Lj`XvAIS@7 z`YKw{er#R-KcCmMQGBPOD_ zfQp?cQ32el%Jo)K3iv}g_>_k6);9lcuOb=WLHi9`+l3V0cQoM`T1bXmo|X11j&7$a zGlxZ)t0C)x&+`S|*9l3y5?8@ePbYJ_;Ec&j7p>XWNwszXH)z$Ek-hdND7XmsP_Di5 z)g%)VTD+76uF4QZM!aR*3rN!=Z2qt*k4i#j3PRJr@Y4AhZa&LCO#MYcBC?WZLfU4m zNXIHxH{Zod*f{v#LfXVUsre9TzaIM~unCEqeAPA1b6o)LSx8VbbuJC>B^zoFO=m@e z6XL}tV6T(e$2_x>$wRB_NT($s+7h6bG7`d%Jn&rlAyZxCydz_lm}&+1I3w))kA8>_T^w=MYgB3dr@~n{&yD^#WQB$)uotL zS5FG#J46zar}TsFa0A83lZb1=u>srFr--l}Z~@#Ua?>$g))CpTtEe^k$Eig7)92T= za;yn!GmZk)7v4vJ)2`?Mf4@{Z{wI40Hj$uWf7#LvHfw?UT4r*+B%X^=UtFz}9KC^~ z^nQefRge(F!Jw;9n#om0=R(T4h3gPg>!EAioRf(0MG>~MRj`xJ+`5N?nd0%wxX{V7`9%MF_yzlt9LCVPxzO5UEz*vL`p&AGp8ySWDV!wl zp25a_Ox3y9n@LK`AxySk@sq=`IW;8wYOZ8$@hU>&sWX@O&%S%&h=VO$+=lAWz5pap z7G)%QaCv(r7XV)`fUCM_eIDefR<{hlQhMt{2GZFn)*WH?@haX*JEI-yf6-XAFOT## zebxdTV4eh?E0pmEBj=YC&M5GB-^3FR4fM7b1Z=F_YVg8DyL@3$X03z;mznt$nJ%Np zwA*TjaIt5UFiPy3v_tg!d7L~oEL@8vrz<$GaB-21(!c{XjVRm}p6^C}%*B-D&i^8h zg$QdK!foz4MIy%-gi;PEKmV+wrSQM`RZZFi@WO*aK!nvE6xMpHSGNcvY9ah3+%oD6 zlLEwjuJ@O4A8|i{!Np~Dl<78e2)B3a3&g;r>vCKMs+J|*T>t8bPT5rkFJe$WGul6P zTXE$N@69Kkkqcx&!7kXpLRTctr?Y8y%QZstJ|7!P--#KpU)tAV%5}XYz6k0lSZ1%V z%B2X|)W4yoZTN)Fe2hN8J5@crT8ly8^5awXou>X3K_yXSi zN%cMxq>I5`0EMXwnzL2?+1~!TcSvXCXenIc)>av ziEPOS}Z&oJG zG82U9<$1tK+B#Y0zhW02jCehAk`4^4S_xrOdz^J6>Ivh zKSAK1DY7yOz8e;iTC#g8G%zO@oj)9iDr!r*$T1c&u>oxLp7e}h4Q>~J7S;sw5D&)n z+WuQxY5Dqc;o_nM@YJ!UwQY@_)jA)gYRnnqiAu01C@Th{FBUc-*gf`A>!d(ZS+B-C z%+wKI5v~>dX5*3BZ1O=TfKfNejqGH^cD#l6o0yCD@d9Fx`bM`jn(6?qrCpJqp~b|> zUb&D;(QTK1978!>$6GqZ!|Z;pZZ>ZAN7n6;>iP|NG;VdTnD=kNn?>{LO79;%B{ zH!O&>6Ise;gp?mLt#(;?;ZWQiQ#lf@bt(Hlkd$NIQo`6wq3?d|ebmw)CZ~|fhyPCr z_p#SfIT40J5QM=xDVbzEsjQBtEH$Tmk?peN-yA#@;EHY+ViBE`6M$~rciAOqy+W3pbazu1>P@y@9!# z*v_KG4b+d-^jIZ&j<1#@EisTFj2A=r%S0%-h3k<5cI=zg%pC&XAN&<y@lwQ!|h_rF#Y@64>QkF{tlls6h>+HO^ocxoX7Z+(7k!%1a9=nLY z9{ekbf!pmS8jX+veuxLVK0Ra2do;jb-+Dwo_aU-&>!aPWsZ5Xvs(C>LLvK-4B&N$D zydU4yfS7M}%a3{`RX+~De0_+@)BW#kcFG(WtduE3vn2~L0pBWmGC5(#e_r*EmXuSa zpp>Nal3CiQKq6WVwCwmvQSs;;gx0d*fTQ zDqA6_f*~(E@;=mt{(Q)J+(n{lN(+>X&Z?A(E2llI|JfVvze?X>e0jxEI4H<9=hSm8 z_Ea6p7%Xj0y}_Izf&7D2G-k~UNUqQU>vZn)|mJQFJtdE4a-IO0eGswzMq{2B39GFWE(NJL_`=-0cX>=_5uBa8t&|Y(w!q)yoDz3g8 z5`JwRD`J%`C-sKen08}p-VFuV3ji)*$8#(I6hc~>R|Zgtdb(x$dS0P47&l_rAcp-= zf%6I?3u<{!T{7|$~p&kh=8%4PUi|LCDv1aERJ|b8*tf*ydH~y2+m5 zT4!EZUcnhwJA7w>oN)eKEpc$sfMQo-q}#-TGf^`L32~d7I9|JC1&3{R?lb^&uLqjA zSPR?^Ll0KuMdiRC59=bBXv6#wfU*_$qxc4ni(%&7C;ptvLIwRk1NZ^$d|KJ551M#G zYEMi+Hc(YdXC)%P{aJQH$u`6Q{`d;LejGpd%qHUjK15F7r?!-#aq#@;&A0_t0E8w- zN7dV=GSK|LS;QH@|8!<6^YeA)DiVU;?4|0>SJ{uUvqHm=-PsQ0Ys~QMf8(+r)E&>D zI1iaY_^)hlv_qC1_!F^nd-4tpm=e{ImnMOVp< zlfM$sIK@kF(Qnm)R}nh{+FYBBoUU+h1@T7-&={O&8-|EK`9c#Z3v!ZWteT zWgB-{|5`RKin^ldpk>pR{vollbJ4iKB{oICJh*v8IwKZyVpdJ!;dAEAoCguxrNv=4i`tyxH+_R4C;7-KKHt@9;-?p4i){PetZ0md}HdPJz#I?jEpmic^5vU`m zKefsr1i8?^A!b^2g51KbW{yT`8ZKEYLjJo{xxGpS#~hEE7PmDHsG=ur$#a~*ETXuj zL5n%NO83oFZ|L*(T&l@eHLC9wTYuZiKfS?Y^*qCA$kp+B-U-F)C-12|!^npeM_!q3 ze~lU$4tozrg+0CLv^dI9xF@s4la4HNY}}HV$~tWO(*kg9l;+NH`=Q9^MxTpuBchZ@ zDB|&ia)p!m4OU{s{ONxmKyL%O;6k|6W-gf~LMQ2L=`vGDdc!ZS(SixEQ@%7;Fi^|| zR!wV^5JIrp8mVE9Wf`DAT#+MsCi=U;TFW4?9h6pMe}p(Mef(li|FlJIimAlaxt=7f zVf2jb?X3_@An852c@Vi9`RdN->H>ZVDqLi~*kYZhE@1&crJ77tvq{C*JTN|aj+?qy z+2S~bq3a4aw64jwjS9;aac3I#lj;PC?iwSm3jo8v`M1FqQ&wR%eq@TN?wH?6mK$_T zfW3w4l3jfWV0PCg&BvvK24oaHfOpJVWKk652f#7oTw!F(wrEv-XmF* zacVbB=;?q+2Vz6pz{Ne~GzPGqH5=+Wd2J_Lty;>-LaaPeS-5h8O8j2S9`99yZWi@0;BhrG z$PLRf+M@+IM%&RcI&V|_28N8g2MDO3Tc^9iM^bbtw9y0(A`Frd6=J3sU=)Vd+q|kt zvkP>^``(jC3vKUWXJ@FYObj8SVxD)GK7R?AA@=S}abNPYV(WA3szm73YYCxkZ;fC& z3ih=wUDBu} zKK2}yIC+zO&2#G*P*jI0%A`e$9Lr;$781kU6fV^-vU2EUcS_5iqaXNbg))Z>gr<6? z)K<`M&>0n#1GYb2CXcD2Lr1a*$e%0N+f)W2E8?Vtf`njZ827EN24{^|Sw`L|-m7&K zxC3z9Va7CgE#iw!CMkR#ACS+9<0uJm8cLI#o{7f~GL34^EpOt);lnECc9cSrdax<* zV#W5!0|N&-gnAp`w|~l{KPq6W_YE*;0+s|&yGbqF)svtPkKKaq_E5{@8VUko(UCB6 zVJH`g`z3nm@v99Pq&4W04@`(sqmQo&R8l{i@YbFZo*+BKkz*n>8}hM9)3hfwA$6Yr-<!z_n#_D>Cm}&+&P$z65GGPC@JJu@NkARyGwEyFZxA1!YrDkBXCl5 z{yebbFR&`4eYCfpBbHr|J8U-{k9JP|K<;0Q_t#_RaO44e^DewMQw3KF@~q{M&~W*s zc9LXR>~3mqYckBEK@ULSCN5i@#AFz5QT#;y`+vND0PF3cwr}E4N~N7Wgx`P?sBc@~ z{+AQ9*m?7P+dRfKLoe9c%uVZCExepQy)DqIAJlFo8kIFp`6=Ot5`xrFt%`q0NI!Vg zf;6DD?c>CHZFFh|rN&+KF)H!AO>Y)u3f^le{M+KAMeAdF^wQ4DHAEd@i3k9_s4b2Vb4nZWx+ zZah2kg-f06T=mF@6>{C(pZ8FN&aUfmz`$bM+ScFkI?Oi8?%8q_E4IK)79K?_y}(qI(2J*lmT$p*_pSqj$KSGTg_ z=lg~8$i=31tWy>(g&M*BL`f|{IzeL#u7~JYLd+*;ErZ&mhDf2O#m4Y$Uw`@AAcp{g zh81XOn0FyyA8pf4z#r3I?u!a5d2Ii_0x^3n1_|?9MV^;;B=4#0aLpFXl|qsy7-}&_ z1eJyoL?S&pW~y>%=0vAG?ta2kRwp&qVNsj5e`kc#_icp z(m4H5B)bx*0WyRowC72{V#k6GHG7?s=@%ayzJF zeLU>yf0=JO=VcJVTbFw(W`n0}l3+l(Acgyrp_e{^{J@He->~FO--Nmqd#%u3cIlOl zS6`+@!E0>N5f`f$E=3?VYR{^TCc3t|Kt9s+Ok9DE@EJ!=t;KH^(ph1p zJ6(~I8qU&8y3I(?v5khNd*EwwCxg*!s9l~DX2io`O~}vFeVc3kAoDTj1>z(gWaC&4 zAF2=>EwrwRSNh&^T8CtQZVo*$tZ}6E+>d@FC$5_MJb-F~f4#%U0;vM}$|Hm#@O0mf zV5B3ezp}i@uD7-xWXiMklh-R7ui>bzWmprpDBj==_c40EG|6SNy`H?i{_atavAvZ? zegE`pRHDqO&W_;OdwkLM*oZ+tW$UHrlo%5-e)c2vc_8nt;DdBQtF%2Hl8>x$_=_JT zhg64#CgBv)L8_5FHOdE`#3Y|<&nd#OAZ$O~&Z1=D*SAF-drh`s$yDrj9{-$urd&w1 zbBBA`0J!gbOfQO}=vtl!0hk*ieWZOR8S%8es799;b#7v?EIHw=|BwlQJO4Ipdl<9d z{Q@ja@7MJOQP$k5i1RDzCBsveTv1>(#c@5z++TwOnvJX%EVfMrr^{H*F%m9#fGIL;jQA3KS4ZS&5zsU>$?Hn zl#dVkkvMccfHov#C^wefi9V#~G7w)5Ka0NG5I>3D`8Qwu`UL(rKTk>68GAiQnV#k| zt_LHzRWO=kZtUYkEV%Xa;e;n|3=%*-e2XV0x!M3%gDL!>5E7Z--X4j%CN9+-tf}Mz zy0} zB1P$!;z3j}99SXT%%`71JeGM@i>|GGbzZ`(Ekv|0^M0AG*z7DgXJSs*bMv^v+EDrE3JN4PNQz`_W<6idw-fei%5_ISF8~G_R`=t(daZSQF@(Q>hZbFQ5B>f7tds5)K|*G_*GE63|^R_R$fCVM?aP{R=cP6X9<7 zrdeG`0_z#7@LcN+?9+n9uxU4PP&SNg1tRQB#rOW!M^mkohkr9(W~?InKMyT zhlC3uCxssPx-mR1-G@F4pD+P*-oZh@c(TuOEDw|IuEn=eZ&uVuxDRVk|FR{gKjI$8 z-YV?)AX%i2{I5#nVf^G6UL?r!<^d`v5u!JlPLTH_!z+!sdy4)pd7Dn7=Q4BGMB!bS znJLRC>=aK~GcqRkdO_zbz1&{&B-Y8W5IF8WS@P&m+i+9(oVCPk_K#(DOVI>CQisO8 zBM-n?4Xka&pBMB~5Ty83ZGl5njP+<%baS9)`f5hW$6d`7apor(zV_%9!z0{WWQ8^8 z+b*3P3DnR=*1?R_TebHolC?!xK?Je+lMB{#qU~O%Dzt361+|9#rnaYj@J~SQ{0+ss zFq)@8x9$xG>nQX$4qBEAp&T6maifV=%Z7p#cGz)H_BBa=Kem<%;8Nouy$)q@S+C+> ztC-^V+@giq5;S8c(8sIr#xiJ2tqe_DI|9K)Fl!|s%}GJNgAT>MB*3Vi2GT0|q8ahC z;<3ovTm+(|QD-ipzknbiF{`SiF|!MLTb0}NebE~qsa)Y2Zt(<_Y6-U`C%5&daJlPz zY;}j7%$_!Koc(#;UGJ_NvWpnsW?kenaZ`8}SBQy1^2d(wn=CAWu5pX`4 z)7XpMM{*yElw_J|217iLmOfa_@C6J+gqw{@y=nGmp{QkwT2@nY(w%l!O_`+}-yRMq zL3)j;60=;YG@X~LvuVhOVdnQ`Rowhiti0i>N>hzRU6uHGkWkpD2ZJKhSbI3xPZBEB z+ZP1O&AeD?L55h(3Gi+N5x!L(`F4Da1sCXEB`#cjly&=$VPb<~!_8IAR09QefZme$ zL+yWTQ;L&2S#!uOGqjBQShL@&D=hW2YS$D6#6O9LD%R9=O>ibjDqU?>1+9T%rvd~r z<<>pO8GWr)n5Yb}wp!*xGIi55WS4HGMJmnx4V4XmI661lvun0=U-+vOnQx?g(wgW< z0&8ubYXxzMW4w+C`T_bXB^EfNd38i*GEI}N`c&|{M)j`vf36J%F}*g{5{p|JKq>w0 z0bM>invi#7nly|~h6Gh1w0{!t;(t+mP|{n1e8AGKEOlP;l_D!lj_Q>H7)h`aKl!dj zCH(Hdi)%40h7=pIv6Y(5UT}---RTPQLRE!X;e{i)t{0qgeJ)XAt%GZ@<@_+g4#8IS zonD2_JFJ6+hF&BfUvTJfCneA|*={!j%u$bR7o|>)_6jtm`!PvAzs@h#;-KuXxfG!23W^rEiuYO>Fj}bf zOL*4)_wv>oubx%D#+p-RI@)7(f7i9TD>zf!NpME{5!2CQoiMLZ7|P)^}ZYR)ASV% z$XVSCar1@BkeLI^o60|KI?i^89Iqgo!;ns(`3*35`mU6B5%3is49A3V>;}*5!D53v(}k1US!yM3H^CBlI>Xm7vq9i`|1 zrgB7#E1%L;X8TJt8h(-(^oNq;tADO)4)`U6+Ap!bIkdZUgM#OkZ9wCJqEQM0#gh<& zXo6`HzTf>d2yfj_N>?`5sHeccskRrq{&!U?rRX0SFNX3Sl>POkbcK=q8|ls-Zux02 zMAGKkFr{GI`|oBAAqx6cI06E0MlAQXKWc*~^RbmFr z(hE4YLyXk@JCJ`~E^bBL$zkR!5QzD$e7a$3D|H<|eV zC8m%{$KN9em5XQJ_J@s@oFGh`v6=ysZ~FKpGKUYG(a6Yp6*nJn1_Mk=3x|DJ(tPd;p;Svc-ho&?n)L#2Gn=CP6p~xMyyDe-1A*D#H!A zE0MZpI4>67@j4ymH1tHsOlc;9(YjoKYx@69trMJT8OD8joT3Evj=bVWV^!7>LUpCH z1&f3ZG}|hywD|inX2A8;PdxRoyR=poVAqBL9BbSe=%UG0i47}+!nj_TfL-l*Hwt_5 z8EXd3-sQuCgU#PqwLuHxniM91@3AG8%2$_DeGg7*+w7-qxY`uc0x zF~84N;Ld_#6*DKOeH$+TpgqEYvcYAxWPa&z$oVur0j5?n4iiW<0CR;)ZayLo*B$5L zs3|eVB*G!bSXiEm6VDSI{*sb@M4Ax7PeGb$h_c6ZcNt;eAD!?-D-W;KLF2AjuC3+T z+Vs3DGr;I89=&1mbaOHdNzU6O6ZscmA| C`vC(!oWoV|NSuc3TECsA?1joAK=r? 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

l^%QK~F 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⋙^)vGb=Pm*FTJd=Xcnh=%Bk5 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260603/20260603004002-Config.rsc b/MikroMaster/20260603/20260603004002-Config.rsc new file mode 100644 index 0000000..511794e --- /dev/null +++ b/MikroMaster/20260603/20260603004002-Config.rsc @@ -0,0 +1,3414 @@ +# 2026-06-03 00:40:03 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1500 name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] arp=proxy-arp comment="WAN - Unet" \ + loop-protect=on mtu=1420 name="ether1 - Unet" rx-flow-control=auto \ + tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=28844 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 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 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=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +/interface bridge settings +set use-ip-firewall=yes +/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 \ + max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=dynamic internet-interface-list=Internet \ + 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 wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/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 mdns-repeat-ifaces="ether1 - Unet" servers=\ + 91.192.189.2 verify-doh-cert=yes +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" 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.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage 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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked disabled=yes +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new disabled=yes in-interface="ether1 - Unet" \ + src-address-list=!VDSina +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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes 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" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 fragment=no in-interface="ether1 - Unet" protocol=tcp \ + src-address=!10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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 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 certificate=Root-YE 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 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 package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" 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="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260603/20260603004002-Diff-Config.rsc b/MikroMaster/history/20260603/20260603004002-Diff-Config.rsc new file mode 100644 index 0000000..73d157d --- /dev/null +++ b/MikroMaster/history/20260603/20260603004002-Diff-Config.rsc @@ -0,0 +1,38 @@ +9,11c9,10 +< set [ find default-name=ether1 ] arp=proxy-arp comment="WAN - Unet" \ +< loop-protect=on mtu=1420 name="ether1 - Unet" rx-flow-control=auto \ +< tx-flow-control=auto +--- +> set [ find default-name=ether1 ] arp=disabled comment="WAN - Unet" name=\ +> "ether1 - Unet" +25c24 +< add listen-port=28844 mtu=1420 name=WG +--- +> add listen-port=13231 mtu=1280 name=WG +2424c2423 +< set detect-interface-list=dynamic internet-interface-list=Internet \ +--- +> set detect-interface-list=static internet-interface-list=WAN \ +2432,2434c2431,2433 +< add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ +< endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ +< MikroVados persistent-keepalive=25s public-key=\ +--- +> 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=25s public-key=\ +2441c2440 +< add address=10.8.0.2 interface=WG network=10.8.0.0 +--- +> add address=10.8.0.2/24 interface=WG network=10.8.0.0 +2504,2505c2503 +< doh-max-server-connections=20 mdns-repeat-ifaces="ether1 - Unet" servers=\ +< 91.192.189.2 verify-doh-cert=yes +--- +> doh-max-server-connections=20 verify-doh-cert=yes +3312,3313c3310,3311 +< 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 +--- +> add check-gateway=arp disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ +> 146.120.64.209 routing-table=main scope=30 target-scope=10 -- 2.52.0