From aab2703f1aaaaf9670450ed6551d89b9fe1cad1c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 15:01:02 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 15:01:02. --- .../20260504/20260504150002-Binary.backup | Bin 0 -> 262659 bytes .../20260504/20260504150002-Config.rsc | 4311 +++++++++++++++++ .../20260504/20260504150002-Diff-Config.rsc | 18 + 3 files changed, 4329 insertions(+) create mode 100644 MikroMaster/20260504/20260504150002-Binary.backup create mode 100644 MikroMaster/20260504/20260504150002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504150002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504150002-Binary.backup b/MikroMaster/20260504/20260504150002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..91e2d59f7aeade9e29fd4a776e3b3fe425cb8047 GIT binary patch literal 262659 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≥^F8eiJl)nl;12QKr#bJ%m5ja z%$z{;E49dFSwNjte8ENfc#Mp!py-G1{;*AUG* zy$o1pniWB`O!8=+C$&_REG!gPmM=7wvq^*;-7em{1pd}0)xo;#ic2q}h{Yp94r6~G<2X{(?eoIFu!X^`kNLv#VENnzl-oc~H&*oy+ zKY0*tsC1=36&ZHJ#$i0;uXymc`=PrY_VJj?LY;||bIT>gmDz;~=*v9^Ivhe|czJE5 z`4vKOY#r#Q(DZ@tcfw*6FHHlrZ*3pw1<@-|5(PE(eh_I^9D-bN1d^aobQwZl=w`p* zH`WG!Yp{pwTd&#WC@eWv-vaQh2MwR}DoXPFwPfJ`f}SrgcIR-Mr*iNUNnOzc1tUr3 zY~b8g(|8*;N$yWoXwrJ{B67AM_Y1uhwuSXBOb1Y|j7@Y%;pb>rm&@C~pe%}uCe5Jb}7p>2(fk6($+h!RpYITSpS%C+={0KQFhyY9;8OmDBOFH7**pteo) z1HI#9-WI@z2_~mIUG+#4IOUm1*3e3)=v8e#Mp-eR>4)!-Ke<1$GN`i2mZK5?MOh9WcO?wydoZNH0(`&dps(c5=$Cu`Z=mW`yH~@UdKLpk)vZ!FJ@eLZaL7q>xj@ z;t_YCJedg463z)&-U2u319Ph;+Y=T#e0%)?*Fv}3A{Pc`TL|_^I>OC9YdDMT;&)G< z6VL!G2whObT3yUnjd-L1!{f*X+im*)9D!FR_Qh|6bn42m*`$tf6ilR4c6AN%6k5r$ zz0$z>85>~7dShJRwWmE_(gJce?@wH4EUG)D?^iPVt4EcDY8u2y5>)3s8$X^yvsXM@6U@zT*>|*>3LOVpI%@F4(&C12Kt8He0XcOO|~%~K|hu( zHktkyjNu4#t$#+#@PzofS)mNyYDWqyU*-xvFT7}NoaxR4^Dvb9vX>oe6;VxY!Xqy% z>j*g}l5k$UP3lR=*;r`*gw^;TsU|_`%fFSA>nEammN=alzC3hKzAWi|zsIZc$UuYi zDpc-a9S*cGxD@7f`*cwNqZ|wY!GHyAC(k>d9^K`Z&J8~Yq|jCRR+7#g1O)TUbVRr4 zOwq=Vv`H~I(m}$-CE2l`zJtGF1xNseyk53eCCuxR^xPT%&phDuUZ6N7qe1F*VDBcR zoAh-zNkT}}H6#$}Og1ipKjt~#W+|T*3bp~`#R2Pa4;|J7Z+sedH1J}Hkl6$9X%xj+ zS3X)U6uApddS#{p%a_y*D{IZNlWS`79-2kn}J9OTo zk~Fd>efZb>{Nkx(%Xq32T2%jOI0aE|ci6>@X&3e^B^J|@Yc(ywnML3VmQ%gRb(b2(b* z05@?jZBe*uDg<)i7^$h!p}Rqd@q&);vYOPgO)&d?v~}E0hHJ$pLl)6Zt%BvE5eQK8 z&YN2P!DK={71$mXp8OH)xEypzNCsP97_1sKCAkum)v>6&wvGD9btmMXO_NsqGZhKj zwFUR2CCF|*clze(@pO}bI;v0kXspJJC_4de%zBD*Qoa2iY5czbeULRkJ^xe>q7w-2 zEG|Q@31P^t?0k#~HVv*=Ow()u_KOeyTx58ONFdwl4)-=#LEbt5IxNxusnG9=Q#Fgj zvnhHEd6=sk8)DWNyoIc{o)!t}mzvHx`uRu%_L5R4`WLbe+61lC*1`v01pzug!Kz6) z^w#R9H3^?cIqgwLR7MXO?m0?(H=lm0QT>EaElC)WVYHybU=r;}&T!g<%l5m290IAC zw|s?EjRj`R+BQ!nBcDZ2yY(7hCqhz=O}8@h?PT%m-^{W>fh_+QdD1$2`gLvb?H#30 zOq$t*7y5K_i53xe!L`o2SMVYJn}71=W4tKP@W^S+90*@bZ!$A8*W)6c1|m zGltZf56dT zRaqZ}`=$;ihmy8}`XX17HHKr48*@`qtfrt|3Q0TiX~Qu$=H;N6vmtw8H7%<3FEVdN zTFG1D*hIf|Rfa@)a645#bCq<)^k7|XSewqD9<-a+9=c?5jmzp{S+{P;K5Fa1o=w*a z_bl8r!!zVo9rV9Go|S=mP@q0aP3`TWN|G?y#zl>y@%`H3D!ukvd1R!jNOMClGs-(o$M+jIQr#|FsJ*5%Q&29^%ftB5%?1|)Q?MxLAw%B(R?@yYsoz?H4 z)f}^a$3U&z^5|RB@59Uk2u6#=IJWCT%_X>O8bpDZ*Ant-)IiMr$zUEtYrzMaAV|SivcuDo6VoeP=%?A;3E)b6F$jM>)!sl?(i+kY z;vYdj_#p^DnZPVu-u1`2?ud08rh)y{a*sqnz;3OfkRHM8pOu)Xz2IL!-xBTo->-GR zI$Ul~B$80=k0Dz|4_{Yd@YxkJ2)P~u-+pK(EY_!IpHHAI49QMd?vGgH9D8Ve%nMju zE**vpv2l$+usF0t+0IQY>uB&FA_(qD=oquZA(%nkqsYbO!GZb+Nxew*XtLUl8Bqe#t!^SNy`O`{^{eu09NS=Pc74-xJHc=0i!IuNd$t(o%!T_#gVh)q3N?+k93XRiN&kGyULG!KC zLQeuv_MC**Qm9!&@rA(E&nTXBmlMq27gZR%Tam46F$cnZ@E1+|?KWlh6R|}RQFj7s z7O*4CNW7exvqfhdS3)eUwLwNr)*^l$dRXFb+IAoUVi(uATp*IuJPq8C=s$tzTcpt zA>foO-Z7W}#i!-9k~(-ak|n&OSOccAw)pp-a1~RAG7RbCABNO_qt5Q{&(NwS`yCcN z`#QvHu0E{-(DJEQ(@uOBp@QCWUr};O8r5H3sCR=L4}YxFMB%ev&nYmu{7qT?-GTTA z8&s0V?!{)y4Cz;pUGvj&mw7H3lnGYxxGcd#&7J5NF87@EzQd87V|9x0+ZUD6{6>J2T5^Pj z|2wt0jY)!i#)A7_#Wc5nET);iL_>5Nx!>PYUiu_`9Lp5MtJd8rCW6^@p*lPsFp{1J zFKMkvh@K}@zElSG6H7$&;3^4LSDiVx={+g>R+hc&t|5`^HS8M&jk6rGLRgwoVf#38 zW%osI710g(^@#sp4ZvK8_shV>NBm38qkSZvDmkpwgPA;}DUBPl=!2)m?%9{U;9`>u zie%nxt{nAm;OO{XaVU zHOn~yY&|&VL677qf>lxWAfYQL0UbwBCc~{J8Fl=5)%;okPt1XSh>+Cg7G~?o0V#%J ztu|H^bWl4pnt~Zf1Q_7T5!$fUFYFXOAI2G|XVNCZGPf@E*o^V1S~@1|59EFd$K0dx zy*kvk9O-tKQgW#G6ZUnr;Be`D`ktqb06ml6_c^W)c8=qkJ$K+<>Vy>+N435SdVm*Y zbdCo53S5}{2#L9URdkSZ6GK7HE5#qJtW5rW6GF+5@dmb8zzqX#zFTgjJ*gsi$yt41 zF$|8inTcRh7!!2>$nb2Y#UojB6iWXBpjK&Q7hGxmzMJb*4M{@OE(D>i4)(m0&L!P0 zMOm7aAYD0A_?;*e@e`taQl1h&S~GHj^3>Dfyh8?Z7TuD!zG|P31?+ykc8k)4 z1;G-0-3UZpsuuJp`-;}81Wh)gha+y@LkLQx82nU1FFh6V^V$JP866=p-Dmr?HZyQ){15K)7kic&X1%WJ+=6I>hN#I_flW>i_*mQnz zoefC^ob}!iEOln#1OP?J`9l~j8juAF3-@62@u@r}@|>5z4tMqHbLu)dna`HM{XH*x zPn#Ak0u$u4TtmAiZX9mB4tpRtBCYcFj#F#zPe+A-fOiqMt}IcrtUr*HYawMw!g=Y; z;s1XL)|-TuwGokq4V22qqQ`P2DAU3_Sv8WyTw%!)22V#zV@O?*fxm~p!YA#-v2^KY z#)Y^?6{wAlzzf|k)jhJ!;-4WqOK3n^JRHM^`i)JmC#uA*wPceYrsv}`8wxX*R8`~> zHL{r~l;NegVI1=&((W^mEbEnNvT*5NF`@@C6mkBbBKuzna$PLIQhPrnOr9jzZ?vLz z2a*_ClhJ0ZSg~=!0Or87#bT1V|D7no52)EDJUX+xwdli3>}$FXm?BPlcwT1@4wlKW z8JK;QHz1f|)Pg7dlzzgXIfU&vQ{l$Uf-laEwvW*6h9SQK3bHy97JUMjDY(2-z10%W zH$fmj|HKFQ z-E@+EpF&A#9)FGD;C@} z*TG*|3E-mn41hq1N_S7q!UlcZnQ?@gWoS!wN_iP{1c9Q=u+jj1(708SHynkfk-oZ_ z1A5e9fLzUx_E-_dTf9z@(odu^DWo3I6NGWq)UXYLQJVtKn#8>-`jVP5mJpQW99P3! zAL9#6p4y#Y{r4 zh5MT3!N+TiR1h=?Bin+*iDp3I*Afk7SV%NH02)NWJr77XX?^w&!xe0RquJVRKDZFM z9}9}BmE$to(|Bat&3R3%Sa&Xp1bB|_3Kxw@oed&2qbld<+1=<5C#@7I0I};Sv~}Lz zI+&JGoK4v64$L+LXCTxD2JB;T)FoxQQ?&3W-vAmT_yE2)xbB3_qD7_|*PGOP-9Kl} zAC!kOClNInC_ZLqBR2>gel`Or6DV_QFDbqyIU85}EvcfsR{-DfcJ)z0|BjMb|8lxX zBrM(v(tjrf-CYZ*`LNvTgmBsqTRhn`>qK0o)LOlX@99nlu2WDv?yb2QU%QiBZO!SN zHoqytrN2izAA{4rc?G{9h!Vj|YLAHExrx!LtQHC*Y-nbO#&*sZq3CGZ?fokKk-$g$`hLS ze1fZGn?nd6d=8KOv23fWS#^i%CAc0ffbjg}BX;-Gs=@Rat-E0Sl;dc6tpjaG5@HzE zVsDZR0X4JDWu61FG5nt?Ght(=T9xPJvq19&BNa`jG&M<1Xd){jfkNfePO=SsR+DK6 zqSbI3TTK3A;kMAi!~;Ytjn%30=MKr7dYQp4Zyw~tsroL6Tuh3sf!XM8qGS#xeb?np zHpaVJnPH62I5Lo%f!r>^XiKz*}EZ(hV^3GmH8VGR;CQV9M8oTmCiEg@b4 zXcyh6M;ZUZ?}7p~`Q;@aA{UG+%aMmxw5Iw@#8l)1fYeiZXC0!5&>>sW!rkAN9U2e`{uRCq0>z1=JlS>Hg(oUQG+*Nq zg1~VdXP;=k&WQZ;BgyU3gr5KPC&ux6>e<(D_XGR2=Uk`ao?K`$AXR|&%ec9l!8|BRtCh=NXTZ5u9YSn zbVxCDU6WEQSsPPEbLrxI$14*6)^ z(KoeVG{Y=Z`0&yeW9!MJC<8rmi0}>OSZE6*m3oxq_9LY9a+0R`yx1^9EB6qNM=O?? zFN$vN(pmRNU84c4@4$7|T6}@K`Ep0I;ze zxm8IN*=a#b<=yRY)5XFq`|LA_R#+3n>i`TF<%s!+-!>Q)i{19=KmZmx*?-F0ZOr@B z(Z?;}$vq2*4su;dEfub?zZ;|T;)Bgi*2m69dZNF=FP|QYs)`(ULxwr26=MAQWuCdZ zreyJLM$j>~XlsiPK*=n@KA?KC&93Z|uD7Md$(;JH#oL%BeP+!aH_hUddjo`zI zYYXR<$T>Ki9@?S(q}pkSd_)c_B0Ucs3XEovlQZ8%U`M=8O?@6SD@^M) zot}8DF|FZm%!h;vA{z6I5FG!$2%HNYy^j!zE?yr35s~3x#!t7l*|;S%dC_Z$Wnm{Hv4{{PvnF2S}pOz0Y&>!?8vMP%7GBTsdp)G59_?VQRzR)Uw!-V+ZtVm>)KXB8# z6Kka}p?_bK3&&A?CoO^E-yQUL?jErPBffEK6Nx}r*<(903Nq zNq+1|7{E@*xIJZU&Yskzmgy?0$6Gv})JZ{5>pLfvDfG|elm=%)`0OWNkdt8+e=BUn zDF^AH!^R~B_%bNE5<;xD|1~LUlDD3$qg_^ePabFOcX)Etj%4&1R~%yyE=Wng;NrQ(C?K* z+kU_U1SIl+u}cQNKCSc(DFkT59CLlWze0!o{N2JrG<#r|{+8;Q>cKnfN9)pk-_IFe zrhmPvFp<2aquBUMhs|V9CW+8q!j%E-RU~JQLE9?s7iM|6^Lha{4_LC6B;E#02fo5n z1?{^g=e|M&j9evb1Bs670fY6v+{Ik^m2#;%+RO4DgjW#n*HT*tS)Msqz7l*rN9`UM3_~nUo1ymDxdy$Y)V%Zd}m+b33h$C!}|Cz1*qv#e$Q1{b;U_LgxTcsJkWk* zrggYne>EuJ#h`E>p>4|ip`8_Xa2R>|eqaKKXM&ssTF&dQm%u{{0tj)ztCy{R!z2mr zQYCGffxrA@?0$00YQ5-2x)Jg2050+Z8nT(%JZlyt_&1T;rwwIL`{$Cr7xV3i!_fv^ zOVu|yA$a=VBfVUo4;0cr4~ZxzjaCB?sH}1A8+}4_qK$sTy0g>c)r#()8EQmF0IDD} zQ=$q(01W6x_G8%QL`8daie*ZSFKnH+O z^PBWQbH&zkUiIxNsqpw5y`NJ|ky`2Q8XVQRcVPHh9kZg%1JQE!)pYQ=+kyOK#h=EhfFlyDzvv1|s|q!KG+ z{d=@H1>Ac9T`VY{w-FmzJYUAA^0W-ZRezzU>bE@@=#*| z1^-8IRNj3DSh!5?&DnRmyj#VEIgGRDZMRAdNCT0ME4FO@r~GaOpM_&%{9v1an-q3x z3EdsG50EUVroV<+rlU<+}Wi7Z`f8_Ii`Ma&}ojA=?OYXzN6n4Lc z+o(?RZ*}f>V(>SCsOr0WQqUc~hhMh~nww*#>*tj0V4+`S%{L3?dj;6rpwGVOx_wd`txu-$XsRUUs-7`nf= z+)b7oFMNc4*Tb9@JrG0`N^H+2}r%ia}>0gWi+@ znCY>kJ4E<1JL+d_nQE{_P5`&@{^<=>L8+O|FYiOsoHqvMD>G_trb!-G`}rr&FDc60 zZw|Qw!yq1FJshH0)k8!&t-0@B>In>#_|2sQqz!43q&5u?SN{=2o(_U8OzjqMJq#@A(W<-G;^c01!&_cF<@b-Hj0y6zct?6 z*mtZ|CcaS1aAqS^LQ)oYs~DcuLWb}GV2jwQ0SX0A3j8t&u5&HV=n-RUWNKZ`jlA@6|AHEaWW4XKv8z9Y6X2cIifVJFOt z@;D=eiU<-DvAOr}wxJXr2R;73&l>J&Z5pZQz$iG>>6oO>D%1Nwlw&#Wa({UxDU!;K23CThqR; z_yM+Grf|)0P`W#_MGssR)IBXq_^g|<#Ua+iSn#71GkTWM2f#(k^V?Z%c5dy&Fv9<@ z${Pv~y+`n0q^Sp!bTSPJtnf%1NSJETLCwzO19R2?NP{wvxW8SKw~n!x!Acf=qoUAL zKZC#FS{py9-wkMF;*OlPV=X5#!S8j$_K_q|b&bPwu;}lxkmRfobj-$!Gk}f1YL3UY zr{Q#;eL8JceRG!LX)W0hNn1+H}x-8T8}qX;|Ca7-)^-?EfOplKHuJ2WDoxL}fI2jwUhISd6?@)^5n#sn_WT(P_}>^P(3L3 zpl}7G$dIxytAXNQr!PSwjcJ@_mG}~!QBe~A_Neqq`~N6+3aWi(G>bWPAMZ6m$n3_z z_U(ogNquJHK;?Yfk0yBJUb$~sH^q8^l+@5Aw#q6W${*anlDAV9MPKP(=$5Q+4jG&% z)Tn(E+U=0CL`P9Kk5pxpqw9Q{IQtUI2BYCs#X^Lc9gkHjZAi;ElV?tfh>VIM{`Ae0 zXAlMr5RSvz{k@8qPB;8Gl1jL89?Kv&i|?7D;u`oz%2F#v#C?TzoyjICC zM-$Xg%0BXN0|-M970|ML9gH~gZ`7>x<14%1&(*TEkV>WsxB>*PaiY1pkFSzCMNdCf z`@OyI3JH98j&x{40onoyXa1>ItV#30@;DwX z4Z`iI0t4p7)#s&LmZ?^+N_a~+hm*B$*oLs!D-Tha2;0#@?wp_SUN|lz4cw| zDG-5{S}ijH#>Zgl+UYeivQ68Sv*4dNNe_AfJ`~-CLshgYkFA9haPqy}c(pP0dUliB zx>GO1Dno7SVP?QprHV>z%I2$2biR>Rcq(m9Bryk#hU3`@G`=-+wvet70LlEmoy`y% zz#p5pZu_)&D%t;2HQN{CzxvlBx;$I6n8f7rB0Hz%Cr)SIB%Ud;HA@}vRxmuGmT4k>Cb9i=dYcISvFlAXPa}%)fbsc-{egOYJ0Kf$L zAKIWa)t>EG5y$@Dkl=RN*${JuO<3afQUU3DH2F|yWzS4Nmb-41Z>p$;%|btoK?^>R z4Z4sb;Ib1U5>&#B-nd8sXO_6gT-h-V1rWm8`t3gyV5R+x*1Xlf%OUtiAlMnN4X>P3tV;5%_# zRPFOFi`AE`18+SG*=&shE>0 zo??W5ZAmqf;F^`WmUYF0&I~>TNnxBo{r0txxCef3Q)nQ`vX8g6JRnfGNf$0m-WOB| zHm`qR(>XU~+}2hgH816nJ`8^Mmn|*;9+c|^u1P@G4Zm?^#3cq)VK=UTtoj)%25Ae_ zlEjM7(-$~%f*Uz}2`c^amt#SUzV6Vxx9>~<5nf*kK+P@D%bg%0Kqqf-Dbx}^T94v zRdKrZ?Z6Fyq26|lICfGb*Kn2L1$np$m=m=V*(H*Df{SpeG)6mBxORX*o4qxAN@*KL zDCaUc)P?iOS7#c#Gt+->rWF$3pCv+i{5pQ7P=B}G<9i|yibEE^ z(5POtbJq{RTjcOF{to>_y7_pmqT-)Yaf(HFXNY>G;M77yeYYCgqsXYywe$)aNYiVS zLAD@QWX1xZ5eNBainR{Q(<2IHwN;)6ZrI3rXC#G$hWR{9n!Cn=H6yA9j!=B zbGU?u?NpAlmT2&!?eytj#o&@`dePhJY^3ozKHhbo>WTUVZ8F!oGbP_AVl&kP5*t%c zn|?WKG~|<}!eS&l1S9k<`|!`lwv{4bBDV%gLiSk55n_`Magj*E&#V^+qGd zRB&y)K(Svi*cIQ{v3YR^iY!h8Bm7{@#Qi1P52(9P>a77{9`;xiEz<;^%d06nP7B;7+nNH;-mHcL6S*v{xI>&{Z9 zcI{3{QG$sqH5Uf+uL54LiqK%5lpnh(DF(Yhe4E^15zck#>wdh3XNo5*5*&QuXI;d|x!=L3>QKlK}JAAF5&z)+@h_wgA#=;g{Bc};NjaAZaDBGm^Hovpz z=FX42m!RF3-`q2E$0RV-v+sNcBSx9uUCMs(30Lu?(BqyBe5hSXyTt;2L-0 z{TI&QdJsKHPk7T={a|Ao ztIdC)$e{K4B)*UO+PpZ*!ulq=dvI6|^vg+`6>9AC!jW8S0hbjhK3BVX#wSnCFq~w1 zuSy{dTtZJPh)TAL;yMu(Nwv4Au>qQ>UfYL>HvDnk*nZ;-SZ~MQ?cDzF$-hIK ztd8w&^YK=wIkC(k8jiP?TZ;QKmU;xW zc4+Fh*(FM;dZk5<9h%XLoo9FD%WZkMkF)IJn+MzV(>V13#UU6}M@9;=t7QK@`-VX{ zh#C;{Hr~{};)0k%D#U*O38QS#or~KZb?BkdZuz4u8qesR>UaS z`}O5ZvdkXcKZK2F=Hn0$Rx^2*nj=iAPo6OVnNUdr5bo9Xp+KLC2f=>v#w-1s+$;Pt zYFBnhEyX58z8cZ8NzNiP-w5K3@fcHxYU7A&+QGVCZ#n3jV#5NG_93Z5o+-XUDdcY# zwap~mW{H^3VpYn}7o||+{>-@Wo<_3Sc=pmUDE4m_XqGartvH7W`%B5v$@CGwvLsH$ z*T}N&04)sDqf_tLYjCu$aNP_$fEsj1)kE_anNT}5$nLQbgb#~nqpD4Sp*g`ff^jm6 zISgY%h?Iax)DnjN-@me6gP1hT{N`dCquV1JQ3jTMNb+QPEDTPHc=h2L1X`+XvKmDD zy;aAi$U4d#LSWP<`(`M>?;)qt6?akbsVG952^yry{OB>LP^&PUZC;k}%BRuWBAqT% z?fwP-WO2D>kmdPt%Uh7QWT;I$_K?13GdnPsVN|x_+gkpFhLgO(RoJyrG;NESx)Aji zP;l{nOwh-HAU8gNV&fni(*MU9D>lN_ZjhfV^9Fyh>3cs)3N$Sg- z+Q85%f76-yxi7cHV{oOij8UG~+_-CSqK~CzMOD4|001$q3($fbnoT z-68}xS>-yMg+hfC<=x4XCvAchT$A)7eXftbMJ~V88}V6h6{RVQ)4>jRIdW|~G}9J| z;XUy|ViB2BWuAe2OZZHD)l5^T!(6#2 znwSa1L%$2>!QcHE{0d(E5kBOdAzJHx(Bu-WQs@FZ>`c+|{UWo6Re;$G+LkWF zl@TKJdz$;M#rT$jyJTP5jr;ay)ifZjYI$Q~-A)nyUJtd}%=i?D{f3E5@P~(N5T}e( zC5bMPm3BmR22_6WdC9vK+RbK%aHZ-K#ju02Kbw0@JAVSk=<#Nl8Tgxt4lBGN2o$i@ z8Gzoq4aa8mDu6v}c@o-{Iz3jT|4Y#HzM0jEA|7q7@Ob?#m>VZgL&84;N8rMh7ngTG zDjqdG#1~5jbX8BTGDCWgI1IxGkYd5RF}Ik3NiNqSppQ7sPjjV;K@&{F5M-yU&Yy+3 z1x9HKBtE_hzcAaxj#Q-%C;gD0Uc~sanE5MNHylzP5q{_R2VfU`T2G{QzBaBOk_%P> zjVNA`jE;6rPnacm13|?>mjq-(*pohgxz%TqClgzrQ2mGsU~~%Lj1G!7MiF|3=1T5Gu+3 zP*l1>`edT-bg>cqyfwT+7GbXj$wtXq=0RRDjUfJ9;$0l}2b04>_#$C*|3ol=ORrbhX2;Z_^T zV#Vk6XedkJ2Ol?|pnJgf8yT@vv9Xv*Vi~GnN(;AzWmlY!|6u5Fv$sS2OeMo#V&EjP zZ1~fMYN5*pQ(4t0^HG9XjsUTXDuJq#Ew;J?-za^hYv&;fPG@RD`EvHzI+>il|hdDH+uEJ10C~ zVqN$U^VpA{Oyy${pVBswb`{ua^ZEE?U;Vd><6j_M<$b-4McD77d z_7;qiu$Z>aeVqZgDcl@qbI!mHLjp1O50!`pdQ&`$>J^kC2UlCm0L=!QQf;2RS2jE# zIo5Ki(H>m$ZIF_1_D_zJ4##;{wW10ZFW&;Md3L&&=K8?roQnCt3HkNHqAsMOQ_U^? z{9Ni(+#}w&*GkYYpK|}hZfVJAmm5sdp@8rD2X)r6(^-uJ_U?W9%sR~sj-(zF3A-J` zTAQf&t?u}_b=_g4#n~E8$Jr_5uoA&?*2fXjDUE`;>3D@<{{AP`J~`x6yxnX!RZ=Y~!o z>So?pu^9k~Zkk#fA>9E`ttTSW82cm%Cdc;%Me)wv3ggo6uQNO$(*f!v8DkGqTjYLml?NTX6;KEBb7KeDFP~T*r9cK3BwN@AG^Aa+}gKD{8*)c z?D3KA4TeTyxW+0->MG`EtH5;rD96Rc$RSaxNc4+pBWQRqxz&>!u5Q=m`)Gpf7k$>* z%GrAQ?P;tdria@Z>fX*U&*RcXKC^=@w(s=kwW-PS9DW0JxG@@G22X;SI1T+@#=}D-^Emm-z??bg@ zoke>&gJ@m(J=Rl>!%8&37_Nu%pD4- zoaF)E9>KMN6i*?W>>(p4!PIv_8Y>x)n3BB#yiMzA9n`G{3)&-zvZ@xqR-DLJB6pE@ zL653`X3wpRq^WgYQ5QzWM+V1)(%JYG!o#GZ4q-19d^Pu=}Q&fK8 zhd6ewX%oE)8rPTl$AK-&*kGwgxb`sFlV5J89ZJ{X6g8`@ROg3>EM`U5W+Z)sA`LXb z&?x!w21+>pJQ^&>HDf+Dm{BmfawJBjGfAfOR;}|`cXHZST}X^LY*$DhrE_fX$E|8( z#At$_<-uY={~!`6Xp%+jgxKra5-M-f!x3(%E_5@cu$7>Y8`R+t%?x%G-0Y=%A(>`| z<5Cd#p&DQvr?;kU)fejR!~|S%jv7K{rjg?5fpC*6P@%NiF6UjRw}tMaF%CV7dimFQBTgpDdyh~I)PPf&y ze%hDCs~ICYfU@*=I~U(9mNLDUf3=)IYAi9WeYR%aUUgOaRD`{>Rwr)Gt|0Hul6v)g zT0C-rD z-L8&cK{V>8TE{`qsG(csf#pL{)rqY|rYBQ)f$0Za!2nFkB>@(B9SE4cKr9B@M(CPT z(SjF>_pS0y2p;vopBR1&`E2t)r%)i~L~NvhNvh9gX;F(dPMamE4+?I6m6mIEA=nwPb+Y<$@rREqV6V_(f z`_7=~K4Rh=?8!*dvA+?Gv;ALh_VMewiNXH&CJ{qyS?DKwG z&=!}+8pIP5@cBfyY|FK2*{_>nVHGAGBuY)B0O$Jnx=Dk((hr8U>G=m`Tla>V2*H;G z7!}e`f@sb=0kw{I7hpZA1)p=kPcyiL5jxtEPsH~SPhV!h&fZuyxR zy2Z~mgpK@Dx-KHX0WMt7=47ph&~=>8JHVSZjA{d_{&j;uj}}n2rhn%CW$cgDl&4OO z8hkm%I}F`sed9k+QFh(;$9>*CHFQlxzu(8^C@G;Db7=52ecSn`vCF)VImX<#rISUl zWlwxiqd7uQ?xW9F_7sYYmH~wss}$>`PY@-rD#BEtibIl&SNB% zEba8ImQqQWwM?4YkzUfU+c_hz@bSjjQ1QWrWFB!KE~xQUjhUO&cqJDNHfH_X_^33v zX7Y8z(b6;*eUL}@kIX0f)gTv4N=W?I_#|bm%FN8F+zc`NEjwEY^a|C)guRfVWXsg0 zG0p=xiz9Zs%M~8wc;2`oN)WT`XlbFQ^to(iIzy7B!!OJ~Chy;0nP(sSW}Z7oHn!frEoS}12{EBzJK(HfO&$xmG;bo= zB+N)oRWqJkC~PD+t#$~SI;~LW80wYRdoqni*mk$>Os0eXht|eQeS>PU7YQEsd zOM{#eO!H%MxX@Dd2Xg{1yY4i2KnSgv3dAabC4sF|aU2*n&&9#jx)SK}`2N|ufI_-OwP)?fYsPquD0YH4*Z3mfjUZySLSVZS{(T{1OcB^A?md*7{MAC%v<=1pcs9| z5}s0hxMG_geu79S`VIL?A2&_4&W%XM*{AsdT`0Xa3tml|JE2Kr9c5q@bE z>W%|=ua%{Sg zJp*zjOhAbOtS4o1YM>L=uB~1ljSh8VtlUw3=@Q`*g-8G+{ZhrS1X_RB$|wBv*#LDh zHCAC#`vA&kr3o%@2w#LAzK^YyoPXbd7ne=QCa@on>=lZ{ z1uwxDhX3cegOmR+79#KD)&j?{*$hHRZd2}el%uMh;;!wlJ31{~4hkArtWkmn75_$P z?Fs6RyCCRD_%Mdophut5(H-2v+gU}88yT;5R@y8Y zkd^k2s5QVhGuLwx`9(t2i9|;yAzAP-q;h$_YbjtKBqg5L0+WuFD4H4n-DF~W`rpT* zx{Em;*7<_4sxTykK4mk9lOvsu}@2swAr7zZLLL6&KNK$*P%+W=6qSa z!xD|Hk_Z+y7B!y8A2fL_Y~Oj!N$8FGkL*{I{S*B#NbI{UG=2-6I(OL?Z*YCjNt}E^ zwF~_uvNHJ7RUhHU`MZj?rJIt0a zf&y?+2m1a};>h8Mcqa&rQX2d3-#tpVBEU?f4|#vN$y=TnaLVOwvnPsKdu6S}uS|VIstwr@vXyEDP6FxT zN4}V_7xU`bC1?_t#k{sqoOxrd8jkRmdMj0{eoX3f<1`pSVZnW#j35k(I0Uh$p{dl( z{8)boga({HkQ$;Q^a&XX;>IsSo6G%R4?@1&98?0R>d&AMCBO)g&;&CESMX&cG+$5Z zcKNMmU8K2P&?r%3@UmE4^d`AJKRNdNfK?FZp4#3o|C)@(F%n0jRb=*+Pmj|YA&+?F zMBAxc?s%Bz_gHzZN0`LGFq6$V9ym_^eoq#W&M_F+s509i#d@Dop_ZnimBeb*M({t~ z=dhI}8O~}}nvFu{tpp6HUu(KiVY9Z6PJdPh?#DL@7$LuKo`-QozroRGsb1(5YpelB zW0}Zf=%3~LS366*i9wu`3NOMS+pi&}8H#XS&d)`o>5-5zvmtIN05VaUD_D};b(0eR z#M7_%i=(`o0rBq=H<=)oX^3IH&DMm%!j1ls8puN(Sg7*jlt0%RbjtF8r;*Zyj0l>x ze(NB&QQ3TPhZ?-01_!S6^;|_^|K*j@lw8FJ-u!anUe-X|#?=P-39BffcPYQ2>9i&i zzj9(=#5C!_YB46I8phy(55Q+w`vh$2(L9}1vyQb;1k6}DL7>|NpJ1uf9JJK)9`jn* zZ^hkz`M4I#cB7hee_%3D0orA}4>{uiF)pO-<2ZrtnZpqqc9|n?#;j&7{Tmrx*xjLR zWyZuL*mHjd2@giGpffP351Hu~?1ovNv{?EO^D>T) zYI!{J=$-jbDlnJnErk43sMl=aD0kqTqj6e4*MOjb>6H*P|LLFvyEiFDh>q?$a_6jP zh^imAg7OK|QEAUKqpY@n=UyX@4I-K{^qLTvYOXVo1%r1fqqRx-sZiVp^Yd3{eERw5 z^7v|4KVY$E4+{n4;J7HZ)rHe+C~^L8s(5dB#4weS)OwXsyR|W7>Kkc$t_9P|20)92 zx*r4uDb4OpZ=E*>`&FZIqhncYAk;946k5v!62iTi#d5pI%7s-EoZ=>RPBRp8(We_A zVR9h@Y|&~B==-3j<7i!rsYIHihtLQf!>eCcJ$&QN&--~6ZU{{{J=R9lCSqR6iQTZ$ z+j+%6l*B{oY&rYxrwN<(&u|W!k&&xh`*)cjvLXD4|dHe;L?8VeH>s=a1S z${Y8%=njb zr&YT31*7bnjY!+jw-WK70n+B>K<*k>19JhEXJso{ zZe>Fh0rn#9%;Nq29qr{Kv%t>X^0kn%e?3&12t#HCqlaY*U+0CzlTgl|w~XMe zt6$T;iw?{+=W9S?hRb4>S+DTc;@gef4kGcY0s0I4d!)(|b#qVh%Dmm_ysU)*xJPr> zD?TDyiRzoz7-?moZv#6r-C<4CvKFbSCNof6U=P2*071S#bLg5gv&T~FYX@fifpa+O z>rW&x1tw%8RxS0;_o+G5j$L%f)53ibzZ8}O!S0&iWqVB#R%fI5f<+<1NV=xg(w-4L zgF#HHjzhg94n3v|oZd4KyHSd*)@eoZER`M5H~=GB;aDbhnV|QeCE+P^3DL(_E))e4 zViM!TNEMy!=U>Hh9_JhY^?cbC`PdT+yGixl6B5n(8h6bCLzxB!&563(4y2Op@YYo6 zzFB3)K<&^3#cbTFa$z0)`&%K1nh=zTAX)evSrCGJD!2%S$iWmK*vvaDhIzXnoIj-p zmb;DDnW+iYRUPwou9=Gd( zZp91Wbn+eKf+r4n7x@Xm{G#ZGTq2~?g}|#rU%HNLS{kgt7gl?Ho8IS5=pC@`X^*=D z={D$XTZj7PX3*Iet6k1WD}UWFFHJV~Z6BLdF4N)G3vl`sdL@4fxr^r)f$T%J^^)Wk-d%EA^JbV<6HG2YqIMw-IdxuZrXHiDzqXe-I~8A7y$*w?^eYn9q? zdkfQ$9}^tES_$KADO!m;PZ@pn31jWKqlnBESY#Ji%?-jA7HpFT<81;Pc!h>P4K2u} z!yEb_M?z24d2QWD1JXpGK&q4J{h$~_PYcNG+h>$82uz5U{yfhJ#-7IU&ZnA? z-{v2#g{)Wvr-_NZ?#4e`ipXfXMZMnGyySEX!B-&QTQ`8TO-zBv)=wHg@4PJ&PI&$c zf5g+VU6dA_sIXeqdy8W8$H85aINC>i>ex*X!sT~3Eoi0e!Fu|vOU0!#n*86L4?yF0 zRMN%)&eDn%&D8ip>YiUgE;<{2dj%Z8)~|9*fG>QJoyu?&(8X}CW*`Y)m9kwio^Q^n>!@F5{;msQ4Mf@6^FMG zmJ>v;%si>Z?&|BC46Iw;*@`PdqsE2fVg)D6$xe?OcG{pUKL>iBNXSw)$#+8!m1>1& zUfhy4fH6tRqoY+_X-BRjCmlT^=snwlf7*B&fy!Ar9~l*QAeDSWUKX zuTRz|*?z&d@U6B#^{stl3-bR1Z@}@hIeU4vQUJBKb1fz4R;-_S4e0I}H6Oj;`ySN| zbJKvgOW<1sIVpW8X0~C?@tEqs(aqO0W!wb12SO?SbLF2 zpQw~Q)7T3uR%b?_nEwvW&AF3+RQoJ1{-N8Kr35*Kx?uACC1TsZKwF4txf{TfZ1~oX z2+nsP@DE6#rZPAC$owuzl(9Evy_yR4bLORxs~Hjq=gr9u^3!Rqz?LeSzx(>o`}|tx z(UmGV2TV|g(`V)UeYe92af2fkqIy`ykhyk8v3>x2G<7;v3ZFTg^fAjRU>g5hMSg#e zX(Z|O+LeF7oWu=$^V%~Flzbe;w7yQca#|XlUWszqYujdv!H`OT*elRNZJ-h9`^d2O zrQa*tW17ZvK8RGqnjClk6s_fT$^3Zk8Xu9Cg3rLFHe8=dyjb&yNNfQ@@yr(stNSPu z=_{eY^gf)?mUsKXFMrWOd1tt-DYRD6zD6u<^Yg((gLj5BUIoFz{C%Ae#k9PqbLBx7 z!c#n@*W%=OrdQLJrmQM}D%9!%gl;K^%A!PTzs6aC>p$_Vk92#cvC8Nc3fGn8pe=(E!tz zW>T5(WMNrSLlw&zPo?2V9?IDlTFTXsXD(;I5Nw z7dKcz+d$2j>RtYx=#vu_73`|knwzp|6JjxNxqtgUZJ}YWvqRSeHNn*=9c2h#WyU-l z1;y!#lCIZuMlu^@pu9Xjcs%6jE-fphD5C3*8Ta}eQ3&BNmzbADZ)|sKCd#4#%XhMx zk7z#VDTlX1sJfA9F&6w3(ecS}qfAhDJxb1>G7yso74O|K8>_y2h!dZ@d3*R0U~ag_ zoV+54FqLaJg4~RQ{7Z#ruDZSO933Jxy3Co~iHnC4x8;Jy+&7FO=S2|RU{=7@25*Mx z%pMs;ve4GGFV}Xe$ufP?pr@5;s_yj8maDVIDo&^rV6KYR3hvvWy*c}Vy>OJi=88cv z@<4DkzEuuP!xR=nS_vmoy1}}01Xlgu=T^>&2k6?H5cYaYYje61 z`7q`5)P1?F8!$sYDrQKBh9GD%En6pNrLcS0F>?8wJf~m;?R51cE=5@_0ib-%Uo}uw z-nA&=HCT%!Y`kCF^Ra{&4Q5H#NTVCW2Ovp^r`iZw?`g2$Z-M;-}*wZPi4 z5ee9Iq_E%Y5=w3%0!k+LA^9O|m)q!PE1ie5Rw4uw^Ht-i$0z+m$AAVdXVqXptMmvG zIPj&2n9@OR%y54u&)TKaNFB{|34Nwj6%@jPJzQPoRY?QbbDNsa*^t9$AdI6RDRbz$ z#!wJ@DtpIA5rImHu(d>{b4TqO=0;}%g*Jv9QE9T^l#4!-aG>2Us~nQ=*&di73Ka?? zZ99_v&+_w>LXO5tXnw*`BonLwOVy znY(_|7-B~>2lrGLwFYb??Bdge>7T%=2f223I^EQM6#td$P#b!eZ7s9+8>d+XKmCf2 zfOM=TrF1B7Ou{w43Buaft^*&QmHzdW29tsVxp}Z7S5yb5<-&d(k1hr`2-1ak0y}wP zKR{3BD&C9zve^F{V$?9V=h9JEdMiYCRytYyv@vf}{szFQ&pQHf-bAxiNppmDOeKLd zl2ck5|Hzc#D(HfqkoD%&Y;L=C zum#t~(A}#XregyV1v5ggW4Fq<`yTynOcY3@q-6sbPIY}_+=+)=)1Wc}P*mFNAaqn0 z0=CVZxxKk9!T{%sS-8z>RuJtptLi&i)nmtsu& zB3cqYv>AuW{TmQlm&o=S3)+;iAx)(O=(~7g)>q9-}{=P&Ddi& z`=~r{LA2aNK*KO>iH#HnNOx|(<4Cwd*&q&C!rNfoR8;Zk2ki4uC7*Zdy>zLP%O zk)A_N2%lIUmJ@cL#6RRTVs)jbQUamc9(w^#pB~z0tY@?1NOoE!#U~`mrF z^ZN-Ifr3g4Mzw_iO8Q~-ru6C6rk7R~+|U#W|I1o|X#C$@)mRRO>{vnmFOmK z;sE1xNVpP4Ske(nd&V#sd77Z>-k&qt>f?1Zl|!0HQz!=7-V&1aaG2J&12?@B!o7{$ z=Ez(BL$vqZGb?x9WI?Cfxvs#d%WIbM;LJXlgC6`*y1r*L$*kR&Y6tLEc-2TZBtEHA~ zb$hBerY$&A#PSxe8cp4h5Qd&A=OxbkAwS4`R)6TXH?|uUO73ROrepMoG4yBO@0fhq z5S|q`I!g=B!h5W;azcWSIA7gmA0M(jrjFV^4 zc?+aNJ~ALFHESHCx`n~~n;BC`VH@lzqE!2e7bXVkEap+5B`5`h1Lz+-p=8DqtfJnAgWp>wk^qRZDlv$6 zyq8u#)tqg3bqA=|T318A5`K1)hN|1hd@mcNrUlzEmxTHVK-4aL%>WND zIL}tJ{-wAT*_ehJM-n2*HCQ(twdL3XyedD^l*8nR|E^81zB0^lbL=&JLqwiEf_`AzkM-Fu}T$k&Gf zpnNunJm2+tl`w0q*`$z!=vgOZfj zKMmOUSE>eOx3Q78@sJ@!Yr*Hg%#eK?RVWn4C;WCrRwkSP`=!1^TYAri1EJGi^ABSe zVJ9g)tZcl0zm07v+;=4G#O&n%@H7PSQBs819wa;(t)R($!>(nr>^n?Nk8tF> z#u#azX1e>w;f$ZPO)@-jDs5cwe_57<+~q7Fdq7frH`Z>{Zr1!!`~JzUJ`Su~>0y`q ze2t+PwaHwCW$!%kzF5bQ`f=-A5MPTx)xhEVhId+-c_)U`(N0E9JYf`{_SsXH92`55 zD;#ESw)4jJ?cH=o*)Y|d#l+-0-IcyPrP>k0khtHtt=2G96cgz$fbhOOl~A&e7`uap4Ah00^g>o^${%xvukgFYoXrM)29|utO(eR97$@+ zJoRWPvDZP9e-XGUWU`-42-0CcVoO)&xG1%CsSv#7hfr`{p_a-OCzkwnlPUu5vBYm} zlgY1%3jeF-ggqea>+!$575=|F3-F zmX-WltWacp&nV38rOOE?|5u$12yq3{uvk5Jqx{3<1ZSJQnixz*xE&VScuLos(5a$m zO64dUi@bfa09k1&QNLg5Rud79V?z5lNu@3lpJ3tZ(k$O-w&~ zh#ZYKESK3~O5DLSR9+bhv%b}cws|<9y!1rva!ww*Y)IgyGYZWQJw(SiKNt_#%pLQ* zB}xI(VqzR(e87EUOR<6DDGJ0RWe%?5MD0NmlfJtA{#NfK5o6H7IsAVD0&ZlN#W9#X za@3BBv_W(AlEm#Rqnbp~Xe3;FgEHgJQ~mcAUR^JjYY^Yh(Tpoqr|@f%IL>&n)~r9t zvt|Z*^U9E65IU76E7v_!_RP=HNvZNrCghYx)v5|wQTn+st1l~Dy5>9@An0f#a$Iin z?%tLS!0GS19AZN7c^}M$oZM8J*3M>KUuR>Wi@PVL*R(~>pt->DkDjyg{6aFU(r8>_ ztLrr}$0R>C$>4y;Go!;mpIcEmOpJ6}-M+EcEYF8uX<+g$8|fR!Fh7{eCt^K=X&x?m z&i(j$(5InEwW$PzK2`fH_}$GImc@z{|dKa!-2IUE_L-U z_0wo&e0i=#V52nLTB59>M$#Qt40ng+iEbbIhQeC3RxCUTf8cYmAD1mwsf46c97SIk zX3P)foiClNC=ST#nz#z?A5N3uK&mzr=EU%)S0pL?B&QX-jc458*J<2^HmNH#+Fs~* z8%6(9T7*<;xZOEB&>cF(1MO&^u3@`% zxWyYN>Y!{{m>h62O5eH(5g&c!d>fqwh@zhbus%Lp-@FdYMET`|c=GgB0pY~zCSWD=tq>uivFX7Dkdy$9*4_?-w`h3cFL@m^FT-5%D z^-DEo(*-acQaclXgQDI2&25hLL~rAMd|8V`15skqcJ)DsI*aJfJ>+N@!cRKy|LI5< zix~MuwE1bL9_3Bb%;krTcjkS7h&SN^sBc70zEr)RoMP-Uz=sKW9n2CXue)BmkCMSz z`2uS&G4s&B{{_#*9|es8foSd7vnkpzi?I0MF; zL9;fFhKAYPD;Q1ZgAsPu?$JLMfLyOsaVKBq+M-;c<_TNFngN_-j?YI&l$(zlz340b zf4k|rhu>ASg?O=y6M{M9NE6{C_Ka{rAp)>FR+E#;P0Q=LQbFmM|K=tW<2i?{h6=RS@TZoNY;E+K#wvF@wh7enmci!mbn<2=M-OXM&L zX1#!bA#{@{i^CGyS|qoypatDQCci(bh|`F}X_X?K)eOI@Wh^YazB|6_w~aVt7W5W+ z4=Oi*F~kK&^++UkN}X@P3dybZ?;1d8wiVN%@zJ0S6U78Iz4+hQD>6p^rM>s==n5-d z*B1S!sl{z9?=%TjjYNaj9KK(bJ+berqG&dRgmh{R2qlj-<6qlI6?h;IBgpuyK;#{U z&p9(5Qup*X)qf(ISiS#tbL#st^5$NJwh?*#Cm*_q*dLw%SfR3loge ziLlqHuxnxjx*i`ypBo#PF-+2FQ#(Kvj$YSaV>VUIAgdE5{3ky){P~}MmeFCbBdEOi zVHZDU!5+GEnO?%Ax%?yRanvq@8hhyzO1KfYFuOZE*k5g>jJ&92PH-cS+0}_ z@~$Km3JP(04QQBwYH{kjcxga-O8wN~@k5wKb0Jye6c!8yebvLG|2>Lb%o>3prlV7< zRsjD$0Kl^!l$auSh%2<>W->AOG0hr&hj1D>!0MJA=V;kv3MT-Shf~o(a16?%!`6tXH6k)6E#0PJs4>jZ5P888J9*FBJqh|Am(yDM zCNs(1|0S})`S~$L%dwVa_iW)hi8%O^_-x;*0#fej?2yFB|CfZt6~(wY>sSE40U(_{ z8M4x>F}ZFsmXnf1+GFy(ZWoK8EaX~RB*`~EJS5i-Wxl!XbnuoPdN z<(~$ot*?i~9!R^X!X?U(1r=|EDo)M?>>#7$glW^JfWgF6hQx zTYfxMr3Y+dvZB0-`FQ~$Ea<*K+R`b*uc{fg3=3OWWHAqr|E8{2uw$m^1C)Tj0)<<~ zq^Xoi;gJ4Me9Gw@(}Oic!M3J63@6j{?F|+Xm3I1MEk##AzCL>c^Vt6H#! zM-TQ)Cm%Z}N5{j?==|K>BCdUuT!VqXW@#C5Z}(5j;)_syh2Orgl0bDDyd$3&`;IUl zG?apKBLBi91Vh!Q6-E^KN(}{;ZTo9bcX&`k(!HO6#liqCRtM;PZi7`+(M=9C=GC*| zVH03904*!_{+wy*#Ld`WT!*Z7TIJ389@0SmqRE7cJCh2ivLH!*srLiiTt{KIS5XQU zrL87<&u5oKPr#)S)-3|A^3Fgn0}>=8ffh+eD_;LuqfEM2I4f{1

