From f0c3e1d031a98e5c91dd808f81491e570f818c02 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 17:20:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 17:20:17. --- .../20260510/20260510172001-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510172001-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510172001-Diff-Config.rsc | 14 + 3 files changed, 4667 insertions(+) create mode 100644 MikroMaster/20260510/20260510172001-Binary.backup create mode 100644 MikroMaster/20260510/20260510172001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510172001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510172001-Binary.backup b/MikroMaster/20260510/20260510172001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..17c55e5256946bedd301f90cdf66c808097909e1 GIT binary patch literal 302363 zcmV+aKLEh*sF8CUodf_;J+gO63JF|cOFcFv*z;ci000O80004Z`SAPzLud%tLC89a z42~4uJS-f+9CLV^@7{M^n$&kulkndr#~bMQH2Q&zh4_SD@z3fNt;$3viy{>!AoQ$! z7DRB|2zEoRLAUOCY5O? zWWY{Y)lhMEi`QdPca#&ew{}dOAx0kbEzKk#Urkn60-CC9EY}hb#0}9B&;3~8282r! zKIvWGRY}Y{M4q$S7&CQTMt@IaK9$$o1%HZm0+G%!&2d|F%r4k4JgTug#a$oi15weM z8(?S<6iB+~u?*gsTw4Fj$8x7@x+GFJb(5kl$`foYH7i|h_t<78YwL>`*FoG%cHcgr zpOFEUKV@DxJ>mo9b?}H@`Dvb3^n@pN*E&K7j$BtZTyoxGY^Q6}K6hQQ4J< zVr7bMT0wwZE|ZJ8KKZF7fKCo1p!ZN4hgtpp48Ik#8`wTgY2rO$Mv4J$JKT z{m-6!Jv+tAj`d8Bw8O0MDP_^b_|}rhh@^sEq%hCV|0otj3acqaq2N6>j=J>?V^n@< z4jFIpT2B}rvVI$rb>C;1RVzqg?GuU1D4cv!vfEw@73lxYt!ndBIEV1{iTETwy;I6E zkrKrq?c2LLQu>&#b?+Y$7rre8m2o=59pf&MB~r|7XdVDkY(ta@e4wIaaxjVHJ=vfj z_FLrnlldQ=E+lhw4Q#MfC269xc|E=JKcrPOJR+1=YZ~BZMM4MWevBlK-ZyUq&mAQl zuB}RF5!N#*IOu=S&@nl=3`qmbOPQxTZ1`+n*x<$lEpBN-rNtzq91IAc?7~&s#(o7x zkh*4{VQZGwwpCS+CG6oefN>RtrWV(#pxgSfC9Od{?6c!EVT9W`#Ye_1f@&QS$g!RJ znRQYQP0VWNb3#e~KTn?e{ysYqg(`mNImEZ{T}-R%w(O16icS$2e#{9)>`D zn@=+N>PnI&nTW9^!y0-=9O&KMe4QAQxfpWU4n2f-!2xb@7lw@ZZ}80G9}iYn5GOB? z%zk@C= zQHOmdgqJT5Yj;K`o-ie&P`6Jd!=^VZP5;o&y`!~f+$n< zS+PM-WN7>w$EnbWN9pL&uY$zU01R6+eQbSLuajSK9W6{(Fow83OCUffpc z6+dX3f9Zh2_xC-^XL-0!1)D0EMM<@^xUJyJya42?gsBt6A$-Gv=vBj|sXT_30D_GO z%}1W_SX*R*na7G6&)x7no%)P*TxfnVSHaT|2TyvMC`W+r_*k6MF~sr|<*~e>s)^~J z?|}1@0o7GeYo(+tZV5jEoTi<?F7l!&xq4>K{v>jkasRGwx}*(7%W;5w_^)$xuG| zIAvt)CLFY>`^qD~Ljb32!^x^CTV|6bciy0C4_Iwu8S#%zya@$lR#d$5YwXBKT;zSj zZxlABALqO~#@ov6sBQ^Hn%h84V1x_9`-G;KSqe%=Y)qFnAfDH`%29Sc{2Sl%xW@RC zAqv$NbFZ&KSnO#raP*jxiW50Ty2riVv;#3|#i&ZNX_%P4F6*^6Sx8hWjr1fxy7Vra zj1k~J@0R(OFK=1@H>#-lb$L9o1^47Jz=WBL>gvoAc@?O|x=0(pC0{)t zpNAxHZ@{>kjK=!}B9t{a496Gbs*YNiM<1J+YC&(!Trt!duon8kWjE3~yKRairM)kV zV(_ole)2n-z7WNM0C5TX%1ACtl=dRZ%GX7j{D!>#3yS;Wb!*P3NN*`<#9_=RHADDIx57XcxL_(G|%n%sX~B#bq?MJyyw zVd1tNf}Hj}PakkGr8K4q)2)J*wh6_mGm@RXFpk({Ae%WKl^q0SR} zqauQrq6HI=;mQ#w@=&Tz;bBB|^`F9%7D5V>?{I7IB-Xz&Kj{!?#?5E%72^O9^}gNq z9u8L+@l}hK>0we{f~N{>)-#q))LfakQ+1ab=d0IehKpn;>b7f=KEy?#hCk?zxH~%l z6jC@NUtupf4j6Qpk3}y9e?vL({3DL?9^-c`+M=M+jf*tYwas_o;AF{E5DU72F#V&H zZz{LfQR&jNqD#ZEAFFm<=JA<)z*)-H%GbsUxDKRv4X_n?dsg~ zpV*%4OhdE*silEwWe?8Ajs;9QmCtSPTF6LvUP}qit!2zn{sar9Jat)dHG|IB_}A9J z0h%E{wGOkmm}I80KOqe~UGw|u`5LK`YjBkE!Qiyue%#2U4oIAxz+vmpYEn+QA|FbO zuhfp&AvrejkIr6-0FkH2L`c^oKH0q3OM9S?(JHm-GocLRO#m|95Y*;hWyk4!HK~%% ze2G6JXm;|6viIx|h7dx-;{adJmGckGH>i_e=ZR#n=;eheEelwxpEWHg(HQMa78s56 z3%V#-BqPZyES3hu<)_Am#ePz7B=>43#aC`1<28B7agYIUq950D#i`!_NQ(Z*IG?pT z1ARDof07^NNqxKt`>HQ-3mE`TI3DC*?*0?MjRa>QWXCk}*9zgCY~rw=NdSQuau=Bciz4DXpjd5V5-_Q3y_~u(x;6b14iYJx$lAFNSvznGkC{)1V z%_560Zi#<@{C{VWjXy57Zg)J|fOxsiu@Mi8z{Sjlw%{I>&`d8^<;V+;@$4e`dX}Nk zq~Ww{(2Qp@WUu}%&DYA#UW%}QqX{)h5-ta+@;UWE<7R!OT;8(JXN^r_2l1-~FB(R@ zR2cCfE)vS&sgtQ6HT1hKJs0dlm!6|aAn&pwMs!5(hHcoc_qeOyLr}fl-Ei7s6-;GA z132_+GzKchSmyQPsX-#`mJ)3FG*zrXl*#Uet3$PppLBj=S^l&u>V(Y0Z^sm`>o$~` z$$+C@rR2a}{wF|c^w0uHIhTC4M*wp7RFsurDW^OmR)9SVJ_s_4Pq`i_*{ z+EG!cmR7zhTFb@EY#GE72}MO=Ou+lY+2q!?%cRc7^o#5fnZBM@G(w&k>$XEzg>OM< z&4MK=r|6yk73yydG9m@ZXUp2rl}y2EZ^IJ{ZOC+YyZ7HnjFkXr7&rux!IcqEqSY=+ z1YH6T4Dc5KqB9hV(vo3i;!mB|jn*>drsGTrCUar;j@(_hWv_~Q!OxO9K0<$eKW9*uXV*)1X z-=no1G#X9mJC$L*Psv$~{3qP2rW5r>bXtCGLSyJr72q;#;YEEQkrsh)=}(#5(5iIJ zBlvS^E~~bhaTy~Jv-z%ymS!lbE1803c)dW2u8r>KIBCgPLW8D4(3df;;{1 zB{e#x@k^iof@#$vvHy1cbgIU%4yKVRp{>6q*gNRe%L~}VV8p`qemm!iY_?)>S3*ZV zKlMjKGS)^Of*>uFPhROv9Q>JjkY23_9o%r1x8LK5PY*cw0F_I{QQE93wBcp&60 zL4F^BSV*kY;>3rj>(#=VYRNXj8{Bsc9HKl4$ zMX|U2?5~Ysmv5zH=|pArJ4co>;^RQcf3Y^m(Q`R@t-GO%DsYMuyVmJeDgwvKVXA4M zOsgNG-)xOCBv`Swj>s&kUv}XRFyQPlD`}#buCG+*6XZ|!5B*DrMs zE@w*?na?maRB8Bb=@>e@{kD1mjVtw&h7tm^Nt?88)mQbJ|blWj94LE|xI zW|RfE7#o=AA?lB2R((ZWZT5WA*5G+o6QLNkd}ybA0~{8sb2)I|bwugkR*3A+5<_pY z0$ipWn=vGkKPN`JWIwnP+kpe(NFKVyYV*8BZgRj75X;xZMmuE#?ExM`O)H$u7U?N* zrTDsh1Y!jj44?2|{tnPWPTxab8Vh5`tFbi>E^!xQjaK=&p($)B0G(Z}J_xy*usC7HoV{C}2!JJ`0aYelP80(e#MvhAe4}F#atF^FJ~NTOz)Y zI;@KsU*f7k`yqUk)qEsc$+}hP`3dnkVUERy`gMFAL9r-nMEZ!RoEjLRuoj!`@BDdS zS(MA}UI}flxY3K-er8hp~Ecep3ab* z#ByR4M}Ip#^*l0g5|cR0>usB($1uIZ#hMr-dC_kgWEbCvf2<7Uzo3KSh)cR3zzj#C zKtINx$(g#H;P!g6VeJ(79)7k4i(DXY@C>`mooA^}-Xe-6T(&3O#t~3om58tVrx%0% z$65Bhib!he*fU>5R`5}~)#d+6sy$9^=DNCmesrlWuUE55?Ttf8lp}kOKTJ`v310f8 zPa|bMV~@g?w-d>jHGJHR^@sdA)<0SJ@E*FL5!~g|WceyMh>woBL_w=oHxdKUx`NYC z+0$8dIDB;v?7<6j&G}j-8cQ|pwD{-I43&jNCUG#hy7``w!~Ld2=8aXB_YXt2Ca^AY zK~U4JSHaoQU}c>=_3}sMPTPP}Ke4Sc`7dox@T!*s%S5j-_YM(S@LgaeYj2U?YL7C2 zT~1gH3!xn0jB6RH4|7{~c~&O@@<5QNn_#FSu0|`nn-vaS5naG~L8f?xXN)N(G>?Vb zGlj8X-JzpztFwyyduKSlS355iV)NWI`)M6QB(ggV;)08>jXe5g$MLAwI|-6t^rW$+ zSLpgVvsutLhj^ec%1c_Er4;eEkuE z6~fT57o#l|rnBt+^)dh}#qw2tSWNEU(x@v*;(UPtTOmKRKm?O8+sQ^1T%_cl^3|;B z@o=DH<9F^BF6OnJXsCK|LTQ7ETXpQ+q2fKEcybwM@;-73Rc4w!&UN@EP%n32`bSPLqq7e; zwg@i3>H`OFm(VNKEv0}jCnnpCV)hCFn{vr#y%a6se7Aq>ZSJY5t`gsC@h5DtrELIM zHNP!^p2~P^+w?SJXt9W44A4yPoGLmvm$8s3UVkBKRp=D7XAf?g>H>zp%e6Gj+`H7& zgXen{o`ZWp*^Jq4)*nq|aqVZOXGqaRR0(Ydi^cN>04;WFbeRZZ6}HTb*wZ9F*af@! z|FaLY{QYDyt2Hpv_+h10keLszOhMdXekZl804DiN{4yzRO0VvA8-&3g{E4k`V0O(g zxM5Yh^9~0vkMPzHvwn0xD)k=Dr7ziz@Ca1eV?OEFXX1!AP2I?5e`zCr5aTzaOYo8T z929%%txmRDL4H6t&gpf2lWn7V711!Z>LqUVj{}0SzEVR^xphtyf0!8!#AZQfvn_@* zE@{|AJpGgt*D@pim9F#raji~`>|(cj$FTL*VbfOBBc+eRMCUpgx_0K7uClBaAq zP?pJgDBR9|m#~UmRSlno9A@C2D@#4q>Exu{x-Fs65eT+x1<^l?PV>={=!POD1fwn~ zC0ZlL-G_Uq$R0Bdg)WGa?kYA_H_~nh+rKoJ4U&R=i2e5|l>ZH-x4l=`ezAc=2URsB9x(S)Zt6zu!Fd7Du&WbyT$Z)(BCkZwmi6( zOBZTHdDiC1jJ6S_-MQ5=H@4u1AATJJ1y=)KgJv@1^tEkk38H?$WfQdCS;U?%*y*K~ zb+Q)Kbp9DvBF8&jFGrN!HtG*?hi=5fiOvs;8R3Ap%UnXI0Pu0#kMv=a|HebJA{c6- zNZShtU1b&G-~-Np*F`1YwUAGY+B!glLcZvS$v`c({>prjtOI%n5pI%-aF z93zdVG|AV2*FmYqol3}Bk-~PUihZh_McHF49~@%A5=d5Q2QG>bF2@B?8_OcypzW(7 zkha9fScUCA5J1Vf2KJ&8#YJTgsnIR>p&fhQqf#v1?xxV`1ie@(Cp_I;+l?}n5R+Q@ zHt5Qv@Ie+PO3hvd^m-xIA*(gi@kHIZJz(UEg{P3re63i10cwoq66i(^IEh&Q!dqSME~Kj@luIinWcQG{D5&KIH1fWx1E44a7$ zAk6T8&>x$GR2?gr?((r=&w%rRqAmb@i+T_HzC5f={SKamGLN;sS}{!A!v|T>t{d;s z^!V`DUL*>x-8p-M3dH~Am!o!-vd$T*;T2H5c`|~*PP}(o3fScWhfrf*Jvin+j$PYr zp${>0AmHo$(=?-@kA{SoqO0%KW0+1(yik)oFANvOXWu663-w0TA>W&;y(ShIm$RGs zJP0y3JWouManij`=Y%NYXOr5+=0<9tj2smK8SOtCsk<|Z=pryN3hGw!NJDcL9FKQv zqadqblYx1h(Sz*d<4QUC8qI)u>;$P@An+@>)aiRngQG{;(vC^!G+I3i} zUjHlp94Zv%Cq07!5YZRb`ih#)lPj}nWErX(RQu`N`{9k?D$QT|`l0P;qG3|bro{?1 z#i)Y!uiMMPnZhVG~0)QD+n{)2*Vhp|WEWYlC8 zSINcl+#=p0wE-7Tc`^h+H8MaN3UizVg3O5@&GN?-!xRqJ-gqcz;oZ^X-6D*);~@HX zIR!mEdPN0M7NHeu?&3rPZy(wUyFNDgdkGG3)Fj3frWC*evHETPpuE^$6(t*{Y{4Uu zWv8IQ<(i#m2n*?K%Pn2K#uS-?gHF(4J4iJuq=x<)Dz0SpB^RbGN5G)Hlj>-la=+@+ zbm9F1$0lSG7k2_|@`Ro=h&MPIdZ)XLu^>lDEQ~pM*kF!*Y(UsHAapP?&re_AS(+wR^ znZ&3Dk2RltBm><`xueo9VmDCBNV4&Cl2Xb?zn1@G%r$7^FN3LpVW_pCI-nPd^z+BCSnkQ$#l||ZR04p-ZOs>-*aFmlxP;2#D z2QCC_%ioSBqo-nsA(qD{_VH}V-vrCTYfn7LLvHkH*!hLCP5N1K zeQE0O)xfFa>;D!WvVwjXpf%R`rbtaexnNM*N?Nu@TW3E4H@ErJZ??H?=FZp1%=Y9; z*>#N@E3HbAjnB}D^&XUcQg}pz&?)2X2ML6s%ct1zakFc$Q(POIu+}%g{!eT~)HoVJ zpS<6K;n4`HxU0F`%7_nn}$z&rBCX7pA;6GOWba2DDqN=QUHn8$^!fXmAyNSU&>M$ zsjKLyAGU4~V6>wYf}qVVgHUZ^5yv2)?UwL7bgSBHTj#>NAiPMzQJ!S%#8fs=_gMj{&%^r^BjWa zDa#fBrAG7C}3up~o5C4VrS0KyDXZCPT-!TWq2eP4dYycd4YhQbwVv1lNqaXC$3oc_uegK^} ziR2-~qqs$E{)M8gd1KFWD$}s!svRwt#bEKc7PNcpKC%Y<+8M=-cmsJcBysMa$x=s4 zj{y)kCkDZTPnEUZlh2NKV+wg6V?Os1cfM+Qpa7Q=T^t!n@%S?CW6nsf>a3LB_q|~d zeF#Rnl_sn3kQoLxu>W)5Wf>!V4pa|&fHgU6uhRA%YUp?~MGXWR z#$4iz$HeNoH|Fa}F~!DYQTY*JDT$i@_6|js8ZN0~H)ypSlNm2nw^&Q9;?Q!kDQdfjvD5iSMnobiY{ zml>jJYqP-&!)5|SJ9d#+aE<>g+e)AQ3)(Qp>Ji58pA;X2&D2dfclwLE zE888wuo42Bj>jyAyV%O%bz~oN30j<(ZuGE$=*a|xW^rSs$LqF|7-$;C6>x+|-gKMQ z3f9s!V{!c&hwLpJ`jt)%7wFK$n$BdT7*FChYQj2OQ8=3-V95GFHux~)9BbXyiG2k7bYL9L(uopNH~ z>=;NO>zFT-1Ld>eo7pC|+HftQ5(6mem+>vwPld1c96eXcpo21(Mh&1FNh(pG8zy37 ze@%+oE`h&G^>f#tn?AwlE}sQNS?nodr@78pc|_l?AD2~{8vLbvt~ovm+RR4@KkG&w z4*XclsxV#y?iG;}Q$Km=BXEc;J8u4XDF!p7Pa1QnWDMx^m+SR^{zXxc}EaMLfRfGP!!jAfXF4o;+NwS5dINd z?fNk8-w0Xo#73h5%4Nh%m{k{IY&wPiY`uu`AfVjma)!<0<8x;cl@_E_&_$tQQO6=q zQViAMq9z)jPW3hK4#PKig)Z~(E+e1DF)!#)G(4+EU{p*>R zPD$?Zuc3j$U-!AGoM%{*oKqMu;(h}pa!gNsxPePC=~a1%)gqCkWt!5yach$<4lMgp zc^k%OGcACgmCh7LRrzVB{=OWkP2{IGym+6Y9kGb(U<*DpFpTu~VpayRRJMR_sxfe3SHv5G1NFz%vR9Q*1Z)4JD(uX#*H z^lF(C&dMpGM~+I&-FhW4$(-ZZOl^L&+uWru5eNX6aL(G^wrJLD(1qnTk?U6%uM!Ix52Pg%?AL#Fq?crX<*0zKTf6yfP)r|4Y56Hx4w zs$qUCmTS#JH}GU1pz-q-l;^)QO)Ew;z#!KciVW{qQ_`sFko-|vUqjsXk#)%prbBK( z0V@;rNN}FzJp?bW+%8?+Z$BMgX14Pn0{3j7i-C#H@yfx4bXA#m$To9dQYGvsw)q!U zOLx^ux&62<&NL$l&Hpma0@)SLD7`=Cg`mkX|{-UTAa!ml?Vs}az4YU=zQ=l#J?w365#+qOBa%)&#$TbOwqF@PTK*i8le{N%w7 zTb{7H7&iq%eB{PXg2xm0hB4Nsowb&d{xYc9ZcGEEsm;F+#*u3vC*TA$TS!~Qiyi55 zJqqz}d<#i@5?}L@gmRvreq~PF>lLSUEUwdO7t1{u%HUg@*f53WqXK~(HSIlWV^?3Z zMk(e|fnq{g__c*o=~+z=l^YSkDC05Qti1oh(Rx(TuL%&Ws}hokzxjlsM7RoL7bZZ~ zPMLJj1K>ISjxx= za%2e+i~hpR!?WT=@{y14!td%k+Sqlbi^t<|qdpov;uz1?tj*L!@oJ<5w0>SSJ%ul} zn@mjakm-%G&)gSx z5^RKY=M)G9sV<5?5Q~PA0KWTu>_PXHCWj6$=jF3_CcW)ZS&MI%%``vTgcrIQzSEd+PfG+UsmBk65YCx_>VW z0O~O2mV&b#cn#QHeK9zXtUJTm(nlW|Om!Kc{?s^cfd#Ob*>8Wea5Hryp4NIEJ)-B_ zt~%s3RzaDt8&M2paY1oC&Jj2YawA$n+j*QcwbO2Gm^e-ubx4VWJm%d#3$g?-6D8cw zN1Kj@*p-VZGXqg6%wjS+rh>SV5T=g}vN*Tks6{h~&RPS*`I=u`a!)LLkz4&T^~WG9 zmE2iKq@(3M+L3S;L-ag5Sj{xu=_=J-n`dju$tg*eifZ25wJPWq*o_0ki~13Q(0C2m zNz!!ydh2N1Ysr@i-|)hG!`d3Kgc}l9an5ZDoO3#@*-6!1{IHIjsd`k7eoVq!DS9?8 zNpfz7UV%o#hGbhN-0zXAB`5W32A_-4@H%XE88XlZ)5j}2K?3xi9P*9kQd$tX@eo3y zwa@nK6D-Ik-9YBNjlSN)uev0hHY~3{Bd7G4KnnA*$0z3}A!gG}E_jPN*=XZk7qF#6 zsQ8)ukIfDreck8fv%1)#71j)#|Qn(rsCVF=hi7@Z_cOOy>qp*(zEu z8CIs88AEvMiuzxEH z`sxaTRXioEgT>tblXwMxiJ+t6_dWvlfZp+0rAuZzG^a1ejL91KymHH*LkT#x8JxV1 zUqy%nZYmqHuw9NfsO*zId|6WTX@L%gCGs>M!}4(*^+a(gXzFO;D2Sjf z{I(y$ufaAmNiI&5Pg>18-b9hz{*HFiquT`8_%q}^E>vXNx`?e2wj5$>(b87WQ~+Mx zpE&%!?_-bg%>`akwX7~eA8Jr2@yL?6MiIXcQBy3#8iMM}lTBg3id+&~MQoT|5Bbls zXIlY?5aC0+#qdz9-?Pjx1 z`hG_8FlH8$-(=Yz^s$#uX0Lf;71#9bjvq#Hn;wN5(tziv4g=sP>M);pnjz!pLj3R4 zOgyN61WKCpgV4(UrYhMzp4^{r{7@PlpjT zatg@*C1hLJj-}a-J>(B1!!}e>d!OBqy) z*9El~n?-UvlVBa)n^Vs?73fPG%XOz#u*DpqZ2CkWm?#qFEz%p;9kxXye8S%+*hd-R zzWP~|KbzyYAcNO#r03Vlck#|)rMk5G_xHAct93^?)ZW8|H%BMr( z%4@8P@E+bdw-sY%hl%TFC;crleyS5UM=4GtN5TeU>X|$6x@{Dv2KK56{f>|0r?ue~ z4K{`@(rY+`>o>Z#?#(nRSM&b6Om*!&^{h~1TER!{@q&vg_5Z-@@*_xjBT7-O->m+7 z?2eJ(99x6IA9LqCeJ8ALG&OmhqSw1I;uZAN2;J&IN+BV>UqD8vG4xU&eLW^VtM%L# z9SU;O-bOt)={AHZ6eK8=*VVqPMy0msOmK5@)B#K+`u*PB!octlun0R`w6?q32&-xk z#bm-HB*qkAE~nOo%ouJ}8b^f?hxx9Li0+!S0(&&3NcrM3slM^t3~b*wSant~g^gJG zud!k(obtIJ^16=MzFzD=!NJmy5aPHfl^bvX_&ySJ9YJO3Ue>GbP)Mb6S!Vsu*EACX zkx?14w{E^6J^E~-H&>q|ku`75>tk$q>P8m2vz~m0QAK>gEP3Z=oxWg+K|eHs+a<_= zm{MybcY62vo(?xT?iB3LM6>L(Gy-9my9uQ3umd3N&HWy9kHB;O#BWAVa*~OGL0Xky zNulD@PDQJvG^92InQl8F1;Id2RpwRBw&iJi>T{FO87|wH4XGiRwVZE0?ztZ}r%dZJ ztTV=P;T9G{~r5)x}Hdkl?P6wC*dlgctxo5VgN0Ayvr zfk#D)sF1OE_Zu4UOwV`CBm~|GAOSynS*cf6K3VgX) zl4o@ATe)w4WEZ`G7sBVR5H{`G$ z4h+lxw*mr3tt6IDp#7Oy>#cg1D zyc(%F9^;jk4=m$dVO~A)IL*Jf??zp3GylQe^izWS8Srm10CLR_;E00YgeTwy+fI1sXVwdXgs4S0s;LUkc8}~px^r*n2hBL5 z&B^QYY@r-XO_z-oD$`x&{ahu5(2lPm!{6=scGk_x%3EsL;S<^tH2)#95XfCvyed@a z<%r?R8X|GDfLVJw?Rc9u^?#9s6nA7%+%9*>VidcVl8FUX!@hHh?fAin{Ml!~8V4in z^vFdJm1N6%`8V=Z7xun&!S*#TPz#=Cp;DCTI@}2@9BI!4Ls`ze>|VrMOLO6}QqI*| zszyWggtBFsULCl?-P*vC7De$>BLa|DUmf+}lp{P!^SLWY%F`S?N;dbB8{mky@CF@U z1=^%0?MjDNx!#}Y!jpn{r1w2*^?H-6(Oz{HK;}Om`HXOS`U0(n7c*_*VYvlo8*g6< zg{Qlq8;{-n0+84A-ItpQ*GfZztJiA;4SjSgMB5bRE4-wR;;L?JI{nC4AkiNgOouO8 zqFlYqb9#ideK%vU`$-BHv_(IQhDSfJ@Wo=vVMfEdH~4dgbCRfU1K`6;o5}&JP1O4~ z3Aff^&k+BxjUUdmVxe`LhozthdK%275AbBLf|cxkr&5i<>I?@#hoj3)5{0oh&!#1H zgEW9bwo|uX&WiZ^^Cno(OS07<;n zj@w&;NNUxa{eaD|+SPo{Sf%2$M=!`Il);J9(ig>v{qP5UUU|yrc?Ctq!##HhFyzF*(`I@hV`pa9d9%o@ z6$@o~t`A*P30Ig#bSDmrtwmdi%6Si#>9A{2fBLM|Aw`E*zDO)VG$(A}7?%|vWreJ5~s=n)mFr~nAu}ZCR zKEgJM*d9#W7!h@NAEXLpxwP}g+Ncll3M4(agDbE;R74#&zu9V;dXONdT7vi(G zj3?nqR#wO>F0TL=LzjP=I*%4MQA=qihXE`Y5@+FjbYxPnuz006aYGx4I%eR2=4(Alv9&W z$e!woOcsiLN6Fd?E%b-O0wp@bZ2L9!N*gz2lKfSd1avFvpAb}}A4=dvJ_I#j@|KHue}Mbx!c_@5OaW2!Wv=s$FGRL$Ia z`KNP2Zl#T;UufMMvX1uke}wM$aQeFLxK-|#27Dn?XS(UkZPIL}AqFUXewKEC_$0p= zcmit0MQm~xd$U@FX88nV>7`$7kUF4^j(RqS7S!EhvxZCOmt@dj%puCdchMmea?SL&=3n(TAl_J^tGsXvJ+h z;F3MY7lBSYDc^3R$&wfw`M)&4HMol2iZhAxDLDNqyKt8hz~a-71Dl3FI3F*D^+$Yk zZkoysnQzj|I}M(xgG5M=gioJ-g@R}r>k5DoYtWuf(~Bd@*>N=o{6OE!⩔RZS`NE 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%0DV!tCI&MI9$u}t2rt(- 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

jak;eue(L)gi+i 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Ⓢ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˥ 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510172001-Config.rsc b/MikroMaster/20260510/20260510172001-Config.rsc new file mode 100644 index 0000000..5cb1a7d --- /dev/null +++ b/MikroMaster/20260510/20260510172001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-10 17:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510172001-Diff-Config.rsc b/MikroMaster/history/20260510/20260510172001-Diff-Config.rsc new file mode 100644 index 0000000..7f4de7d --- /dev/null +++ b/MikroMaster/history/20260510/20260510172001-Diff-Config.rsc @@ -0,0 +1,14 @@ +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306,4307c4306,4307 +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +--- +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0