From f893238cfa5e1457c609c2a6655da84c7b02c581 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 18:40:52 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 18:40:52. --- .../20260508/20260508184001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508184001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508184001-Diff-Config.rsc | 8 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260508/20260508184001-Binary.backup create mode 100644 MikroMaster/20260508/20260508184001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508184001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508184001-Binary.backup b/MikroMaster/20260508/20260508184001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..145d47c349a537ad8b039178b9e0f7b7dfd6de75 GIT binary patch literal 298264 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

>C7SE&l%A z5BSH%9BSJvHD3k_H$AF%@VM_{D>YTDir9D#J~@9V=Vb(rR5N=EqS9{-$>iPFDXEKz z$_qxdix}hYEh2k8Rklx_(pBMBF!LEcFHxEzlndf~GW~1SouXDV7$H&3QcG{b0I3B% zxni7clFV&k_6*HC__vV0I~ihoI93r0=~|Td9MIgb5-`9p(PFonCl6VvuP@&y>h?eP zr-v8sp6}|a*Z3?X$v{1Pl)K6%amc|jr!z-r5F}Dp&<{Cm)eI6Jt?Z;0c3FfT!~3vD zhr`7-JIQRM3t-wqydlkF|3m+lO;RQw?X;;D9q`ugRnEBmr8?yudoq z6i7(QebJ=df+^aQZM4f_(3x{5yw&6SPS*x-u*$=k$2Har$69AN&x9wE)1JA>X*nZ} zh}zby-@iM80m|+tCLEY@ED0dRevnCgdR32<2(?sU`?YS0Hg@yLavz#q+$@tkDV1$d zCbA~AjO!0cQjpBFNoai1<)s`aR7W`aj}+YnwRY&vhLv-U!8U5OjM>(4q`ZUTv3&V#M`~y*5v5Qkc2Nr+*pBIDlJ<@D1$`E8pBEI|Ws$@r z@Ms*i=)9E3iTEbeD+Gr8?q;Gjs(g&@;xQDm47IK&nJ&LSqfw5_k||D>J}$HFwbrmy zr9>A}K^%F_qE89KvfI>>%D8x9NdUrobt@6iz*p%?SR=@5;H+UIc8#%MN%$Y9%S%1* zI3aErh30c)UeH>jY{e5Kt<}O?y{-VjAX@9;x!+fKSTCqHkprK<;X+ZE2(Z z={rYG%~IQ*smseu>zW=w*`mfk2j3a-F_q=b1))|?H2~6Ko%}7|FXi+MP&FzgVKS|B zw<%cN;w2qC!_xeQMdsroml{7un-6z26A3W|D$}!ONX_<`Z~QjvhDOLT(1K>YWtxG& z0?RPJ?V+(aKVF-f8dkuJ@Goj0N-7-g|Ddp4%+a{IHs(E+94kuVblGLHN${k z=eHa&u^f8x_F^|Xp@t|O8&vY0mg>sw44Hwu@bg$PZB4xCfFR^pU*R+AVJ!AsOKut1NsoAcW}U}E7wIod<0Wh9Wb+K zFE{vjJQz>7LqGA$*kG+RlFPsHC`*+C0Svpfi8#Qow$|j8y!+JTFOlEB45MwQ9Dq^) zzl&59yS#3LfIUm}T9#0JP@{_=Vx)-;Qel8wuR`xt)s$p8OwdFdlEB8%t9D~?n=U{> zSc9KLY&CyoYYWN?=-pb&>mdKrJ@I zru&oo#Hd~dO!aHq+{$anlLa#UOifd*wwu+ky0>M5D6qQ z)1k)FN@k%;Se!rI zu^t%AVdS0m?eu+-HNM-T3|F`3sJc&F8lf7r#VZ>zGtwPgcg@>b;D(4BNY{0>X0sT)gL}~* zDpAEg)mgTHYNZ0>9O@YF=({Q*!F;QSXD^a2qC1uxe8Kd-y;WK)7OS3iHM6A-L)#7f zebRH8Wuo7La3k1vNSH}})c?G=1@cjJyZWW}!>rLij5c#0P1mq`v5j7Ag7ZPpOm$A5 z1BP|ne{Bwzbl0;K63GIXh+3N&J4>)ThZ{`GyW~YBv5JO-t}(9;hS7ZdFxO_2!;wZG z*-LoCuIZZg$eRbkd)3J-_2Tml87^O&Lv(8xd4>s!3%4*pR0uM)b~=SG-+-Y#H`TR5 zKJLfj>#KpLzgZqe@Ue!;I+FLo>%0yOrv>@LsUqZ z1|O+o^Kqqul|ave3U68(F_(R5wb*F|9e1Q1)ZU6OxT(dV1lnk$1skM$4p4VrjF@(A z$Ih)QlB`Ln-OokG7AvI1$Pxcb_qH@0-lE5n2QtH2!wfu9a`}Lld0MDNZqsk9TIdzQ z2|}l!uLC@tRObv$zmww&G(x-bMM-&!q1IeYh?AQtQIp-Q!u0^zF(WBR50d*~LRtPg zpZl!V04>-t0_a57J?6v)7wtDKJ<3)WGMe_$1#*5$NJj_o%HYBl)F1h#ifdA)4#$zA z;j|*bD86sOMbeBX>K0ev{wQ&F6z#q*GsZWJI+B)XizPSKyba2ZRA;)sVv#HDxj}L* zKS({|egWW80BDDI{B!0Vf{kD10th&Pe68i4Chr@y5`j|+^vsqiZ_Aqprr3h zru*4GyAtM+yEhpRZqJC3kmU$*$K^kC-`|$R`DqS&B&Io`qzGFg+u~>d1+x&uwTmQX%+zE`$RaOk6Slu=swds?pIYT_sZ*m93-1W0&!QJ%MLJLeVORx zc}c=oxS)B!>Mxzm?QzK~@liZR9p{+}yYmdE^>RZf!%HMF_=bTUG@9yh&;O10yvu_+ zlbE61s`T&qI#6gJhNOb5Mw}QGx^ux1?GMhtpi}im5yR-EFY^DDEDAU4t)CtSo|`u) zl5lUDCd=HhF2h9Aa;QJ z%HQM{7Z;NBy;OU-*X$bX?p_LGBQ&Tfqx+KQ8=Z`i4733<3#ES2gt58iwh-H>4*5Ox zeM`V<;WsVpw)qDWok$IA;yF`bd?^5h1N zzwv1L&NHRVrKshKbm-uTcm9Cl>q|4s{}>Y_`?iODT7=Sc6#lfq`;r(3Cu9_slZ4On z=wjttY^ElwG{%3+i_94LC*t{U7J9z>mtU2zOmugYL{%by4xoGU7Y(y#Z$_GfjnwMt zcfAE@#2qT+o>B4PNeqYlvy7ncUOED~+l<;O^l0%xCk3@i@22aC_H72RJ%R7(El+c< z8ol&qMXL?6YbFW{o%PG%9?Puo^pmY6{0I}T=*DFa0d;wD&R$OzgmRF$r8gHM5Oe-) zcqa$!tDm0k1QMqllzd@PGF}?UXlV`F(dAGJ04M2-Z5ZdA!nx>Jk{050@9R7a0)Q-B zJEDFSf^uCtYSyOnL2AYa-^SZtmnI7veRS>Euy^S5>O4?8Mq+J|SJLTJ$<7z_q8a1H zkXmm!Zih5*b)d}pjg1{!-MTeM)(<5SxZiG7 z+0@4m#sLaDy;?WxLMptbr{HaJtIcw(tg%5REbrY@|v2t3U2cqOP z;eDsC-CIjc<_@RPrzhpCTKVl;_(IR!sAtt!aANoS%r3N;5 zB%7)zC37>$Nq_>1YaSoN{Ak_U-gOv#`C00w0q0mC&sYO8ym9?jNEK~KV;(%axhUma&{M|4vQZ7i3CCBXsR-SzT=D+EHY|5DUwo?n7N;0SL(P zi80AP5(ZMiMTx}PG%}>JL>vD#kWZ_4*LI0xpP&RAVA=3xYkd?r$NxngR`FKe4zzT4 zFYNv628`d;nsnPQ72Tic{!h@sz;RU}2hgY)5H_HKn|zZuI(6O~RJ3xDHSXDWfddNP zmhe%RSplIwU$rL-WDZdXH2&44y+QKduZ41ygg^m!TP`&h#Eow*uB@6+yFSX@biMZ49@$!_6AwWXXS$)Pgn@Sy}I=P_P}pzEGwyzsUQJO?}MRgDQ>R zANxqeYNlRMoH8z_Z|l+tA*_D7!xU1wq?P_6Dm=uD5RC%d1rgo^oZzj zY&;p0S;FYX%%V0+sz}E93t5?OWMh?Q`>2byFR-?QtU%?KBp~QueO(@?MRJjI>v5kP zNN*jbvicVV8DMwOHO)CB&5sH3K8<7cTAQ;Op?H6=)ROoi z{vrtL-jLub^!NlykU9I8l&>|6k|9?gkFV~w&sCKUQPAjWI#<=`NK8h$68D#BAG%78 zd+CxYh2Nwpp7Lm^gOnM*JJ66p0glH*tL(8)>B`9cI^>&61NX?K3%3AA@ApvmO^z7}`Fb6R$ zhe-Ulp+9|dSs`|s!l$2CY^$o>Ji-?zK&Q6FL?KwNMVWz*e5yJ9hnsNFf-G zwL5OO_s5C<6Lu>9i%mLuG*@pDlcc_OImwQ&9Tp)uSp@!glGT)*QjKXdrq!+>|^wMfpGx#ts|bhT9W2{c@<5X6_! z#P)7J3~18i5rihD@&K`)W>qG)?Swbt9*-`c2REQLC^&99|Cq*J>e+=Azo0RU#;Yhx zm`Q2bjWBp>pDVJwy{Hb1-Ttn6LkcCTBdIS)hs@js2XU4HCh~qR&ITv;f+u5E7;Cp? zOb;EajNXifg^j*g$x!$@NeyK(FoSnYUOJnXMqK$LBJ@Ms%1YM8>!Hf)f@wwt5hzl^ z^caCQ8tvm0gaa~y+smQSCU)h4I2MF+>YTTJOUwdCvkMP}M@?-20?krjAmWQ@yn{-V zj}9yNfX~M(t3HPmfVj9BNZyUTL&=vIlnHQUQloKdVBGz+jinf$|1kLJN!67X>bR@-yh>rvP-r4VW0k3N zPAuT|xbKMa1C@Tc?#9DEOH)@tpH|%k9_KZH2rnE4Ss*Awl^zktZ5yhk9wKH<2^Ex{ z$D7+O-FS{Db)3S_i6m_DDG*1NU6o)B4s?hqf`<=b!XLuta|j&qJ5QbI`jF7v>YF>2 zaew0dk)(um=q-6$1_AIxWb3&+?nVXELhBm|grJ32FZ(TJ!Cj>xjB%OxTvld(^l>pw z(YEt;PHg&eI?xp;9q1vS`;*PCPAUpGoA+);ifsvyDIJlW$Cy5~oji0RBCZw6WpicS z9GHHjR5LuKkrnBG3Gv|AswDjat0c7TX-hxWk{XH-g6ceppp+jf1b9(-fz#4bHXAVr~h0Kr&2d_YQe-1Wggr8Q3jw z&>L@gf7L<5<#lx|z59&a3kafSH;Fk-_$Nb|cLTO+rnn(M-!mq&uB`uI?P02c?UcHb4bzIUr2TyH>V~WqPqU2tjjCoy|-o(OB1j;3nIsl={TJ zUkwhsmY4SDy-$u~;C;O-F}ZaLw7Rz*;85tay|!_4(d2q7P%@u_h8F|v1EYY={`Z=P z1rnl0isy$D*Jjbiy(EVb7;@uPpn9NuIS$UV!qm?1KKsgX8DCQZ4dMB7J*iu(=?}5q zJ_}npiKLW}ir-{Ic}lU2L9P-Fc9AQC4p?Ag3HOa{o@<5NE=|K?2*z6=?#K_aCM|0+ zFdl&qMw(u&OftuWJ7td8P1)c%`hnkS|M0<)4diMx%=xrj;SkrdSkUWm({J&V{S*)L zL1+h)RYX%Ew~fPzYuGu`br@aKEw}}ZJ!Fnul`ODeWBscpaULd}ENT#12!C3nLi4^j z7+jCzlOQ<-R-bGeH~i|##I)R%)@9n11a>-G^O4k;@1v8gYAK}NfF7DRU<=^h(ui}v z!tyk>oaytL!r7PNwWr;0HV3L`vOK|ZQ2uD&zCcv$OAi-{U$=CTX(+mG0X2Fq$R}5V z6$eHuBk`4c6qdrcHWASxxv+4vQ*n`Vh?nyTMq|| zun+#1sMlBn5_4H9&dB2nHDO<3c5C-zrpBDaXVI^S&bb0xABhN0ONCUJA-iOD%>+M8 zHVA&cTR0D48iGtiVUybHBu`||*X5`*rGTW4v*ko*U!+NCid60FiKV0W;`p2ge3wDU zl+|YzH_jv58IlagK!#`gc&CweW7jC1=&TmWcOKV*dGP=8OG@@xRFY8FJJh`<5*cV{ zNms6AF7f0<$f2=`9|2=@S1)3l$6wHXh%2w>S(n2I8!WJzBSk%#?ASr5)gdxEeaiGHmxYiJf_Y-(lu5Pd+9=2_-8O6^)EUp&;tO@=jO-s|8jJHd%2^*vAS7 z>b52j`?|o{be9`n5vclc_xc$P67xSG&cKuXAQxjJp*>Mb5y-T6r;Qj|rB3iYInm~U z;v6p;+NsZ%XE;mrZ$8T$ zCTEoHmKygjMOPL)KL^El8H`pcZVV>{!gMpg-HMI2~E2?&9;(-8p` z#0)j}o-nP_JhepNc^Vj4o;H{Tbl!kFCIq(ZR^)JrKD;CPLe@vwNi&nqpXcH)g(x&H7N84_ z{-9!Y)q8mW)Y<7uvdSF}D>prH4bKkA1{L0IGxjC}rC8rh33?`YZf){@YU%B2@EQIf zcgQj3Fp&Gw-x9MZ(T%nQaMXPMi#n^$^`*mfgGv+=F*F&YUnXTsPIdc)L-LAH^B?bV zxVY4swQP<6?fN==_lbr?Yyz9}YMw)dpHklQ6CI$-?KMyx38Dz-RsnI0sGWiyt=G{5 za{T1xPN~lmN8HoNcyU>kllXk%nL4#i*=v(#9!RHOB^b)iayAr*XOCD-bjLVUq7^4- zohqO4Zyv;c7Pe2ffvFg=OvrH>!ZKiL9{;iUA&L+kSQtvNW&5Y8zFhf|oJArD{(uLr zZ54N5vYn1|T5qKGte-Wh`6_x0dQLBS{ODx*^EsX)5hHUX0`7u}I01J9y39r~{8ND* z9nppMzrLwjF@R%|@C(-G^9>w)yctKhJ+X??lTDay4n?0{kJmB&uofA2og!Vts&T`& zo`rC@la}6u>DA|UwgA7~B~2>{YRNjt_|r)YeVT&mJ%lk!wvbs{-_PdA$+=JqUoPTl zw&V1=&#OC5qBD=O=55-8(HA?vmWA$PW7p8hIi3wi++x@a3@>dUsp zP*}nBZ$_e5v`V0ic;nO8Z|94wJSOg&MA9L6o)#8f&~H$lzCeovrBUDS2;A|rGW_DI zAg}tRqHdwT_Kp)h=x!hhj^)5_=)e^w|IBV>-xzFePruFER216q8brNJng3x)k38&? zI~`R}NlN-71oNH$A1~M^P{jRUBtCy@*?=IPn2~1PeSx4F@=O;#B}OVJ%P8Y62AuGB z9%W5FG_E}&G0m{zlV8t~VP6WYE1a9_l85u8I0h!S2wa?Rh!_v2h z!L{4{1xoS@4pps_0>qkkn=K)lq&HVXBag_VbEaazkJo;lr#Z@cu0CucGjMj1>zZl2)YY) z#Z{Hmzq1Vn-4#Y3@~dlm-6=%+;Kp^MPI!(vemj)J0r3AO^!EbUY9;o}sFM$N&PEo@ zw0T+S3ApS(mc^C=hSE3aFqFTDJ^s8`!Ux|?2?}H4NM5vfYSxp63GJ+=_)lI|iuJMS z&4dAca$Wg*oVoEh@y`!&egTQDu&>R1-N>4jUw|9EhSG{-cg~#Vvf0}N`bqSD=B1Lg zNXhFNKYcG$ z^?RlNA=4*;2=~h>A|uUF5u)+ZZq(#u6O$FIDbGWfub%iP7v-zcZqqjlRcV^Wms=fP zMiGhaK8T%(g06RyV0m%1!7)cyM&&luQ3Iz32){8DP6)z#2ja%ZjcxpH_hcU3wYJgP z-!qpegKszif+DzqYp9r&HEwZ#p_s&E7aC^3i@({>2i_i1`oi93o_5EhNJ;pY=l0|} z(qrR05-xo?9|5mvYdb6(zwps3$Ga-}87l`mEsG{lyC{<#&W~MJ!_^Upn1FMq)2oumx%yaWm@#hTu`*F_{9K%V?!xq#Agr$YhBE z9PF7>6gX87`a@krR;81*j-Azp4hJh~(;hgffzeOd`0CKbY`jqlHr{l!D67uzaboCQ zShuDO26X!blFFeYwu@O~#`F?6gw;gL1PvLt4QLpt;o9*~v`CKO%sG-5Od$1B=-r72 zJNE<@@c6d*o2QQP)jyk9ALpB-mdsI^mAx0ffAchsBn?LTo`MYi7QQGirFXCP5W3pj z?k+4!+!KiqUrmMp`rx6W6^9weM^3=zlo_DK?cT$_GhQqOd`sMEC6)Qh?ZrL>CXbEN z!2DL$(9z(xmf;N>_#J^!irl!2qxlB--@s2Y5Y3XNn9PiqAzl0mGNEP1)LQ72Jw3w! zW)7bPC1sGi+D~FKqJG0=DThvr5A4kKNq9r5mtFUz%@P0&JFD0Us!y7+AxUC;$u+Ll zE=}C{UhVxptriQ;_JU%#l#WkDmv&qt;FpGyG#2{@_pb8VhePWHnD0ZQ6dhHKYbjYe zNEqsc$<$#Aa3#HO3&c9&Xy-T~(@q`St z_!X@`u=|*+lne~LYD~x{y%DLtrA%el8IOj?0jFv(NCng#Lmjk0#iOLhL$ssZj*1zfR>0m=$tMexWQw06Q!N7#t84KB zdI;*R54)R@F7_~(O)lsS6f|VK!99Eotxw%xctKYino{Zr7(4y=lhz4?+>`jk1|_Tm z9w}*Tkru`!Wo&|96XqX9=;psqOc@qsyItbk>m)SO-iB6EQ8#@dug+T8hiBM@p#XR; zmEF%KO^8`hA%H#hfaJg)hkcPjPI45p-4Q}Q7zAgPn>HWi_KL&l0`imyc%F3YUz_9c zU_fcUTgB(C^ZgWZppC#$9YG8-hw-TfxsKzLZPDnMLA~STq~WE_PEQRhgRM1`SeviQ zg^5n#OUQlD6WdbGZ4uDQ^ayemD8hK*$vI+ArP6R(-Ut1Dv<9OkB)#9&%z&ZqyQmn1 zWH`N|hTQz8wl3hc_Cgh&1*@2K8XFt!?ySlw>&QnJCNx#I^i-r&ZAtWhK_Uy9KxfIR zmi4Nl0G(9ZntX1dnpqn3vpL<>qGNP`(3`BL{?7$!_eQu#82uZy!&8banR}``u-TGM zIU0;13vDI?=b+f2dO#&b6Na9n3ihndrR37z<+9&aS-r^ zw_BPw*}U!o_CfZ9pxx6ldu)4(<;CR9(}C zmD3o#x>ofa(%*6Ick4-wRFCDz3=d(Y@<8pD1>xkeGP2XIr&g*J5&UpDY=Yksm6zX5%`QWA?g?2$Lz-yk-+MgBOM|I2lv8Uf zYrAZV)D-9ltF#GO3RnGpB2!)1^#yc$NzcMrk%?$vUW;gFUzBvqI8u{3Gy8Lw8}_10 zACeQ8rL}N@_T%~NU@z3_69xEOPci(s$VUS)dT=kDXaN1yYZkn#gU=)grEZ8AON$6* z?C2C1TqUxSN)j7fq4K=gF=nRT!~)^P5T%9TbgM<17rPC1HGTC{Cv6{y*@ewV1X&KB zi2uYLrQ?>z+zza#`DxGfSB0^^{mC+L`Qw!+B%d|Eov~R||36cI;$DL4XjY70k8J0~ z?Pp-)v-LuIa*rI<1Q8(b>PTc#P)`bL5rtHG4D*8UQQq|mwjxs}T4#f5n9vhg1~{t4Z{Nwp{Xrl*kgrvHq(e>B*Q7ctGeu^|7&_Jz$!|t zM>y89Yv(PfaR+C|!L(0t+AP>!=y5W;4Z$??dZ^3*8kF#3cw!P7G}(PKv`6exblu^& zI)BuY^>c@07jF`{Kb5gqsQthcI_*KWc+^brQ->Z@A{L5k;gVc}O*5zH2>3#b0(w2r zHZ-9K#Z=ws#h-Zl5VM^8h78+NL$_rVzH)!Ss5S$0Xjp(Xc1H&h?o0gd@P)ga!`f zP!HwBPuK44Cn0GR53;!anAUb)>h>r4xLJI?Hj0cue{SEfnQk%vTo(F@(R)tV{E#Eg z>%L*Oz_H+CZX5%)uzUIgw4;=hX+0R5CzyHT1|XL$R*^bo<=@AHLBxd(8xoz$1Tca{ z0!WRp%Q&!d!+p3M-w|UFdF;^+6{&I3t(-N{Q?7?jub(P$NbcaYrhKofm?5 z6Frq`x+*A?G|B`?g)DpQgq@Bq+j;;=k#vr@{)f`2%RtJjC(~KwH3>+%P!~#bMqg;T z;WqLs@+OsOn5O`Q#H508B|1V@{cUp(ZT~bW<;P5EnCq-7_POb9ilbn$>C9SJMfu5k zN5_%a9<_{(3QnKL3?Hq4ojPU>?lv8_jmfj~m%?_$TYdb=m z5mBjOW{JKy&KaYyX%Z4m;{OzwYJ!AQ(H%}Jw$llW>O^2T;q{8YhtL;~5T|FqDxv+( z%fZ1BShr@b)dDDcIUp))ZnR*G$JM(Y$K(z8ID_*Gig?+8zb6RKCb~9n1O`j6?*~8c zxs3Mo)D(zX?%SGSQU|M|0UtW?z-o3H?l5<-uyH&7EeFEv z?OViJ1e}Pe1jZDTWlk{4?j=Y4Zk5L(IyB3U@3I3pQ1#_wh_Ojov8@eMBq|IV&0WK>c0dSb_m+RbrI~$e z2d$T_TOp8&L!}Cn2ftJJ z?WqgI{>y3xARa0#q69N^C=_3#H`+kACb+fEDBcSk_&|1tjTPyY)cw& z&r|OMefvrbR-F<*hcWMSG(+RGc1zjm8*KUN^73$^cx7h85L|&FOH2-+EK(ru;L z0ds5f356~F(OxL@dP|I`8Tg~b4>0@jLDNTtSG8c5(J`@q*Kyjse`+XQ>;=aP+; zjNqevx_F!k1NhcX@heAm^Om&pVv6+6#>NsQqdgAtBA-;iGLQN36sMvbx%0u=(Ve6! z9#H)WG{2+PdOU65Z%sM@4yIOX#6xr(L^134#^e6ApLp5)|FZe5@N!Z$d!BI9|p zTI5hM$Sx6#tplS02APZ7{;9ah@;V}ab?2NF$A)!y9Gw=eL_^T8VehCCj@Ghx$yOlg znQl6B_SZz&T{8*|F-oVA_Bb^H80`5CG?fgrs7lQT&N*CCaAnBq;>pU4mPPxY;mKyC zxsS6kNEr3L*|ZSGRc~Kb`dJ7P^lP;7;6A-!CjhrGy*@l?Q0|}bpB)m`onuM1Oh|v8 z-HVi@%e0xrUuq1hTxy{?g_jT-7q_CXDxm>1%?lTDOR?1%K;7w1V(ql zW?D3@dPD7lZVfd?E6?i}#pK=Vy)WB9$1Eob2vkXfjzuZ0WM@eJml+UaG^)RmT4=fs z;Zpj|z%<**dJqMKaC*(d67&g|d`Z%qlcI5QJG1w_?9Q zNMe#{_jF~luT^7BH6&?i8!W5}jRxGZu5-)bM2MhCf{65cjt3N>;p%*7A-<{%W`GyU#$GZ<^l{0;ktmelx0m{5@^PCP(PI zD%VfhaDS|<@^@Qya9DJjWw-urX;}-vCi(VhUg|zy>+pt1M2G2&Aw= zOM2^J{C%`~;OU_~cjsm=_~$3ca@2YW2j21^I0JMpK+tk~s(>KUfT^~w)uu@m+j%vt zJeB4IZV7U56U%1Z!a}t(>_>+XnTAn}6O<};d~Sk=-x(75isFYSadT3fg{#AJM7bBU z=NO*!Jtwf!39}2xLgx%9Q}ewQ^)i%mc;=G1UtV%vBz(ki?h=p)sO&byue}nr2SPPp z-cUl6novA@k`#IN{K~Q7YdaZ(q{@Km9(rt*6rt}AK^GAM=g*X?fnJh>w^R;;sr$!q9hVtg>h&U+)g}z7ezqkgv1ngqTg*u7`lCUvaDju2oXhm-9)R zpNE%Y@<~y+UL)9Fx;r_Rt@5#TbMYS|(y2dQ1FO*pGO;A$$}$nU-XLc?`-anq3KG5~OfL?Yrz^$e7J&3BC& z#mmusI*1cAab>e=TGzsB%AM)dyUjEv{?5=AXelwC5U-T#ulYZj&hC(y;BHwTSt|IWX|ss{ZuM9!z`UMrOcioZVH^lnyF9Ub6vp zW`Bs8hX=u4lrL@lRBWrh^S3OVx!AkMuNrx(a8R{kcve>9@n$Z_`0rBxDgJB3srLW! zb+Y{k1K!lS^anCyZSRnUD8(AM^c*Iy9}rN5Z;sk#*_IutGK_g95r~|7Me+5quMzng z%;5R1MoR@)vRDyi5TbbdjC0CW^}LLIk4NjWiHf?v_d5p2TJ^h>J>K2bpl4mIDb38P zUU5q%o6Mx}nKhTFzNfdiCg4bNu>wsWU9PH!cE!dGgA15j4XYp;;M8)&Ld!TTGu3K< zpSuz9%z+o!KABdpdZO82HfnFU$!kvTqhu&&AeewjYT_8EnMiRZx628#ouLo_8__wN zUQjpDXUhtgWE+%Bu8`%o{dcjI+k}lzaoi`VbLIGhil8iUij)=or7mIL0`=qkG|>F^ zjQV(JK%+`R5076K%t?&;2n>>Ej-ZxlDZ1UApsA)OnwUl0L$XE3O_m^9!Pf{V4|nn(tCtNb`wBLIva&* zi3&sry|aj_kR&0dDyOHVd;EN<0^g&zW&|Y_ns%IGb^TCB(B%^Qgclr)#6qpP%b$uN z6=M1>gf3mygEL`jEhfib^&8SP)SdX~z^x3nnL9q!Q7XJl_cL_dRbAGD;{^@Lr-24L zoTA=0>XYAHs>1zi^y+{5xuy)Y^Vhd({q@~!a-_|IMSWd4DEg96oT@OHN>6M+D zl#1JpvtYeLrHU6p>v7;yYkcb>;tJ|mmbN9L2SP5VZ|@Pr*uH_I zs7wqJjrjcY0PRDZd(7H7M*vIvK3IMsH1sVlX1A03SO z>E5juvPj+6?}bnELN(p05Y2maI=Fgk#XOF4Y`U&(e~`M#%BbT+1SxZ>xFP$PMpgO6 z-7`OzwA7_5s{Sh*a7XrvamD3_{ox)3NGyi^XN|MwtQGbkBB+k)t#3U^KsazEi?O9v z+#~vv2_8(JsRs=pEeZq(1t-5b9?db+z6j%`n7Th89?du!WA{#S90Wl&E>}g_aC=Xqsr-o z;TDnCKyK^7r;l9(YXN}-4aFEciXe%PXWcSm>Elwtln`oG89NYiVc%Jc1G?krGJ*ftYZ5`tihOoMehfIkXCyFf zw6caTwY()3mi4IN6vOJ#uCu6qDtbKx(8$B36i_iFWuMY_+hyX-f}$NWf@hGr*9UNl z0bD_sWb|w?;%elqIo9;Fw{MuqNVs%leUKzScVLR~afI@YJK+~$3NGP&+K%}ESY5i^ z+2Kv|AW>xIyqI4=0)6pWl+u@&OU4z{64x!x^qU(FE4%lwhOlK#>%-W;EUAb+o)gQ{K8`IBhMyyX>Tu+=_oY` z&AX$imr%3J@)Roa31P@Uyk!5=SE(5JNJ|sX!QGk{o1bHuEcPv%Re@DqXn^BuevBX= zm(_5{-F`Q&^w$yV?)KsC(c0hp9iMFRsp)gJ>_X<=Ep;L>}`(sD#c0F zV(EIvy1DbG|AA_o@P)i@=jL;-X$9Ls%g@f?*3K8ku)zrKB~-?lXywy!K-5v@sWcP_cRQ2Sds8~jTcY{qwk2Vv$}HH5-RDIoFYmPw0nCXeObdFd_y{_6@A ziM8#v3a2(8H^0d{8>!tMip??>%`gf6+0l!gNW&~_!BG-%ZMd%x{!<9YCJ?iHJBM3` z`t~5)zDAX)@+tGq&y;d*6~f-oS%MbK^6o%TqX+Z@6UQq&xqQ_aNhPH@1noSOV$R0K z)~}ZIWSOuFR~hM<+1}&4T4E)2kM667Ck^>jV*Nf()=Ap(qYLoIAK|}i!JkyjQ?C)2 zhC5-Nj?DrCG_MiHPf6(L=RMW>j?&4n%ne8O<^tH17|-qV2W_Z+H(QoXoY2DA>m(NHY13p;vLI-jgyaK{LJu8}Fg zJy46NC{*^YCbq^jV6>Zd7whfKj%?Vsb{wAYJ;~+k3 zK-I0TBcsuUV4wdzAdGO9#GdJM+t*yOOxf(oJcr=Pj(a7w{D%&ir*`f#KqTP(F%rMK z6R@>`!^M1G0W2vsF3?mTgmn1Bo*Ctv@UIs@W4{IxfJYoT7zQ!9)+8%|C}TF<{XcAe zDtu3I7{y<7@DNlv&XQrV@ufmx%H8r>=%hTr>^&F1QO;&F2jKj_yiqM#8^>5a8hY4~ zzAi>ibBe?Fcc;mJ$w|UE>(2{5MB6J95DdN+aYcl0#NXw>Ko| zl60(f$z17b$xx7*cxO;j#AedRmgfz!dV{@G*|~U9gV)$qOjKHVd+xNfEl^()$@InU zUA)0dnzX;k5ZCEAq_v5p^Rp_>JL7CjIqdu|KZWwTS2&E5Fuxx8fy;6Sy~W-yUjLMP z+3akusW92akc@jjaog!*s`yQS$+EIY)$B=7M}!|PZ^q5J=29a*5Z!Z$>+yZ0k18>G z1L3#h&~?A#q7nZnnvEY+BsfM)bN^lmx)w@}ue7)gmu{qNM9n9qyj`q85uc&2;Sm`z z#V0md$S7@ka_{atD;alBLFHX*B5F~A_n8u`lh7|Gk^>-UZGR$iRV+L zkYvSk(bwaN!h=DdM(gegp2+h(64tJlx|knRl?iDUqKY6o2%s;!`K+zniaN}@yiD5> zpbb4EJ{xjbP8B&H5Fl;4<8k{5LMk#36LImnjB*MyxH{q!d+jd`CmqEwGdGG)b$lA) zRcnInWA5Phr#!YonKDiBuor*fG&!tTjdfq*FbiJ}A-KKaiF2zTat*G#m5*5O4mzXD z-ptDLp(f*J0gpyp^QNAEfzuZHC^O|Wehg9%G21TFH>}G~Lf`L(jpry*?yb>u=w_Iv zK9i~@UInsK((j^SG_w!>%)GS+K@-t=FmzdT9iX;If`VaayOiu7KFRY*+5N;tCR0`LP>QpV&PW)&CaG6( z70r=Mzp41~&p#rsQH|{z*IKMnH9HO_b0ZQz-H!(u{NMeNc|feeqBJacXjv#;=dC3T zY`aVf=$q2*RAU`HJ|>=EqQp4;L1wv-gFgxB5~zKEn40xw`i*Q)@}s0H4uM2dX&+6E zA%y$|$EU2#c||akiox7oet`0Yz(p9FB{(JNiNo<{~Vg{7lJm-_B#*f+xC<66oo;V3Fz_ja&Jli+0i}(F&`+#ZQ13Z z?G@Rsq$1p?e>#DtO-e>os7Nx^gW1escvs}1)rSgmlSlmrp?;E3K~8_yOug+!AbNDtk)aJ5(d@KS+dxfWah}-AuwIiZjP7$74dr1>#tl+e)R; zth-opTC9+7KGJId84ro%7EX&u7UwQ-ft$xw*Ihc7RK{Y6@VZ)!3>)Aay%zYDOQDAR zg4p6|A$gxa9Rl|j*JAFbbF~NmEOEPaCR<=bj|xhgl)<$(G44*? zWeB~YnS5x&b#$uAD*E^Y zc;rVXlX^o1FXaocNKq973lZbg9HH8CJvYB^aGvPgS1$Zc zCfh+C0^nt7$M!rMxUKZ)75Drpwk{Y);O&cCpy~MoV}s=U7vR!Y+7HW#MHL+wZ;pQ> zZocv3QIE8*&PaeNvh(U&graex z&PET%`9lN_z5zuozL6iv@bqd(_tY~`2XOB82D8wV!@CNI>q{ee0*_aNGyiyL?z_`Q z7%M@S|7sE4U`#4nbSpV17dd}mS4V+N9Md^0$g^Z>}-XqbWLUaCIp;`O( zeEo+Ci(_klU^F|-nETsuLwH?xhE>6YHcNUNIz>tOS2hiWxUZWbBkCAYpp8+(GduCP z$3CzI8AFe%Ik~WJWJ&xZx`rYBO`M$UOZ$}Pq0V@SuU5?s`oh%i#h!gaFE>Ra@feY$cdj=4mp329l%w2ko`2Co4+dSGL_i%st#du-bYlpT%{i zb}Le#KDY3hYvTW=Lo_?@qdc^E)kwh$s~#EJI;363Gm)3s=M6eXJq2RoY)aX$nbs*a zLuU=N+w@En5`>mh9C51YqRNEIm&tTj9L)8N$h+m)nK{~^aR9#*;%PU)HwiF;X<_%^ z`?F&zMzV1)%9q#Qg=ojP4a%LmTWZrAd;mGz?Fha2pJLimnmB?lqq$6&`sHt?dw{oU zJqn7j3b;qZxoGHx@;Z3ra1fb^cEjBhSTe(?Rm$9xmD^%ry+9x=QJ%504X*?C+fDV| z`v?2q7lbtHaWJ3&iS5WS+%rURV9kqoZyZg6mB_nF5Y5wB$ z{@iiFl8_OYLo_3%{19)qR4KCa@Rz3DJRm0a#8#pG7eMMG`^PSr>d&i0el%eg*zxlQo-YyM@bc-=`}8NgWtbCvSjwhd7RT_8KkO z%6+~jxJ4e5cg{>Cl|sj1duc)YkpOM-pgFc7jb&kYCJ2b%tMRhsvu20`&FJaT>28ZP z*+!oCH5tlw+TDexKi5(X50a+^JBj9_9iV*Oy+ZmeYzPG>B-PDlfUU_>yk6_C@EOE~ zidGwhI9nUx1on0{x7&qxeb(M)pNF=FI(H*n7YQQHXALyCrA6QiEEpJc*SZ!QE9DA+ z_o_4^PP2K7qo2&WCz=}8{7L~lIqzDGNr`REjW{5?62F_OEtmE$c)T=f3iADE^eDaPAe+%70?S!QdVzEZ*gY@IG3iuc1;nJM5#@cYotNVoNdi)hB7kw|)Dbo;Aaa z8zn9t6Ag>0_1VOvy=b~bLSG07Y%kk>@N~V`v|l2I&hNMvcV+7K`s4-1S1WLZi06gG zM{vcdvtdBt<|DfY@~}q1c+;D<9(czZD>F1x33IN(ar|EZQN+?7Euw2G@@f=jjjq47 z_sfZ%Pvx8?jy|8H354+n87`KEG@o$FCgeZ!`@8VUm+Y;7R=NNL5?n;lHR}&C14hU^ zBDHizod2g0Mx!eJ+OGDcn(NvV8}l8;A?_7Ec5~fNqsb+_N$`CX7I(Wai;tuHFbpVP zVER^Vq(n+s-loY+*^@$2rwAPoiT`#C3HmEpCyKV|;T!pR%Hm8EXG|9V4l9kpa0=jA zuo=0$xB{L#oY!haaE^~`q)a7IZ6i^RM%h|?zx~1UL8?INdkhsK01q>oE2y?`IlD;t7qNRKExFDJSj6N zUBB~sRrBzP1CI58nuE~>cHSw%vw0-uB!3g~bIcsOqxLk_P^yfgVGFd}x{*&;6G?o^ ze9Enth?frWIwb_{VChcC!~xWqF*PNo!iod_OA4q*;*W0kbHEO4s;u*rUd# zpmit>de$Kl!zk=}ky7@N&M97XX{KLXaq$H!2M#>vs#O~4 z4#2Rd7+eAptvyc?CYWx4`ldr)XUMm{d$PXjjqK~wI_7dSx&*{`<5S1;`x-{@{G<4) z#|)iY(mY41ePN$x?N3W-eQsB0T{PLPyPbRdJ2_>{ESyNHCz;Rp5PGo5PGkT@L@wSPa0c_s*3+U+k# zo8UMALY{W7{Ndn3)_=c@@kKbXi8TpYfS?$K*`;e-VCV|FtfOHr#*n|`n1Uv2a%~8P zidV9`EN#w57VQoPrN;o6W$k5Y5I zur9%CUzMTctrKD1o&xRCY=xCg(V!`4@&PJkZMTDtt*NmG=mAlB=V32F_cou65=7=- z6(dB}rI*+9G;IZ&vatd<7v;?^HeEP#{QrAn@vP2?N{S!RjocTN(ZaCn)%C z=Pna>hwe12B47j_Y_wGDd>B4>%)(b2z0RT?mYR0q!R|j4@K~EdNfaB?xD%oUF1HW@ z5x{|2D)@SVG>RuiL<8H}-Nb?oL9@HT&P1Q>hp8uo(p!7jA)btsmxb4;?dy1~1;Hog zkap_0J+0fSzp@e+?)y)173yuFh!Ogi{2=z~H5f4APZg9|(t%=|ssB#9_#BYFGTyM3 zYem}?6yhEfhdT-KiK0}+pwd$ls~H% z{1?2fD~Tw;8;GuUDyN%ddjlMITab0=opl86=yXN3z1(256{(iH1Z=2g3P9LVYL&|; zkx(oB*^`@XY!A@CXILx?zWAA?%4)=6B@$yprEFfM+^cUUO(dHbg8%nBumg4e(OECc z=L?Tv(=l`gHFwTRa(r1DL05dMQtlxt-+52ThWq|)?454FwIu>ThfrtQ9WcuaKTs_n z8|WEzhzIg}xcY5g@%c@PPgY&;G%3{#scj}qLU53y08)H8<`SvoL3TZ}bRgWjB-HGK z5aDPc3%TAsr)h$=+1CV_#IWAAakXcsn45SYz6b*ze6c2QqspebwSH(Q60_iP=;_e? zraA&kgJtJ$Pq*iSu-u?2)VE!!@+&YVKfutP|Dodn0!CNiIuzsN|1 z{(*XYf;d}vMctnwrlc0L|NSQbp*0w<9DMv-9}Y4LhUc7q^%a)U)dQ}!3xmC$tr_G3 zrpnZNG*UN`6$Mk$(07?U<&kE*IUFcgW0B#*al4uq%MYdJsjvmBu%P)PRmk2r8tZt+ zhB)T~2ojX%WF}(Ovr4ZtukVt*3HeQ-?+_`lR7bOVLg@_o4VQjpv#~2-g;R!9OupO= z&z93Ldd@*^#Ndz;0K2H?9>>x?oSan{Tt}9m`<@l@>{6QZnsV7iXMdmqP9VIi6&905 z`D)SX{!V`_UTa1~IBsGmxK;VRE&*Wu5p|9q;zR+a;6S?0b9>xm?~1$zUSW3unc>JNhqwRNr^6; zBkvOGB?y^w^8UOMk(>EPnIj0)sj zi?IBzfmkMc+iM1@$~bfFPZuMkz%|+fqCSRMJ2APSu88dMDt4e}EugK_+MFtVs6A~= zX)D=FzSpx}Aj^4e5FUqJRPNelL@W)ew`rLzzaHc6_;bt@Bgmja0V$<8p1N5GkA)V~PhsSGb&;W*R_)JEk8dHFR zu-k~WkDg@zS}f^C>7@l7nAK)I=vv&d_SeF1-wa=!`77b$ zHsOqI_@L9&&zY`2n}x!4GM_!giiAKNGc5Ht9H3+Wy{li}(^+ga^cwNb*yih_|BhIB zqY4N1=@6N%A|tBgU+6>m1l3;%Ob9s3Zc#CNM|Z_!sW(wR>BxAuiqTBsg@{F?&djR3 z(z^Y_x+Q#Yz{XGu92*VqV3=lmf4ZAHp|#$)Wdn~C8d_yeHN|tqL3cR|3WqLGUEnXp z%hlY8t@#;X?*Q-!PZzDYBWR9y)rZ7SO(N*SZ8(18J%8}$Dsj(vs@b6qJ;F|^y!=6S zAV{tN|33i0H%PLroQO2PLl_6j!BNP9_5t7V;zel= z`1Mm?{KPL_dY0w<&w?Q;bCxG%h(Uh@QOk~u+5?b?q}T-8`O7LwX`dwF6nY^yG4O6n zs1Om;2G<7W;>(7;Eo?3jA|<0DUNWdN~F zwkLb*8QdV#I>5mGU4@18HEE8b9QYx%Qbcg1x*%|>Kd9oiCS({FhF9!Rczr$fz0Zkq znRXF5yas7C$DfQikc}f51sT;1luaOFHjmvoPng2m(rrvB+p-+1%HiVj7nESVmvQ@k zHn5h@8ak9oBiij2i#06dct}nV=wO)wR8ufiR;>0T zGJC44jRCzc0{e(bLf^d-X zUJ3D3$d(+}*Fo4L@jyOIrs=b}+%w!%bD%k=B0iU@=dbk?hcuq7V1Iin4gL0u`f_r# zJv_IqD*|N7GF{tw)Y2NZVS6S#4}Sr93>3P$ZVyjme4tWkXY4XIF#T0O+IL!mpzF#y zRuSDMKQ`%XHkqyA7#QEXzPF>R=W&|sA8f)t-P@dV5B{ZB8l#Pm&UM1Sh)LghK zD{OaCh5$#3M5HWY5LAsqiv~+rPzb$5ukh%0!*GqJUC{F#SVT>d{?pcO?vqJ(|6*X8 zkA64V0~ezbjFtRg3i%cYMB*^fDzEZj7Ek3cM&f@5IVntwZ9|VdA03YdYo@#Ee@1IH zJf)%pt3bOs=xi`Y%#zL6yO#YpJ=+fSM50ZZSpIsnSvSGxZd<%xD}OCdVn?xts*Cfxb-MKPc};vAEA|xGE31n@et#*Kif2X z|3Tx-%A`%T$p}@2?la88uo$vY8C{6TY764eQr<`f!&PPnd0#912;zV_AR;RVqWcN> zIq{UmOMCys$jD4vJu!{0r_*`PGzUyW85yB|pB*?LWYQXHFHSUHr0T=&d>o@Q^)4Ct_e4PyB_KjF z(*)PuCfZUB@LUdaTe*228 z{qW=)Rh+J`-Y@AQRL3qoEP$y-4WAeUWc6m9alGR_mU|bIQ+v7GKsakTnTP#~jPe#) z$*@?H#tdUg5SrF$mf|`b>bQG?R`=K$MECCMDE`lPCJi+rXsu4<#ybdnJ`ggoa6t__ zB-eM-%YmnhH3?Ttw5CPCZ$w4@vKrj2GmEefFBCS`n=%v6fh-QNI*G+LXjqp(p9`+BZ~>J@uhoFtp!=o^FDuKn zt(#xKN%*iO_z5^E4!^S*^&&5}aOnIq{P|umSZPeN7VNsNf4N&vAF1Mx4cRcCutb_g z7Ve%J@&UkHOR7`dJmNHX?>p)*4T+Sf+Cq1zHZj)pEcahhfWwFqf;~(HgupDtDB}=I zehH} zm@;9V<;S-dh>;)+9>6p6O*TUeEar4FFUP{Ifuu4@Vrqm))DbON$rRI@R|*e4X0f zzEg+YR8zCqs-OWORsb3RPdciDP;O7rfzq|=bof8(^qsTH*z4SNX@hjfOU9if1uu`E z1}4%0@#MCPsi)W?a(a(iRg_TMyKg+%X5~2M5SA4|JVbra4r?HtP&`l#ma!`%%5;(- zN6bEdsp7R>$~4sfQ|19W7-0tgrZ>-`4nu2d@{Pp#^7;Uf z4a_yNXX4r=_4&O+6K~VeGuRU}|9b2Vidu7bz%?6iD&nJAvLf-gcq1HhH^=x%wE=g= zGQID)XB&tu$Qy6Tp8;hTf1cAA{r)h|(XMI2A)r?h{5Ad}MHmFBGbHALJ_Rq}yXNtM zT+tIQ$DP2F{|1u_ruh9gxntSIVO*QSVo$gz_$IG~idP^tZH{|`f0k{RcHpP{ntdj5 zVldm34UG3Y^INC_-!A|voGBl=c;}l5QJ>!P7IY&>i0=)J4VXm}XHYT7mOjvHU$(m) z(-{#XS2p{Xj`Q z{6}`?Ssy1Kv>Kg9kmySuKO~6)ka~u|q`y=UT_Z3zBEg=RRAH|GoU3g$^1}&nu{;)b zi-tUqiXb;@IZjgL3ctu9Ra~T&ks^wekMQTXPHQ3axr$H7sr4i^OFPScv#V3~pK{!r z#w?M%{!;!DuG_})|1?#Fqv5t@9x3R!jJpq{k_W%zE`LFpwGz*Gqi!RB_j8-NNtEg! zPcIV})_??wSZKzN#DklBt*$!3kuQ0i9u${Nuc%q0vBV^+d29(cbIi=pqlNR>u;dSI>;zv>a(L}OC@Tct7CC5zbL&rrBZm;BwijS~bgo(0 zPN{OVr;V$97~L(kjRk`_Y>lAN+pP^0Fa9@0B4C_p*#cr( zXPQQQBS9#-`%TI-fMuDob;sY0MBpeEMu@DQrrv_3o%w$kR2oXR%GPF&!2RC21$J>E zjOtoDwK=<*RYJPL#xPq*o55=LeU`;#$21;$l?Q;Jf`(VhPxt79grYq3W1Bn~{g&(&y*5_SnI}yL+Z~ChHqNEL3 zOKGu)i`OJ+2U)3(*>-9)oLhxm!afI7b59m&p9~+hr9~goWru4Xg|}+Q=Q)fuH&{$t zx@_xdZ3;ya)xXlKpn!n?*W^H&hP|D!->?$Y&L;fQ<`&Hvt+^7vXi%Qr$HFtA(16L_ zZu^x}$W433`-4|0!PGN2l0{>{(Lt^q43SR89M>Iiu`VHC93tG60qw-y=u>{9{UVn} z5EY<-ybvV{5AHB5oc+>ZI>E>Z&7;vJ>EuI+U`1n*1Bg19gPd7^#a;;+*6jb|N_4Q;NWbCTpP{%-e-k0;~)cpc93A@LT12ITb++lFKBb0RzoNhd1>A*{pZ z_4gRBMwJ#z`E#qT-K3SX*ONzZH4WS)d=RzztPs_EACbvoA(9I`=^l;8JVDVHc2wR< zP(1m3_u+$EmVKx?RxgKjRxhc%Nv-8O&Cl&hRj(uc4=(bVyL^VJyb~OUrnl^-)Mv)$ zPWw1}<;eT;=oXQ*3cjb1pL=ke`fuMpNi^4{pTU(!eW~NMv#= zKq??CsRoz*Lb2`Aq>+sa9E0p{Of|B>`_0nriRFwdS3ArW6Z$;uQ!dh)u^kn@K+$mN zjXQXZc5F-F*QP*j;g;uP47&EJB?k#%WZ!QyQKzql}o>(=~^ z+1(g@FXo~K-Xic4d>-eae1CO|0-(lzsSb@xFJJt z{S9F*&fDm)8iDQ4&uE;$Zh%Ifg@03Tuman?;S~};H+K@7(C1u;z6m^7GOt^rTgBDG z&Xq%BjCnSy7JwpqYUETp((D5Yw`hXC1vq~_opB%rq$IYXJjYVU0pn5>6 zG}{fdU{nLdCFk-6C*nL}T2%Qd_%k)2?aRRsFz#V7LlTT1!^7;9XzQ;6>1nn8E&eqb zMFA#V(N$NwaMu({3gUXO)g{KX*CiXVRisxw%`Yeme%L@QsfOw<1CO;0wXuS!_!x}4 zDVdqFZ>ysa?a{bV;RE;TGKS{@%i{_Cd906w0kej!HW{>FbXPf?<%?;*f=)ovKD1e0 zn$Hz0qE}58zHxG)yPWz#XIxIs)A-Mfv)jH-p*Hlqo{1<~ara$A+vNN2$LRZ&hNqW4Xay!dRJc%XiA0a*qZesjLFV%p$fFCz_sDRTBhj zUB)&0j&3M0!V>^$TjA=bnI;;ib1RZ^)nKVie5wv|%$xo-Eu(`#-71?zok*t*+*379 zH*s%{YuLUThH)slHtl;geQ49X3hR#oQ_<5M)dt0hc*BB_ge0hp+p2;7R2=*Od#Tn$ z`a}?Uz-qY|sNOF{rOBed^%V)|DO6^>AVK{@^85@4

9p9a=VucmKH;|lGC++DgLQ;c3gF9Cz^ox{wm;0yl{=;0Z< zy%9J=PaHP)E+}TpZYl%zrx+dQmc)<^x?fcW*jklsBoK`KQ!l42eUqls3wX*vU3;#u z?HA;yiB%31mLtXR8Q|;jce*D#r>6z$tsz|td?fgkKS=Tw>*`3|4i{TtVX}Uvw#3Bv zRZd9E(6u+J{fUuG`p>&@+TX`Pbln0pf5H8DI`3~{X$MDm@$axC58br@BA*?bzHFJ>i=dpq-lSM36|$vYhELLc%jpWYC8SzJztZJ1?N7Jf z>h0LMSj^WFO>|)i&c*uTV&+LkdT`IPxGH$ytUUQVLA=|4t!(b6()cUu$C7|EYt7|% zgW$xSBuf%nDX5nR56<*xEKKEJQw}v3L6pLlWKgh}KFKiHdbQ@D(`-`A?BM5>!@_1q z;9)pn=xgICe>2wYZfCri2A4o9gh7+a+@)y()sUo05aH+C{+42mne@jYRQ&|heWM|| zG!?I@QLxZMx0_u6KFTU(47Wji@iyl#+^@~FVZdP9zcOe!O7cdpjs1@vOqay${xWu= zX)qjWwPDxtw4PENr@nMGbJ|5&orP7@nD!FaIJqIF+Q`5Z$exQn**#iu>RPPcuA|gm zcieH-g^3+%XMWa2K*O68DF1R>Hb?w^4lA(2!oN~d01$-ZG%<5p8~_lXD1G-`&ghit z;*FCT5CDIN_F6EfxLPl8N6LgC>R7ZNhNOC6vw-6%DBggu|61_=?Dvu<^%%KzPIE{@ z4SbEoXZ+vB9s2U6V^Q+dPq?Zl~Fjn_Cm9;2OJaZG!b*_vR)Vg|MmcdN||A) z*0HEnZj*yY4y)QOtPaj~KagUlXb`;-_A%a_d&MW*{QEs7aA1$v4x_(5qQHYwe!`%~ z74IHh?M*dg#--GHl!s`giLoQDArZ_bQQ+}ZD#)rcnGZ2@L%tP&no~` zw2W8P4FT@<4WIO*#;W@#=FBXA=V;WxR3%~qx{^je$^xl;l&?Pt#oOIW6RU?MMOp?m z`}R$`qPgUGmLtW*LxSs`4co;`RhG9$`3^34*$tPTzaALnD_m=72h*3+Gte!Qzchl3 zu^r#xDrHX=|2qJuoPdE|6<$vM0ggk{r_r#4WPWeI(c92>Pp()S4%PJ)e}k*DYXT1P z*s{;1$n(!&Eb@dG%j9&eiT=&n8H#dH5 zWP(Mny=7@ZK4}eYGs6pvlIPNG?G~`Hg!S9uvAz|>76a2q807Tc!rzjZ_WH)-3=f9? zT3#M$3E^X?H$x?>Rg*V9lZ5M~RH*=~R*oyiS3`cq(n8h4L9VRdv`DRH$h6r@Md>!G zBK5Lay?VN=2mejk&WaUJvIj58LE8Mgdwx32G>IHIJd83xbl@M0&b96|;L<~JqHkzn z3SX}B(yT>EqLO(VtLC*hkma|D0>_Ey!=MC0Sq5qc8}gsRsYsWb`})B8h;^x`DJ@%x zH8A=wNb}V<0|s6Y{hr3o)HxHd6h5`nidQQN*#y+?=E#@@`vZBCi3}aJ8M5O7{FJrY zPxmrVJKN$!YE!1!wiV9$C2NT^{xR%M@E{l87!OQNKy-E9=`U;qF&~}Ze@gKL4#TwD zJJgxR=Da2=b+w6XR8u@<{lZ$X+Gaq#aX_3-oi}^IExIM-=U)L&{;>Poa}SlPQ=C@+ zi(meYt-|d-Vd)o!Od2f8kX2mn`QlYaj!8{AbF0MI`qUWhPuI+}&4W@AD*+4F5*D=@ z4FX5|q{;re^&$*ZyUtjZXTA(s!&e~?zTO(%!w2`OP^2onJ7#a`9^;3INFJ4364hu1 z5uE#~GMxx({H&)*&d8k(W1@UxD(Z7Fp|_y8VcTM^(3G_a$duf`$wBv$G^uHED#xnm zE`}bGW6{>oX&>Ih2ySVbU`>9qg>T2ThPDHOyBNDx0yvrG_W!#a^!>@8Jp>1+ie3z( zy-1}ulR}2e-1C2r>DirnyGzW=r9pv)#B{VGzel%d>Tp|}l1a4b)wi{|Ua-=6LCRcm zkUV3LB{NMTekpVVdEihs#|<$NXt-S?jt3B1l9w-6??Ej^ZoaXE z;vKTpSGAbaF(T1UA)UJXxTN!YDHPSXrJZR@3HK80w@WS5Ya21dIkP2-Mtu%4aja}Y zPv6RD`N+J{wdD93t`dP<d`g*StaPJ&!OV3yd6iL`Of@wJiEpu5$Fi9BDG8Szp?;Bh>N|pM6=+bIOQbYzILE z700L1Z@Wj;no_|y2?)LlRo3inj?!_ivO&169#HqFqf}EQd0|MGgLAMKKq1}e!2-)c z@{*30GB@%2gMBP5F#dV2p?j~HsW{$B6n1Xi2sS)i?6pdP;K8W~84v&>c|AKx7BPJ? z@~HA7TxdXg;r@Py6RnR2Uz*-uhCCbAxZ`FmsBruVPgCYj;(tdwQzTvzr4MjNBv)d? z`$^!@X!W#Vm`0l8iPn14u2KkAA!Q|z8Jx^7VreN?fI!cb|4T+{u#&CA6x}peIBwj2 zmfN%HiF6U4IOgj>O4C1H?4tHACpssgXcKD5qL6I2kuXTJ%{_XW%b_qffZ1?phTP=Q z4rhcQ$3WdUK|R$#n@n~X-@%LDop-%6GH(bHl~qT#(+h+i3bc^w&7y5 zv5?Uir8{IuqLSxbmeqmv2>rwbw9OUD?Hm95W>s2o{gv+SiX9~#Z&%O~5s=OO7IiG; zbD}${*ArFdq0D8p*FAUR}jKV{&+utl)y z0(+5-Dqf8!n+qc0?rVAl>*rM+ukwIB=9G=ju)BYuYVao+&>{^`r99>r5bO(`8Gsz$ zJ3i#m8TZ3ycJXt?plVsFf_LL2=_HUYQg))b)C}4IJ!i7-34mOqD!4Bx) zT40qxoNCvP!s$vh&!98)usFn-S}`lc)+USWonK9d{P!sZhP?oA^fz=aOR>eYs?lawLf4~O=eLP<&45tFpQ^>8<@c`>_)_arQe5OBbNDX~xvV8&(M_NspyY$s z7^F!+faouRg%qu7P$A0mFl2Ny@xbe2RJ3-6-hfoZK@rCzb05*edIV7UM!inWmZ=Oy znr9q!|9t_D#BB!?RdBHXOjeSb&N6F2@E}{Tn=AE@{;Bri>m#D`$*rZ@Zy4Nc33aiJ z=}U(7O#Nq3@^Txx>5F()_GuMLmelzaHyj*-2n$8ZCNc>Gz~t>&YrcQY+5tCOEXgaZ z(oh};Q`?|MM7${OCSM#%QRy4GvBF*r&N?M8qn~W1 zFH|pr?o9o`h z*PRz=q5F7UQt>jHU|a{gH}uBc@8VP+PHRAnO;&HZhWI?XxhgAPe{aDAjRMwgXmCyt z!AAe75<9(}*}djIe&rCW@#QxKIhnFCJx>9nu(|q*vy2DTphFZex}ItgVl!7}mVvYl zRe*WQVUfj!3dn$mkwh73cS1VA&6#`t8}nwqB6K{DcBJ(34?hc@p+vu|&Ml$7{qYV; zBLc`#MC-&>-7nTKcSp5E*9K*n0NVE9fk+l!o7%V_IMkc}*n^6CSt8Q7;N^=F5f37X z=^#J)`aQD1$=%{!a{kjPT2!xZtMWXy)^-cJ$mzixU$_kiN1N=$3=I+XiT3@pPFZ@*YJNA*Q4UV(v0NLdo}qrOoz( z)q2zT86Wh5C8zM2-%J{PdcZ5FZMVPO#DrJvkjF&c+ejC006W>>U{Dw^|A|&jN-Jf) zZ98^{ll`aeKxjKdGc7s$qc+{1keZmmy<4vNygpEHW>uUrvcu(?z|3;XIs81^2N6=3 zR{QP*tnCR%w)k6-eG=6r%|T}-jJ&_J^(*E?+T3AKp(PV1C-$kNT}mwCF7~0z;M+dG z|FuovD|sH=o#^Eu;J3T98ed1$w_ zIwqZ>;&b%KkE*b{cVa%esu6tk^dNwK^IyvG+&vxa^4C*zmK#KRS_ETV8wmvf3&})A za8mm_p8P+r1dKlBxkH@s_)`pbJ)8=8A^H;VzF`JIyDh!fzA~2)f~ma04`{7luTPyB zPKhknN=d|!Gf8B(JR>PMuGAjuI-9*Y9c6^NR8$U9B0(rwB@e*f zR}>|Wv4Ci$=C+(oKN;Q`#2me7QQaA(Agoxt)4p+x%(iqaz-umEBH+068j!2=|G04 ze>0NRiuVVR&LLRTOtN;)tAx0{I}2;bP6TbY2LlxVc8zFwr9lYiEf_Q`w(-irvzYr+ zk~LJMu^eBNM=7g#fN6N9PYsckVcVhi<-2c)tvS*6U=)8A$NrEk>HJiG zVkK0h2x?F>u0pIGE??n;{?wk}crAK@iilNz%wD{by+TCOkfydf0P187z}sU?ixT6NBz6e@1r8N3x?wIt8Ivsyt-f)?R43GP)MUfpl%dWdx5{)ejl zxK&bYHsECc=_-3zJvnv0RnA}lGQf{g&si`=BiC8~(L3Egt{-a`uKj(PBM@i4jq7H< z4__LgNrgO1HE@eSXjY(fp^_yW2o63Q1d9WDaV+DXa2uXFO)R-+Oc2x~OxGY_dNyg~ z_cBi`w==Gsz&-oApX~Tugh2-j!H-R1f#$xG__56TiE^tPr{cff9Rj(Nj8Nqhk`C!M zDj70pJn4q9Lt)mDg6A29QT(x1d*1aYJNM(bs!@g^`PnV-m!DX_9?xdAf=FK3G!aME zSI0b81(vyMsq?6c^Z|o#-|ype6p07M>L^9w;u(eZI#$pCRHm#Le1@S8Tp{X~t3ZBe z&FKU_j(JaJsMHtlrz;=jCgXN8}9S*FE$-kzF*j67r)h}O-&k2MbkkSTb42mylby_#5*Li2 zCd)bT(N+4nN?MMJ0eJ)%wDCCsHy<;yoJ#rSn6r9Gh*ha;2ln@|2SE+7%sz-bc`IoKVj<-h zK$D~zS=&m+4KbC;++-{{7t~AnS;GKc7-^OI)$qqh;@@un=JO3=KG5*b1yfQVW$mp= z+*|_(y4P13O$NQcX`@k}6Z>~_w2>AV2Zlqpo@1D#aDCOivEpI=5u=|<4zQL&BXLIo zO<7|T$F+Yuy;=8^Tj}lQ#aQfRM_E<#9OsNx50jsi@N&!&0Xfj&dy(fH4= zCHUP%vrK<2e3n4k?8{W9CgZ#61Z?##Mk31Qq1H95e~HtOu34hDDnNUa#@hTy;yv=~ zf61mf$8V$^n{awGL5D6MO?RLDnVY@KA#7UIb9-}UbkA%AToe8-Q$Z=ZSu;7>AwE|d zNO34YswIZNdcDnzRvMu3nHQbD2v@^?vo~sv>zc^}7%SOHN~YnqY>jJR zlu?5CK^bvmx@F={!Ddx=`YnIB7v;KW-q_MTa_LgCO zoIZ6MPNY5MA3|7DFE5EBSbINDT~JvzOr!wf!|p%yfE63{d=G4$kL!(Fi{uw(d&o)7nH2M>DgrsR_+}t06tSu!UaA-uKto35rBPx$dnb!fwJ^UP) z6McMP+Yu$iLP**>L(Ac8Y6Sr{2?;BqoiZXDMVC9|yj5`3`a?>>9z!5s2`wRUu*&-t z*=>!__R!5zk)X8Ma5l9Yi~2`A7a<*8kql-sjik(PZ(6n53Ui#nlSAam=_B$&uW0fU7Ui54Xe^ z<*i*n=BfW<&g|k0m>MP6J#YAW{0#^zfbBePC(?oBtbPbrc~yUVcH!;_ANVdNYKkea zbHa0DW15#94d2jhMOc^-O!rzs_#Jjppk_X}(OP|xtN&BB^i{LoSKM}xy8Kd+(#_d? z6T^>0|DoJJ^c=XuH?`(UAlL96er&NM1Q{oA|I0Ps0~I>mE>4P2FK*9u&By8cS*f*S zE;FB>`^CS#S&QRn{y4!$4J>7mPzJVpB=Wcr6YP)&p-#xiU|P<2;3B5Gs8joI5pRpY z@*Dw}?5;b*k5_3?Mac#WWIpPbrAJ?oMf(za+b1ERRP6z;do*irPHVi4j#cQsQNw1c z2DSrA9P@^6e5N|#uTWi*)xb&D;=RXh1VpSSKw%WA$oP4I!2@4~{qzgkRV#&bu93An zj(|ev8fRS8^~1u0r`h^kGp!_TokVos^fjjBi{=^(%&S}GXZv8lVB`0bvnL=A?tROr z2nz47Df#Bty?$25GTOYBIRnjxDQqBo6b`wMxj6qvta{;|C2>oxKxQXSjhCSFm1ZJ-Ve91yW+FfRF0{1jm z9e!RbQ|aF<hdqSSaTT@YdHYPDo>q$`>X4+&2Wu*Bn(YmJ2myhXTv{oYR zA#YYA<)0x#d6SD#@T=iRh|4Ac%@KQ@Dh`s!eGEmY8OxfMMQEyX98WhaSzp`5mV+w_ zq{FO8KLz3Rr!lCO^7b7;AcFG=4H>o4Ms|ZzdM#8*hNL|aZW4HvuEwq3U=3oZPxE8; z?G%L;_f?Jc#D7K=kv9*iJuoHJ{&3zbFx_f+5b@sU&|LQe_E_;GATs^S%gvlpAjxY^DA1TBMJBIjh>(V|VV&yt_Fyd*(hEgLpD*^o+Uy*`DgAYcT@<;T@H2Y=x!)Bgqv zosUA{LKHxC{;5r^gDpF_GRvB*`MWXTFgJ_x?=k_nay7F!k;-#FxoGvrOH=jlXsw$Z zy1tYl@#CHWUpOPS$hTy~-nV+jo#yd_f>bj|1z&BcSyzA&{l3ABxBpF4IM7CxlnLsW zC$F-Sw0-MBH`HW9{BgF;uy2`Wx*9Imh1oxDW4XYfS|OkZiA4U)?Or^LPEo&c>|iHG z_+}^dEBmVYQOtfyN61xV0UBg>9W-<^FF*S`Bw8$Gi0$9(mIT;{`R)4v1GQaGkNDUa zX+XIB2DeAhNZD?RRvu+mXM?Az*>fix{V6vFavzwQI>(b*MlVCXF#FCO=4p~z9MhW` z;T+FDL(iR;JT9v1{R`jaZmoSevZ4>5B$A}2E0AmaE{dy-2?W|E?_30Yvc7;gg!S)q zN4YFMpTWb2Ywx;rxG6jPZqwS}dTbg;CE4wE{g4>}hwIS6z#FFq#-T~yW>i7z1;uzS zF?-_@wm9%xe8b}lO!ZwmyMqpNQ5_}sN@`nm^fj+0-@O>%kYk5I1TE|4FWg_gFbsZU zd%J_D^a$@E6j)0fZL<05i&=D(ciegZ?NY)MZ2yue7O%MQZ_h(v&|hL=TbB0BZ|~YF zI+f{b*vAyV?h3zKnCp^LT-^ma>dt7z8#mi|lg|$$5RpMfk`Vl;tGs7dWL+Q=rCWxG z-HeGr)pDyIH})jrWq$TzWkJo}%u<z#6#>;S`>;rvrA>dm1|QF=?A=I!cF@Y3*ZJ3boT4F~uAv+_J8=WP zC9-yTq~{X&A5=-9>zYr_HxR*p=P;-Md-`@d>tc99NX{zwf%O2rn2HrOT}5r~GSlCg{*Eyu&)3Rf=aA&*-=uB&I0@t*EMn(879$0W(u4Fy+31%7K4o^rtzGyBo>u4 z+aM4gzVL4=y|M;>^g-+NDe1rOhvCy3_Fq>QfDz&pjM8S%?n^Sio&IlOQZw)T1ueb5lFcYZhuOG_)ViR1kbR+ zllf)iZ8G8W(gg5WecQ2Ay2ss~ym>&`M z9*cQe)1KaV!5z#PSEWQa={4I?c*!8$9JTjpT5(7oWiDgnTH4Y@%HmP7Vu!{4!BoL_ z!Az+@Trw1%TQ9zrnUX|1o@-JVp zZHpmHkVm!d#-d~i@zebA1JKfz>knT8(7UArw*xhm?Y=~5VlEpqJ9+m{YS;M{_kt3N z$YQ*PbTPO2=A0Z%T6$ApZ#%lzGtFK&Ck=!4ZysbqraI2l|=ucMlb^FV=la3>peZ%Z(FGInb2+G8h^@=DrL1F6^ua6APqAahKzk zS_p(j0b6LQ;-FOMHdJQfZo+v`qrS)E;PquwXHb-<3{FlxqjFzh$wbS20me4V3p6|RuSSUkJB%puW1kg3HfHeek(zf@j@p~*&tL4?~V3s^hTe<;9#i{KP$^G zAJkVQwz18|rLV?y;-_2o8x4J^WE8^U+Q$IO>FBweT?Q_?AhHcRhotRr*B6!m4@ zMCri}_`5wh?FG?ZxE%>!t1tI4yeX%gX_qaKvigxOdpIbr|T?f5Wgq#qi+p2Z754{@+f?U9P@u( zX$ovUDNkFNlpQ}9Sw5mMQ~Hpjql6(Ily|33WA{2Ln=MyulT>w3=rzd;u=}<84+|Ym zj0Nu@h`2ST1AnuCf>sZXHe?QXjnd4r--U_ zUb|TLP{UmcKEE?LOsL6Wpk}LLbhu_fR6j;siy`(jPyjLNlP@ugEe`NRsr5`pF!&x2 zM^Ov9=u_a$8m>wCdWZ;?w&S+EIA*`@E<-pl{o6JD2{*yT4*hn zU)}}Mtm+Q+whYu^YUx*sOK8`$cH-+jC%N!b vjY3mfHUEp!~RW-gXJJx8lgX9^} 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

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