`?J$!Y^nFR4GSdC8!GB$^ z`-37s)-W$EY4>fEEE>LCB;uO^8Xz7MX-**Oblk$)(Myw{*c{2qtlhZt3ae8gs08RW z6VDywGljdpTBEv?waJUh{a`qlfr<++soIG6q{x!5szb|HkDF3@4v7)ZZ+$0w!&vw#IC69T8<|EBFWw*W%&G z9laa^TUv%R)W~g7_(E`nJjXF8(~T@Wh8&J9tfG=Am#%+W6jie_ezX*ISK_Dz(^Ljr zS!FT9NBd(DopJ6~cN?#l_ocB-@=R<=U7DOHXw6xt55aYlWN>PVQ2?h`!lZBB%{NEi zg<70a6x1%&^c8Pqk2=rcqo?(SO{$1ir55dvIBu7Ug_21LZnE~lZh~=oRhHCdyBqpa zxjp7qP}{ztt(`IJ74nyxp@6JI)htxzXl!cQXtBZjl^glS^&P|ygb;_D=6<07sA#R6yZB|_t@H!mxI@b!2LZKs7l4AK3A#*s*H?PzY$ob{D#*n2U?VG7on)Hn#x~Z&IT?PXr z^sh)j)7W{Dh0}^gQeOJvX@ph3jgY-P*IhG^RN{mkOg5Rlz&X4S52M{w(0_hZAn#zM z#wK~-jw{g@{B#Af-;1*WqFn;5Z80}HiPY<+=kX6)q>@jNdCiR4geOH?>) z#@~p(U!s>@)&}gX(zAehlQ~`Xiy@(rC}mlm%xd2ueZ~hQGW_+BUd@u|JFt*kFftUK1!Odut;H|9b&G{*r}6T4Q?}b-yMXAT`3yyNt`oOtU$NW z(*mpNLwM#O^)j*b$8ck#V-#L$z&>JNsH6aj{SBEl!EeF{xpF%}HgzS2!Kh3#{u7s5 z(nQV`tNX6?LP(>QjHG5fc7=eA45-9?>8-8rD8Owt!^P$W1VC|{PPOtd5o@-#*|&+X zSoRmu*i|iAv$5giRrB>JC`#xB>|pe>4sSL|4K(j$?KF~{pf;4-??B;jM=;K@!{E3J zlRoni6t2+@URMwV`Vb$bKMUjI#^?Zfq%vw}8&e&#T8*V}XF_D1%q{f{uttQNu2eo0 zHPCyyxExQ^l~9yVdgZzU`BV<#&F*{Zf1s`s5Y$Fw ze}V5dS>r|aeqQU`UKFs^QD4Z5%c>&H2Qc(lnZR3x=i-CV^Vu|{FY;(%Db&3?Bp^dy9jZiQQls+&=@RP z5VSWzk6Gf^M0`25-_#MMu~xUUPE16f)ZwSJf|G=Ub3Q2jZ#lwaj^l;(2_Iws78us> z&iBzK5J6eYK|cMwlhIV}9}mabC4-sNs%uR((gAXM3CkMlMV(6j0$AyzcG=X>v58~& zKviSoR+krc(|-NbF(8E$$qaS|kdBI|$*`qh6p1eZY0=obhK-Va`Lt8q-SRD#O`t+v zC_vx+^%pzAp)_xg4*|VSB|h{;)LDIU=q+0;)=9CHgPDQN!7Q0DkHM@h_`=Blb0n=V zM#2o3A!;U=%TSG#qrV*&y-s4-%6@f^P~b5FEo}uzNM;HeYt@c%s^SYH4R2p%noT+3 z+fK<(8iw88nEP6UbA

df|T_i?S?>$DLVcQ6woHo#0lsKIqbc39ofDk_a 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n } else={\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [ /system identity get name ];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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\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/567/f0428e42\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:02 04.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\r\ + \n:global ExitOnError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n:global FetchLargeFiles;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n\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 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 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 /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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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 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 [ :len\ + \_\$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 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: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 ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n :log debug (\$0 . \"Validation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n:set FetchLargeFiles do={\r\ + \n :local RunName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local fetchFile [:tostr \$3];\r\ + \n :local CheckCert [:tostr \$4];\r\ + \n :local fetchMode [:tostr \$5];\r\ + \n :local fetchMethod [:tostr \$6];\r\ + \n :local tmpName;\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 :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n :log error (\$RunName . \" Failed creating directory: \" . \$DirName\ + \_. \"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"-\ + \" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n :local Url (\$fetchUrl . \$fetchFile);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-value\ + ;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n :log error (\$RunName . \" 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 :log error (\$RunName . \" 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# \$RmFile \$FileName;\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\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 :log warning (\$0 . \"Downloading certificate failed, trying without\ + .\");\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 :log 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\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: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" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local FwAddrListsDirName (\"fw-addr-lists.d/\" . [ /system identity g\ + et name ] . \"/\");\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \$FwAddrListsDirName);\r\ + \n :local Index \"index.lst\";\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n :local FetchMode \"https-only\";\r\ + \n :local FetchMethod \"get\";\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchLargeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global Grep;\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\ + lmnopqrstuvwxyz-\";\r\ + \n \r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim;\r\ + \n :set FindDelim do={\r\ + \n :local Length [ :tostr \$1 ];\r\ + \n :for I from=0 to=([ :len \$Length ] - 1) do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick \$Length \$I ] ] ] != \ + \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwAddrLis\ + tsUrl \$Index \$CheckCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$FwAddrListsUrl . \$Index);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$FwAddrListsUrl . \$Index);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwList in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=ds\ + v options=dsv.plain ] do={\r\ + \n :set FwList (\$FwList->0);\r\ + \n :local FwListName;\r\ + \n# :local FwListName (\$FwListFile->0);\r\ + \n# :set FwListName [ \$Grep \$FwListName \"[^0-9a-zA-Z\\\\./:-]\" ];\r\ + \n :set FwListName ([ :pick \$FwList 0 [ \$FindDelim \$FwList ] ] ;\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$FwListName);\r\ + \n\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$FwListFile->0);\r\ + \n :error true; \r\ + \n }\r\ + \n :set FwListName [ :pick \$FwListName 0 \$Delim ];\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchLargeFiles \$ScriptName \$FwListUrl t\ + rue \$FetchMode ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$FwListName . \"' from: \" . \$FwListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Delim [ \$FindDelim \$Line ];\r\ + \n :if (\$Delim = 0) do={ :set Line \"\"; };\r\ + \n :if ([ :len \$Line ] = 0) do={ :error true; }\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address [ :pick \$Line 0 [ \$FindDelim \$Line ] ];\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address: \ + \" . \$Line->0);}\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" 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" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "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=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat 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="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=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260504/20260504150002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504150002-Diff-Config.rsc new file mode 100644 index 0000000..f4ad10a --- /dev/null +++ b/MikroMaster/history/20260504/20260504150002-Diff-Config.rsc @@ -0,0 +1,18 @@ +937c937 +< \n:global CommitId \"main/567/f0428e42\";\r\ +--- +> \n:global CommitId \"main/566/fd390780\";\r\ +940c940 +< r: root, in 14:35:02 04.05.2026.\";\r\ +--- +> r: root, in 14:25:03 04.05.2026.\";\r\ +2856,2858c2856,2858 +< dont-require-permissions=no name=AM-FwAddrLists owner=vados policy=\ +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +< !rsc by Vados\r\ +--- +> dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ +> policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ +> source="#!rsc by Vados\r\ +2955d2954 +< \n :set FwListName ([ :pick \$FwList 0 [ \$FindDelim \$FwList ] ] ;\r\ -- 2.52.0