From 7a6004559e62f99d3ec01a4c7e3683314ce0e2f3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 13:00:50 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 13:00:50. --- .../20260508/20260508130002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508130002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508130002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508130002-Binary.backup create mode 100644 MikroMaster/20260508/20260508130002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508130002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508130002-Binary.backup b/MikroMaster/20260508/20260508130002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..791c8495600b4b7e96e944322d893a5f7b584737 GIT binary patch literal 298264 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%0Dwp) zX~C-Wl<;P%>xmfAU@dXMvH}lxDHfG$$l{jK0-cTKz`xw@DN{6drKQYIeybI5U^*l- z&qvTrIDUE7Q2bh8g4KA)P6{}s#E2BeHVg=B;}6f3ARL?|=JW|5KYdZ91^^#H?^}SN zGi*oWx5#N_iMm;!+PUsrHVD8RgLJi7YXbzNaOZ#3d-w&VSfn zMK=6S9F~4d_nDLY(WwH4{O~zS9BjewR=80#tmG=u+1VKa5YJp&%|BSv|75*e`DN<-qutIUY=iHVC6*ou=z0q-1@{(Is! zztkMh>8TOjY4%?XNFh{_k;?lcb=v(GS``SpwJDPCSR(A6oNceRUhQT{8rWsx zDh|>j$!{}^DumY%(u?lb=7V+xgJsMJ?2wO{>7kys`exHAn0Oqlv` zfKwKhjKkQtRUxW^8`QPMoOR&D1Oc9md*kTS-UuuY>x(Ll0=*d7uG)!LPLaMQhz@K- zq2Tqq=ycveMJx!DMIOkW&m@zATcsv&3R`^7QQforI^ACI5tjLyHDn%HX4QMv>@TW1 z9DkNraL*nz23z(a#}{AY-r!YyivnP3zc6iQ&9mKJ?MCr5M2eFnN}n7c<5!8H zVKF29yp8Ru??V>YQZE7|_oR><%7mvDc>@qirdAyVQpVQHVg8~&vMj{Le!Lh3(0#^)LU_@N zn-(xk#HV=&73+g9DlWlE5c9e5Lcvb~>mO26;Ft49dIxE^1rY#8CI%;)jmal~c*k5< z@GOg;GEGSU!Can@A?=AkvMDcS=gX@C&dCX>ICAOI-lF58k5H;L2O$>akQqpD#~<`M z{M-?T!fI?Eh7qxTO2@obrtw3QJS!C!z>sdS zI%u$e942-(dU6t6K<8)WZq@n#bXrG~xAM};*%us*vsJ%2n>@91)wNR=9^7aHw3~EJ z!J4J|=iB&Blj%cIQeS*o@;44G=Fry-Nx$~jL+CQ<9z zbFmZZSec_L&w`rCP@5&9Xc{|7y!bYDqp?r&HfHjE;vS5kL=2yEY09A72rK^3j}rCF z+_w<|pZg43db=Co&)R?Hc{?djcY6@^`={kxMr15*+l;^$?|R#zr0qd6E9mpG;CTio zvEkvMRhrxsfr;h1(2XR2B(^Lxs;dV&pTf}zUsydmWz98H74SeQI`rIEqEwVt5RnSv@;lYmbu3<*Y6B*UDDD_2p`28@!c4`` zd5EyITZ(mDx{AnHh*{}nxbbKQn;{garw+ax&DBMIGbdBtn!NBc-?_nWMWi8n<2w}d zI4&NF#=sit90?+4D|+uvaYtb5Gm7WB6&Ye1@>RM|1E3AdvCqjIt?`7yBlJ4=#kqg= zmM^+r4-22T!yvYT9&y(De3F?q^f~opBw~lc%;JWjJzm$xqpUG`01c^l_O#$avX(%)-Q)-mfyGiW4rO>&Uf5jQo?G7a>(8c8XvB?iv#hMLVk4nT! zmD3lSXJlk40~+tumExnaRF=&HexQ!cya5pe+k6fQz<1^sKzltu3!4iQrVdIpgDv~l z(Fz`)0Wae$#Dv#Ic8Jw5s7P+6lE)*U?vc*nATPp9a7k%5{i|^DO$h+&JMu(R2)C8j z>aoSJ45)PEK4seG!Uv~bXc=OL>*`zIA00wR-%eWGVNmn&zAhIWZRDTJ!J0E|mVz=} zbsuXtYuefqi$pNyZ#kAjv)re++ZyEF+*@#v`&err8G9<>=`?Ss(=(VBpBwLS(&9RC zRiZ~Xzmzx6QdzBYlht*7Ap_uJe;~no-PjjD643J%M~^55gbE!b7!m`n3KjxLEt2h8 zPm28uSzzTpzUjaTdjE77D>!n)V>Q)bjz@1mG2U>)As z)-u6_v91vU{@+qf#6ANKUcf-4po}rnE$857AxC!#pU;gz%jeX)!_#fn#L@1xQ7()U zV^YU!X{40YBtceFh}3m2qfym}I*cXiuM-TGWeK zBo$08aH$M++6KPO1J9cpMOZ-VNxlCT>qoO2g5 zYKT*8^@$9O-w6RqNGVZNTnK(tdxSO_?b~EC%0iD4lFRxEUD!@rO67>Xa!wOgV4F=4 zwvk8}a$lM&0sx}JF7$NKn+PQrVFkXETQTo=#gcL2`YZtQ2JBewS0Rfb#(u%L@e?RU8lF5g!M2JQq);e#kd7Zr$dP2n$VNo{@8}1bi7#Xdb^eHqc zI`(%$3h->t*_>X6f87!3ta(?=ZVt7{Oil@Iv5kpVah7l#OigErm`Zfzx{7N|cSiUM zCo%glXv54quy9K8*KL_c%C1`R>`T>3^UayjrYB4xtKx1sF&Orp$&Pq#=p)#GlS!%< zw%P6S&u=-;9Q(1QQV(ZF7xwBXXMX^fAN*mVJcuY4?m1hL^;+I0ro%erq?chh`Donz zXkv7MAYz>OJ?q2eocFP15RwL~9}D`;HVCcOp_ENM#3X+e=(5&JPcb$*zn!S;zZF^x zD*|umy=W>Tzm5o4x_s{qttxJ>v};b=$s9(Pe#@d4}8HxN7@sFMyMNsU$Yz9r4?Jg5Xbk_E%Oeup`!%U|thecv%0H25AU9?&m^+ex+F}wbkYnAXuZ|`mPYtIulNf^}`pc($L zYglzyJdSYnYM!T7I{U$TrpsTm*$?x;N8Bzb>it^?RIwRv$LQBPzRO7h>Vt&n6vc3x z?`r=gqQjEn#0?F8!(+rh4G{~sW^dU*(MR>A7S09(W~NTfO+Y74Z2C*wi}e1d-dRTp zBYzR+c!iyvkWcC~rj?(atmQ8y3Y}0Kmbq~4HyHE~dqgE6a?;qqa1pEQ>pM21kmLrE zRKbH=Lje@A0|rsTt`iybQ+td@bWbP%JioB`wGJg8$SUBi3lHZl z%Pr_e@lUM>+$6CPZb%EE#Al7h801W4f3x|It{d+a=Lp_7@Kd`g48THVzvkZJ_O zx5haLhu_`>p)*m$f(w62&{Vq}J=iiB6dwz{z*lgsNOa`gP?H{=l`%f3p2n73*6Tl@VY1exqRPKr>TIo+n?VlXJ8r4wH)btrhU zdS)Qnf0IiHz}X;5;BAr|5Svq^aImN(>@vHPyLBE22~z~y5#n-v7k7WEl~E52OYJ*h z-rvaf7en9R;=cAUj5&r`Ca;10BHJc!h~@rhxa@CPILdgu0dK%Pu^mS0B37T|Tw~}K zM_l=l`$Ujiv$LNj#@{s~GQhA7Qu!KsB4*zfRQ!b9F!|vbq=I>RH29)P93ekF00W1g z)DIWGdH$eXEoAmNuHL1FYC%24-^uph0KUDh87KxNO`eS;AP&FEh7!7Uq`0efj`P_E7@`!%r92!_>l(Mm`S##7nWE zu2+0Bi7{*>4w2MA?^1 znt$1Pfn>;~7PE*dc5;`Zzpfv5iJy|Xkr1b7nJ8@S83HleV7x<0*ZJXzw~JnPcgG{H zOF?B`49DHkKJx|)BaYv}*`7NxaVf3CUpfiEdXWKj}Q24qZ;Cv zQT`>+RZaV6(Xb5?`ae)Jw;O;Q09*Epk!f!Z0wV~ReMQETpH@>}=DK^aQtBN+s;#_OB8)*I=^PiSu6)EolS2}R;eB^99lUA#PzuVW0Ic%-5 z{4kDVfJ)c(9_DYYRTBJTfpsE|vUH9hyRKf?X3 zwm}=2V74kb=o|aK30+K1`l{zFe}PsHo%WBd8C~T%QYW1>Ri$|vR3#mC5RTx+6$g~O zhfaPadZZn&V<`K#jh=G`74i>Xxe}4!RLWRS$?uO*h_2lj_Cs{d(;v?$1CZ!QxEom} zBpjQst;0&$`7VS|#VB99)B+ZyX<0JJPP+!|N_@Goc*+&j8Nx?-s7kAU)w+C-#6ZY9 z5%FWZFAZeaL!g`p)9Avtb>KufoZ9Y?6 z)(rB%USc_mh!(B{SXVY$kMyV35#xW{h1DY?Sz4SgAt$uQ7{na*M@RZ%epaO2Ti`)| z&E;ua-A?J9`Gw>6OTQ{>adR$|fTFy{j$-^O=W5IAZp)&d=;-+0wmR9eR8+1Hr@gj? z9PKuMATPv9%huRg5qTxxQD);&h6QEuh59c7Qc*G_0IP|1yuAnuXEqIe9V>m zPxB@w1GeWQ$2yR!42V?eTBl+_wy<|vt*eN*d^B^Hvz=7~#YB1s$5fQ+Uw2xjRyEJl zvoN`0jcXzpgQOSj@D|73%j&FGuCH=jyYy2s2ir%`J-FwOB}jv2K zi9O@B{u^un;;3~xJgvxMN<}+wo{T=QnP>>!3$mHvsw@bt2fe>%G<4&5Q*(UuB)%Km zafTy#9}z~XzI*gHa|-8U`4nhM>xPYmwjM0Vy=yo|s6KrEbI`Jfs++^Vaj}<`3AAFR zu(T3x1y~P^B_R%{Q)ZlfGc1UB(0sbCzdn!#HPI=J>J;YF{Cg=|R)W=T!tRna-@RM{-Bh+;D84X{RfEZZ0IEV;t&`!5z?_?GBu?`T!xe9$iN5Lp2A zmeL2)o%CE7WeU0;i3(!3h|f3rQitDAvO!;*oHQBxK;j6#dOVvU zB?~co(iE!hzHS)~nm3!&9Wy=>y$1_kWa5=hebBTX&HKN&O34U)Ky)8Na3@)Z?S{A- z-#&T0=lND)5Tl(H7AN7%((cM?LJT$Qf~qKe_F@}x?_821tMGe|S*y)rB%aqiWGv&^ zd^)b*<=>3fr}dtPT30>?UEnS94z9yZw(}Z^B7V1Fjt#UhC4|hRj5-4H4G)+5ZehP9 z7$sVXO8O5u4$#T=DRL;YmG+Q)Uy2)C*|~oXq+XoY>o1$+COneCWNO}ZP`}eNAMG|{ zd^u*>AxW9X&GEC)PPq5OEu`Q&(RM^(H6O}P-i{sb#QP>=LCM(=t{nEXNGPo+E`UmVZyz*CF!tf`cmH zY9o4OVmRqif{KBw)?=^n=5(g)zY4LG;e+Jy(oG@Djkeh9J7!8do51Mn)59^CO%B|7 zub)J1h&XBEyv0YPXgGuTB|!Wk+cY}6l@EU7ev-L{?OE#_300^=ue>P!6Q*(aXo8b} zlg8`+P-4Kkaiqf4Qj4(_Or*$Ni7=YUz!ySXUJ9$~n(}juWWm#9qV=_6S~1&2)X$ zQyxvE8aigKk17mKicJULUBpYXsSAJGf#gE^NX5(DNoV%WM2|AZ%S~oFaS=v_Uy1Z? z8*!K8%)_owy8D`e`xQ%5_?tq%lP(mve7K`-jtK0(uwQof#ziH8<6kQEI=X2{@8vR0 zy?GZ_yTIWOOc+iub1q2|bdBnbJ)0*FkymBUnH(<$EpVnCnBZD7X#IfVkKp%ZzVrIU z!JE*`O;XcE@#$oe!&JLe!q_~(v`ynN7qV%N^beyhar#gdhAe*Hc8q=IicvZrg}3a z8b=h^eW-LuZ1t~dQWwx%ueliEL-DQa8QYZCM&{+6;QXIQed}>(a&z!mj*OA4Oz%hk zO*aB1{N^h9ULJcHmb?;_WsjR*DIEO~ z6H0z2#&UI*$~v9m?F>{a7_Vss*mfmpKUPIE;UU{b_H}<2LdF;fW*dz5q{fddz{YT(N!GCb? zaW8j7sM`>ZGp`}=;pSCt@|b^n{C^Ux{BXSiT80t6`?krg^*0o}D&qBk`(9^#*5cX4 znf;B@56^=hq_Q*Lu&cFcM2YX-HWD9jxr7~3{rMtzZktRTC_^rI2ECSb-)?;^E~}-{ zs4aJH9_nuFF+GXQb}A|H#ToA@G^m!#c~1C@Swq8+l;Pq-W5}VQjP$V2h;f7Uw5am~ zjWrId7oy$&GS1fU@}0j~N*MTmQ?Ah^Qzss$$!I1KI>gIQQh5!Ufi4Rn6S^wpiu38i zHkX4^rnlD0E#*=!6LbxUSA7%__eb}nD-MMVC&!D3LKe}%*n+;jsG}V@9Ko#5L8=%r zDiiI`E(6)K$D$$x$FD=gSHKUX22#jSRMtFno&9Lq&H(>E0KnF@1~IhXh?*ze3+l|! z(G`;kLa`YhZ;g^dZUqE-UDAEi1FK-U`8i%OS-mjG!`vH8SSTn|(oXx|e*6d~nFc4?A3SyesDG$9780`kWeYRWz(Dg*;(@<52s4-=@?mxp<&)MNx_ z7(|oG>lxqPjKsCo*8V8=jFaD41;t^YS&!Yl^bre2eQ8<*yIwVK-aD|9j&2s2?Jbjx zN%G!6Qj^NJl2bu(j?O`(z;JBgjTxp9wRczt?{kpVg}hi;Q8dB#vRX+zbnIEPIVzB2#DW}+rbUEQxM9va!%E!UiICk+T%f=rVzMe{R%6DEM zHU<_f9S93Mhda%=FZU*O=JZRj=w8)Gvi;UZJsC)Ofct)GQQN=1F^mqtpJV*Nlc9ua zl9Hus(5%tOF_F5efVv95Gz>_RqlWYE zuSp5N^aQRy%t>e?f%|=DL(Mz{@w_Et)&dSTV962^LI5Hq=)AASLxNoCMS+{Di^krMAc!b;v@`@((d)I=zY z#pFssRPBA-U^Q;Oe;}BE2}B^8g}6ET)56n~$fS$?AK67F*FhoAks1O1&hbFK0p5<) zLmIg2E|kZKZ|;CTJGJ6hy8ntW9Z2I0=@oOMody_QHXtQwZHIuKUoXt5juWjOO`NR!M*A5+nlGl{k`E)9SY>&<-a!C^kXdlYd@lL3rN*aB ztp9!C&A{v*9QiV(4mLqZd1n+XRdKEV$JPN+K%#|jd@x>**>*!TNmDL^#n8~B-=O3B zM5jE4K00|0ull4tS|@knU?LPadz6G#BhN2)G&$l*bSaf$+R?i}lal6687S=M$i4;E|?2HcM`6W9+tOZ{_zVyv84o zS9+aFq%LQeN@c=7i~M)3Dc$-z)-XttpFI6okAstP%th8cy!f@k!u?Ar1v!P=4{K zUTPmMmbq8p%An5#-GQGla*O8A?G2>_hWFvftbUe_umD{lm=6UMIZ|e|*kV;F{`vzG z&wzZgkw@4NqyvZq!Ate4`N9Y(uerhY;#mQ+R}m5AYLD#}N3kz1u5rKgdRE3V$)xN{QV$TMf(- zy$dWAcL^rx&%@K%Tybc!Cjft{f$~JH-CzXx-h*~yOkZ*Y=ieGOgHPDmJi|DX2|S<^ z9Q!>9>Kmh8?SGXv(^(C)v@dD0h~db#YTp(VLz-S<9fb6(R%Uc&Zk2-aakvuSlQNGG zXb%tit)<7$Np&NPx^bQ5j?B*E`-MV-rV|de>w1)abf&<%ZnP#~>$KJAMt7W1Eth6H zq4v)jksxmniK4q7Gk2%2$>LmOq_z~=)`2MB!1KVTq_5jX2z{w&?i*#Td$9?{oLI?h zQYID!VU+b@bBm+>Gz3Ok)sL6;R3P##EbwLF>MNm~_Pb_Hq}hZRBMQG0k~5Z^TCNJ8 z+|9KqFsd_1gppgq;ig8yprGzSuUb6kSE{5=spVjKHFUNpn-8v-L+1|hmlOgyW^rWA zUrX|=H9SfU`L2E!Ba%PQH}UX%fA)WVwz1BRp!J}q|7;k_V%lOMM*TBN8k#(QtQo}g zrQNPUOAW(Y)AL3WBgolq4fMvj-g;}NXwWb(ZIJt2jWwhK`jS>6rM*6Om-k39&BMQ9 zXM<}1rjU|>712DTSwGjlIZ``D96W(PF4w-g#yllB_yI*h!4iS(rJ|44E|CRh(=z+H zFBh(cv#OGr8vSW&II&cJB%|Y6f$_dK8gQ6OpYB%B4#;+N?7~jDO#SSqx_Eg7X6OKH z_EOo?*#!yvbhSb5TtlGOVf%K5EB2cu1<;}aP7#Ml{l*JgfJm^p+{8<@W5u9DmKVERkix}+s$dyR^5dZtK!=>Zg^HaNs9pvl>_5owSmZd`!8mq7#_ z_ViD8*+F$j;6pLs>#^amv~_&J{Q<02zhpd+L*95&KNOG3%c8pC@XT@d@2DlXH5f%h z{w=1fAofkLCY0j_utY1{ z;xu9JLy>d9ig0KhvQI7Uz7NFYdw=XkuZk8Pace8(6ltgSzJIr^?9$8sr*w0G^oAbF zUzkuj6Exh@k9C1;?09;;m|3&=L=7o->q==e(w;S<_E`I+d6icAh}LR>r&)uXjGWAD z8ikipKB3eAKu;_dLmT)yM+S0?`=Kayowi5&I4>r24^kvx`pkIUWYhHxl%ROY^8Wj{*$wKs0DEl2N@V)u1c*omXMtmaGh4;%zWMlB*&Q0v&llBVtWFSWes6&HkL}z0HN27o%?PtT9lk_uQuR>x11}CK5m1*hR@R!0 zG%>}Q1!p6AMIftXcdiu-I_2M~L^FdHg+dF4%Q%ci^)6Y2KIm8z z@?Z*Fp7Q3`rZ7ptAOHykD$;zJ$h$?hFfch`v%&iW9}nYha_5N!L}YnNZlPa80)aM! zD=fw?@Be`r+}7Aa_)TLwRTS)~An$NGLskw?gYSB=9!gW4vfipQ$7zd8D6_&OE?9sC zfT+@=0_RpSu3|O>2JNj6>5{xpWk4MvtJMvEYnsHo&y(cHK$}-R$aLG}Km^tn=g-X^HSne5@dn z{pBq&MBb-{nSGSk)V#L(c83Zig%@?l7~!Ii35jw^$A+0w`MMZWL&r;j!=5h5|IR)o zCA7o!*smLsUFA<=b6br3=a+376n~j%Mc;^T)qQy^t9^UhRP4jQ$Dg!T3t~B9(ucYe z<*|dlYw|}|X&&j-y%r%_f*VWkk3`6;3mzqdb086jLL`lUzc5}3@{M!+lgHSUe9a>6 zgYruQyO5PK!@tEqMKDhb0E-m~a9~!Cf*wy@n)_^l0F_#HD2V^-+Wn*Nn!_DMgX&iM zA|)bor)$hE&yaK+*`VpUlWzPm%>gI&XYemmI)EscqR}OU?}U0P>nS19Fv!(+?660{ zRT7wi&#;8MNZ3G}QLn{pzpF&-Yhw1i_?;KEl8;VY&}ML0b0zy7KU&=gQlpM2wB2Tm zNeukFsBVpE`8OwOPBpEbCY5ysFazF_&`uZXKPzLJH8BfGxl-dz9klh1q#U_Y48=#B z`9(gBZr%$3O{HN|KRk$bcb^BnqnkSIWaq(r-v4dH715HT*gli1u#dl>F$au0-Y<`P zf`Op^?vSR_1m$FrwZH#{^BK1J$a07M;sV&sZ(vq58WIn{AKp$Tb`iqs3vrjfyDIMh z=qZvN@Wd9p$kJu0JQr#j@HIG`I7E)lejJ%NDJKn4p0*@5%>Hg;uEp?NTN>EiP2`7c<3l`8e!w>$J7YhW?spV>(9Q(KHlL#>C#c` zQo#$i`NeOQKVu(FDaWyOi!{CHK;E0pg`mes;@Z%x2GbqJy@|*WgP;hVxJ9nfhgWqc&Cdf zQZQdDwIYb^=>F-Om)!LX1rmTnMW~eQR<#}#W_7tsMa#DY>r`k+5Cw zt|}mbs#(ogBqNxxU~NF)Kcv8{y(uyJ<14`ejWb;u!L86!B6IIpc8>>(a7S4w|MVHev^ z2?gnz(^QP2{?jErszHh@9PMZneef;2_+f>MGB!lYU*_)l{?ItL13!Z99mP(lp?n-r z4TV$9Z?YO(H_$UsZGPCEjoPsL1+>ZYdDPM|W7l~i6)UM&Mk-(=myA%Fh- zR!-rIin_1e%~h~lfi}PNVteWHu2aJR-TLb>DZ|JSIcR`OQEpFm{-Jm1*x(WFiAYxP zeRKt^gpGgf_P$i-o=|n~jRa5^$4gEU$lJn1Jm8x^G&c!tRIb_W z7U*WdE)iML12u4qE$%r~kG<`2fg>AbqqIO#arxrhlC+`AWOOD-H}gXN17W<;xVgTU z+wJm|x7m2S1Ni4yfRm**%Kc`(!xisrS2Yd!0* zeqJCRiJE}ug(s$O^anIDf!@_JExmlSn`G$ZpiN-H{dT zEbG$K;~%lY|6u4^oPZ@5)EJ=fI~!$kD6N>Mx1}Av*9P`RA*BR?m6rb+av;oh5E2Yo zS@(t@JmtMgzI|cneLW1Rh~khqkyI~tmk%xtp-rG7q9zZ%fIE|q$A^_ghabYB|7do5SF?Ykj3AP4LK{e+U{fa zu1FRO{B^R)(sF|bGfp?i!BKWWqR1g7&03faLpBnQUgJ9b1b&F8rxKukt-b>0Y8 z^kOaG%!YjHhfFlS8FUAUGA zthyXPU&pNaL(1SJ+4T$ljutElBS~dQg7qu2%DYmtLw++*5wyNU`L$0m9cu`}X!tSg zo}4p12QO|i5rR{vD6 zQkI0S?Td7pWM#25_Yl9Tr($w|xByTuDRbr%$1v!MO=>Cs1!+&($?Tph(yLY*vCyUW znR%V(BdXRh>NRvRI_#& z5tA4Cns!R$XU%ZHO+x~&KYjd#q2e;d@ynlzM~5&mZZQJQo}feYx87uB^fxrIsKHrq!yjEN5uKlxM*Zf; zDn|6|iTps+?UIjFH@M*pcEFQM(Xka8kR`?2Kh=wfJ3W(4TKl@XJW`ls*-W}i`)Qfs zPL@_9hXzF2s|J||J8L6j`(NMamL88wf`=T~PQ-mH3 zWW~22aMHT`Ce@#`mhTUwbuCvWnoR=YQunSlLTy;0tK#_wiOG0gZWt1_moM$xKjLtp z7_P0wAjKGktL zfiM2o5RFu^bA^wS7*`++2O(Ur%83hj4bIiPtxngBPI3UgAz=QBvCSsR`@(Wmq9Y?S z4gUCDJ+BMr7NVQXHEg{H#(^P7MTL+bx?fW1P&fy*+8&(h_<-n#cQ^Tq-SB-ny7)ua z>!WEvBP`~bDf~1!tkUP={k$aH`Pb0S*<)8zd14d-lgw-`S@-wved4v&2kLjI&nOt$ z2S#g-TJ|1_p!Qp(3W&NuAzS3ALJp0OR7|_8j43>;)Tudp4t^TR0(_T7@XHdn@^;aY(0HX@la16vG*}C-jLsTC&{Qm+8fI6Voil}w8rT20pTp~Kz!|U1H;9aWH z!9%AKp+Eze{F)te|Io#e7egev9Ah;F(MvvdW;pF!B0?qayUzv`KS|(y&n!`S1;}h7 z=NwZbfbU#@rN*soMC};a6Jg|tk&LlT+~?O)rEbu$lxKeK1Fb9l(ZYPA7A-DgCzuV0 z{ID>yWy^(os4|uR_QUUu42a9uo@DxdqujH93Stn{P`_xw_qwf(q+d78;4_>Xt9!h` zbF0$2R9q)N{es_ksij)6{#7l0`YnpGiWKcQ+L29BvI1@-G{*ob+!WAkpdJo%>-Q{nk^y!CK^G|8|RwrIPL zLMu~~jdEyVA)ISV7mhUR>5z=dt<4AsYpOCEj{F}fo9>@>3ty6g2+)T=!kHw7 z07UBEeP*HxCy$*>C*%ZX9~*(t)WGG(Vl} zp0GkdJxSgE8U}@AHIp(N}={xw?jJH86BAO-J@O!wxaf$bx4?jxC)<-Hf4k^XfTh^;CAXkSL27Wb;H;hd>3`&- z+7RU<9C?Yt>m!IyjCrXDoZ%F4YHg;?1Q5|njOya~=A;KC*cwtkZQwG>S`Tip>Lp(q zUH&8~d67-8hXWj~4j5+mOPZGeb$vho%k`A-)QY*4M<65}dR8nYU5={_%;3RE068XB z*VB+6d1F}AMtieeD$z3vDsiV7!TNoRU-)-+F0|a5J%wZg7Gl|w)Ue?8fXP;K(Wn!| z?%&2NuujO(?HmkYwMu(E0!{XmmPCb6#XyUAG3au!c#u2p+(##-1*61Y`N|ooni@Ps zu_$To)x6V(Ak$o>?y94XsFo|5aUNYLWf$v@BVPM}3!21akodF!WC97wr}hBxQe=%( zXHA=%wV-S}k0DX3mcex=0EIySA5tsK2JAy zjW!ucL}_;ks@+*IbzA2**N$ z8ZxpZvkA<|D}l9UV3KAE(oV(gcg(bRHUT~~mQRS3q366lo7Z=2R_^>)bGz9o8qpZxQ9Kjs;C81OT5iL`I10&!gNCIIH(}_kl7ViEhPA@#0r27n_kxz+z%_)|rXKuS1G_ zlQ6*dtHekeh-9T<+N+d-U9Qo3>w3|>R<;&EG@XvzRaBm8ZDG7uC(^~WhxK_`l0v3E zkNa(-nn8MM)}Ea04C`%IsUZaV6W@KE{N@_@1hN7>$Kb<5T293u9i7jkJPVZ0(gHlag$A zstQJZLI8T$XlLM9L905KFCMAT)IDe$m~io);X}HmowRZ2y2U$^tFZi)$cDg`S;-#H z$%Ysl@bHgBg2RU&ix+XoI5BGCr+*N{n?==w-FQNCUZT_H}h z92x(|{L8(WzA>*%go=$#!9d7IQgRy_`i91A+%Or#joMHAAll5yD3Zgbu z@vLq;APN(bMe`4+<_#OcBJD`p4YE`V`9v64-*m!_5h;1+6eTXY7h`12tgN?a;cDPEoCudTPGmq+`M=q~ynodw zKo=?44e%@YaPdGRMYQcrDjY;rEp~6FgYYR@dt8%ADD#dI%&gCiTM8G9!o-rJgs4E6J|2k6)lb%Ead&_dOJE%7tj^&2Wqjoe{bv8|I?U$n z>|%Lf8#uPQm%;7ZPwi<1nU5A2oy3Yl!pg*gxgJUj(jwRL1hGR2)qE{y#n6po{97kV zkADClX`n75B8|lu>9i*+urz>saT_QkeZhU_u{nmv_!2@?MztG_wZziE6yL=`bQ^t& z;e6Arqvr>Alw?f>eh)kR3w70#;A9n6CYw1Zz?1ceNl{cC{xr`LM@9Ya%YmCfsZ2rc zGx<3+l>@usV{$pN>jNJy-J=zLs0k=)x!M9~q7r0&{GWhB$JtLkk|9c>^VP2Z4sqF5 zgTft62M2|2f!8p)g?0qT6Ig9aW4VZoPX*px7V7CRT~ac6UDi(e>cz_sh=ALUP2`W< z!p!x>EBJJ~wl`LoLGNT=@f+YRbaZKI_883`9Px{~#E}@01eMSxXxB&?6HiwHgM_qV zfZt&>wT}iHdn<0GJ(TyXMvxy_-J6+qOX77FQ(x4mlWPq^ghFG*;!Ix>)Ja0vp9s77 zYNy%>s2Uzc0>%&5pu#p$5?KQ)hZckk4t%Phl1vd83R~^NNZyN@tw3$4Eev4>gc<9e zAIunOe2&ET9Hxl3dZDZy9cfX}$Ob6FAZw_7T7`AbcFOM>wPK9LmZ5|;2WLyXWh{l& zg=gZ9utyW!sOl$vLo2Yj-H#j`T~E6^mC56$qp~)IK)Oj@Xjrks`tT3rM)6o67SqQ@ z_os4RdmBKGd)s7!Z4X-aM9`$<@WDitw`rd@SAFAAQNiF5zr+A~5r}>DY~w-w|5b(pt^; z=~MNq3!YI@uBnnb5sP$&-c0J8q3v^(3hIC`$5*Zq+X~(#N$nmnLI~>xv_6&G)j?wD zJ2G(oU5S-9E11VX=0NAjyJ!M1B5t74(!C;REiAAX&-$h^v1fMPDx)ylunS$_e<&aI zh>$vC3uW@aR+^6R+1pGA{YNn09PI4hN%UoRVW+2P0BQ}4 z4@}AY;qbv8S(}*)PtB4mblne;13vpm&9e~*wFa0z+nz3G1mukZrlTA9^>ShoL!Ri) z)O|4liy*fwuMvp!d2z;ROrulk^o*;Zx(TH%R9U(oSC65$b|9+1JRiOZ<4`f_$@g&^W|ro(|R z4GY*y9SgXRRc4}(+QT97{%th0t}t{%T{W%-b@5BHmeG}JOi+PkS*DanPLCT?@PK(7 zcB>M5pY#yGRpKO`{26XKw>b#`pgi?PkUfP07Z$d$KZyOAE1Si@z28C;0Vkiue@mM7 z>C7+uw=zqntSwiGEPAI527(6#P#A+xJrMx)uqN6ucGuPxaENG1?Xm&El>! zLL^0%VQHWaCe4Eis{T;Deg2Z=KE+u~wYcDCdZ6eY&kDu6v{6-fjb^%Z6>?#?!uW-z zsrHIRjWl8BfU`ohp+O!*_3+wF={k#VC#F0u`(%~-L!gkpW>9cjX7ZY|Ku?FCuIXm% zCNEjSsUu>F5V(uWbLR+nMrTQisZZqd0ld9aPn_B62@kN&?;t&cu~B}TQKtha%ujvs zQ5`3ihZ=_!u2u4-ePB>f>79FYBlfh=K0u4K zf^7g&qUsPZg%GoboRQMk$?d;P@+K7pDV)2^*~$vWmR>H=9iZ$f8iE-nLy$!*o2CwX2ORVd*`W z*Z;9P1lY6H`JUxy$WNTrJ6}_nY7<>inoXhNnmm!lf>+y=WgKy^sZjO$MA&{%WNnz8 z_R_Vo1!f{ki?PRa@C`V8Y(o)7;dfmHK`keGJ1?Df(0^Hzvcqq@=e}E9alk;mQ{na};|0roH^~lA$Y-cKDqrsg~`=0a3aI+jI zBH?vtX57&M>*MmtJN_#$=h?(w-skizS75mqUgkqV@%6{XiRItPSJxy_M;MA+<^+#s z-JUl=Wxt50Se;z;-HuI98)A$k=@X&3)8dwZM2xRI?FrH6E5`h>@fYWU!n*cK?wvm{EUA9+{zAw)h-heKa-Y8J{pW$t4+ z@u2k>bJ-ht6vJK;%ONDm)#y7m-PW{L*tqYmou$*W3-0eLiv3ap^^iCf1lzz1T%;yx zh4mi1)E-li9-xZlzj{aw5JsXg7gvcc&GG7TF_1ax6xiwbwLUG5i9C!Rh1_SW!gjdmDZ4r7;W-Y!&R)!@n@T)C%ulEV zMC6GRx`!@pxyi?vc;w#j;8|3*^;yq~i7=O7*b~|6_|`)Z`g@%Hta$r2qCM{T*tak) zz1y%EZW;3`EuQdp2p0PBxyqD|&nSxtJ6nu-l$S!54-%!9{U8O;ZwSehtrHKBnHA=I zSeA0Cn>1U4g#`vtvsc+fZz!gzK_sRzuD*-%+iWAn{ti! z(J?B;rHrGyOXDd1^O65^WyC^`b%>W#oUBQYA(@h!8Rb{mP3OY?Je!4hy-LO_5DMIl zD6hyZ$LAsv?}`u(`2r7HNC?sjJ}c_5@~G1TO6`Qtok_rotg6ff$hylX7kdht(_CRp!MWMlGi z#stIPs;w3k1VL(CFiaLAobNl+!>_mD?jJVc5A}`dWZ7Jr37@iEzjv>`)zp)|kP?`a zT2X_Fx743i8yWe<1`?MXk8z)ssZW#z+irkOmf;9tte0p|~T&7}GXt7&=JW#H{ zP@J{0F9A|ZFwzD}tR*0!6yyDt#SdU9#1z4sZ!3r4Z@OWRkrJmwpb#m6iIPWWaEIIZ z8}Y+1T3#rH7}8=s+V3`lBU!J`F{IX5+G#-2o*^*Mdj8Gs5|53pFJ4};NMX?nt>8RL z&=kn)dbppn2D$)CHG5}fzw^+a3(%|F5XTy zFW2Llr^Rq5VK)kXLBU9S6kB4~C^gVsbTd!53N41g=mIV)u;?;fs&k@STmslc#o)q1 ziyG%gfPcT?rt27RZuK&zzXV1s@Rl9pIqY7yvQt{c17P)zTk`pb<#(meIt*aYf;(}s z9~LW`8APxPfgrF`;+xrCH8ILKoHi?;QY&r~vWo22$tae_8Y4t5N#3Qmp-}(I7cT2w zzs`W(88Uv-`sEk2lktSRF3GV0!vgF48t4!))`t@7LdUd}ik#=t4}77H^fx z<%!>YyfD^BH~Ue__3-j9bE)q*NmPr4@z4ud>JP*&a@tkz?%vHn`1+wRH$dEkne4`@ zZC06|!>{q_!g0#a*lMMgJxYo}?V2ymKa>R*{T7sOBb-(d&uAWTGt%S=q+AVC{~Q9v;l2Z_y`l1#{0!;b@u#k%11$twgl zKEY2K%w$16^_c8srvsW5LR3gYLl)G6s>PluVUgfCTjsh`^+~KgWpJQ6i3l_cs#K;; z0Y?e3Ig7vKYCArG#~Clm`q>ideBs$X4=6;5*yrF*IPyy(VO2Vc5GJX{@jfC7$_Sn4 zlT5vr9VfVJ#UMyIwN{oNpR{3{OSYWS*U)=nL9#_@YWckhSFot`{>lagL8ScQFzwa) zPZRymqA?kuX8SA54$a=k)3!~X8zF~zdd9-2hg2Un$+L2YU$XC&+pP` z7NtYNaNv!)W>5RfK^*15jo2E^aRK_|%?D5<&?Wz1qQV18Y$?`V4BErJ2j6k=2jUJe zJ?_slBCkH&gKdJKMzJlC;!_9XU}Yy1YvNr-MGDOm5D)&*!D$t&Sb$~>EwV^=T6%yg z>Y-UcLf^Olj5Ay5arnnH^}vGHboXoFpFXOOnAGh{92=VZkSj6ep!HB$JZ$0ge|v;? z*0k<%p4UFUE5T?*uz=<6@uV+me=m1a1lSIJe2AnVZ(SAx3<5DCS@g@s8h7G}( zOLSvy2Aje2ds|C)lLt(AS9C{X74BN`bg}$7eM<<{m-mi`A}_)>4qnn5?+~AB8S-6w z)4PQz!{{6;Hg+ft$7VUcWy}cgbBG74TD>cxJIVg-yO9$gP)%2LZ&M12Bi09W_rVt* z4G@1WiRhsimZ>S7W*IMp92Kk4!A)QP{T& z9hT&0QKq9trTh$Fq>Dmwp>FVLO0&%*Zf*x&=hc?3jnYM^JEyGZy7ci%NR2X5MDTv% zGT+w%H_>Tc2~cCaX{{G6D0BnSFBA)o9e)dv(%IR3K#G$V*pgq5Q6mfU5lV^N87=dz z&Z%~VR@}%(_3LO!YOLWSxFf}djkqbYV0Cd}Hw^|8PAa9Qu!h;<|6t_K8(us)ZGSp{ zkWKu5<-1`z9YMlMq~BD87|^2U9DZ7d)!TBTJG;oY4R1k5`rUqMPL_s00-+C57mJVo zJCF7UjpSfqV(IjJCWO%k4iM%;99HPSfXl!fa`b#dBRgdoic4cR#NGejfm3hL!zh}= z=C&%tC3(t+-CHi%@tpv#r!!8A#`Ttg;ml!-|-^ z;zsZarkzkt!zI^+B7tJ_#?uPCK^Wf*H|J7hpJ*FSy)?0NLh13>^}WrS+m5W~$b)s5 z59y3;0X#$U?>fG%G=A-9y-tUOhwYJ7ZZhSTb`b$CCm(J0UMADZ8W!|cZ#m{yrBeNx zt8knz;HbPDkrJ02~`_R`(n*pUBUG`O>$bCi;I_K1R*EKSzC5MDCu zjdnF0fsDyNXBDyDGQo*l$t=)X`}Fw&I=I(&o2Mtx$zlQKvTqO_Tg|iDV}lug)ydV^ zTEB10C050iLZ>2(bEV^HU9}Sv5V;peZ$-H9MY8o6>Gy@AeO{^8>uTm=>vV-^9GYv;D4ji=u$TTm~x zaG{3|=b1|nlXspoJviMom?q^k%ZxX!D^+BuM|fqLXV%EBHKL7@Lj)>Rm>Yp$KnhdD zDT|BOA+iQW=Cs9R5@K=zCkuA}8bq0KUb+}{yqqv!|^v{Kquj-aJ8 zQCc+qRUn^6Z&zP>Odo=7;eo-78ctLptVyUfrWyWcsTSzR%ufjt z=8r?~(Ecn_39DHG7=`C7Epp#ws~V#@ry7Q75=E*swLtGboDNi9<0yYA^)LFee=SgP z%H%g&QL<*sTB`SW$#F?ovcSc?qPgu>>MabL3$!6(xIx+K@-Gd=lw6{!ehR5Ok)?U2 zrQrv;_B$OM903g8W=MJA;i1TL=%w5spM<}xevv8P38v!{tzKl5L_sq9v&8LPkL9S& zUeS0tg+XH%4Xz{^cZKqODrcym+d86)GOC_`DXONM9@{z--PDTq{f1Y=l99&~{#VmE zTOiQxcT+ha%>O=y1Y$qK^;b&SL_Y?^8=s33qY4r;n$#Ly{Tq8(W8B zS|?1`X)IuccwxBPkrbkpGss?|r|NR|^`f@9(Y-_MkoN@kX7n@-(Q7tfdn1r@u5$4P12%1ioe78H_ zUDE{2{CtFsVR@E{faZr3O@j|y3e8d4){PnJ`7mKu2G23eA~^AM0blp!d`UZ#h7C9u zkO^u+@9~ijECG%gsq!Z>OdHIc%jHSr`Q}&sJLhH24uS%vwbLMEZlgHvHHKJTrZ-NG z7aBrm5R1|&L{vuhTaEN9@jxJ58~9uBqr?lU1;v)!dyTs&<=`vM-il}bx&?sBz-a}p(m&W3_Hv{jG|iWfcPxtc@>Pj zNJcCv#=uT%r5HRG7l8xZ5pJF|c(hmN>hdY@4)AkIqg)E2)mz^$c zHcpUtT#NjrITmFdJr+Y2utT6c@Z-A@{%ZJ@hX!eN*@5Gg+HSjMBqWAN9lQtXZGeG= z`W&=;j15QU(eB0b*h|(V$eU}lK#}$gAC^l61vQ*cJ_HQBH_*jl@tRSsWAi!*cb#P$ z(IXG%LdY03eB@1!gTCyexZVW({u7{2i__=+x0-YB8=XWLyNKzJ0!-DF$4(^B9V4al%kG-7B^~P9-=M$_VvIDWQ4{swk*o_govakrz z-G-!tMfG~TOz)=9dUnH2TRTHvv-O+#QVZX_jl(Z4th56}Y+>XbJmW}wQY90nSDN&P zf9snaZ*YtQH|DgD(VizBES}5r((Lcr`1B5nYDH(vh>a)pazK>tbfA_D&IORK{63l;n@#l@psnQD~Kgj&W{$P<`PISHAoL27ZN z0<8pAR1&p=h5Iai5l=0coZ;l$Jt=OJZ8#??! zby#^@ohlHd-~l}8I%iaV%>@Hhy1h%>fQ*p-P8L|4H^NOvf&o{55kx6XxS^lEn@(+^ zh3<{ijC0Zq_rmqGnM+_GYLweu>j$=P$G)^WEXXCOIB`^eqO+5;v&C-4| z8BEsD3wV;2-Uj0sm3Lv!>Ajoz(IAX}=Ao+v?61oY<)aTd-JL#B=%KDhOZ)(_h4qLn zFen6tB5noA$3`d|QvQ3omQvu&xx6!gg*;w9wI=@|Ldu7HAVHjCi&n*g3Lm(c`dAH4#2KA@Q4Alj|d*dNc{isI02A~jEI|b5Tipv zL=FXAGKFKI&;7ds5Aq~tNhlpn$}hDR-7w;gmj9vWiq@)z?u1k~8%9azv+dsBcU%Ly z=Hj&+dnm-e3cZIjlKx!J@A^g|v^pt0XNalr8Y&>~>_ajuUwWm+Wn~A0N!Ds`Es3k1 zWrPOvN;DFZGf|)^!~;QdcD2vN#QAcycwJL&(5$WK zS2rog1NSEav+vnsBi9Avk^yNSiRIzxC8E|RxCroX#1Q$%>eKTdnyzztPtScRT{b>% z;-=}U{#n-Ngb%h4-l9NJ2LR?bM4)?QUVdMqI>o@RV)ZYxw_~?bf;)(~H|A3;Z9E{! zzm1faApSqp6t;ITKc~N?mi3b z$p~|ce(VBl61%gHYZkXpRj9Hy>6roD;6lwq$aAl>b3`H8PiYRjwE+J=0Kg#D5Uwap z3t{!6b*L!o8mlyB4%hGcIx9l%Ut*R45PPyTZ%NvCpeNmndVAzLWi}jo1!EvD1Bi9nKIL+&eitL#GC*%fc$y~5tg6|Dcn zFkxqch!6P({JJs(+}@E^oFTbAs=YGQMkkDGzmwr^r*v7Q;O$4t1SS@8>J@V}L5NU3 zaE0giY1-ilp^zzQgbAdw(S(iJljWLit6kwk;@vDfL*0>zH9K2=z+BN-6Hf{xj{BiR zV~W+;quE)={v#1#C2sQ?If1=IN-<9hN_q6srg#e`AdyXU=V-qWA6jbf@!CCa0|>8Q z?dBQHV+2y8%QqN3c8SRN8w^6tUq`XD=lgs;CIN;`9Q8dN+lt^cI^=Ybpp;?}wy~O* zXFd>ZU1=O7c`vZ3)YkSM7WT(9xxjx|GXm#p*G!rfx(Mo87hQFSCNYjI^OPG)IbJ?aiL-* zWT-3ke2#(joQ!eJmrL}f!_ty{ZT~;IUkNFucBX7HdOS(ZspWxm4oEZ`$i9fy_&oZb z2hFZ?x+KE1PqQ|c_U-35U_u2tTGnjs=xV}dxy0{Ch6cUU!wlmfw`3;C<|t( zgtmXs=Nh5nNaf;MjoLr9k!6M{gf3h#{qzPHB&ciwjShmRs%FaFBdqQG&yb9E zPQgA6QMb!uLx2jYtvPJ7I`CVl!U*rD{rpOUU&c+_fqL4S72RUl45ycC#Tw!^FINM% z5lR*(xL^GZ(|0PpW`M)A#06mi+CGu=3j9EK2jS-CcdKHP%G}iRg&d~=+zVmH;Rr&Z zeFKYFk7N2#Ar^Wl@k4giAu9Ha9}!48C5BE86cWrB#mk78Lmxw2F9(Y%Sd#gxbCn zB<>h>wOA+q@vcReSX5lcsOt{??WOwTn)#S?rL@HR6$1h;&-5V||2bRb>}Bmpw~M(C zV@{(Pr|=QAnM~QL?C;3Q`#NWMX$CC0Bj6UtK{0_eH!Y1|`FH z{=_iFf>&P-X?ll0T|6Q?iyekqJvU9ve*S9`O+Btb6|U}dau+q<0dH`!iYN>E6d%$g zTxfwyHrJUc>NSAhXa0sr>=**8jW`P*=dLn0s;-B5=^7T{jI?LfwiQ+D8J7bM!y}`; z2P&<@{?U{cg2Ksw?z=mqBUiG(MKbRSS@%Vz2xjzIyA!x{qGYKTdV2FLms8PrvaJMbF6g@3quiacynOP7-8D`EMBLi z1Sb&A@wLXQcz;{;Sdi$DOKIf_)!P%5RAIQb*yFkUP*P;pMzDlr#Z3|{(QMbg9z0-i z)X}u4?CiXHNB7H~$uNsl6@@~0ELxXi=wfdj=d5=K#YfOC6wx$XVO%2ND1!A14> zP(robq1qy0wDj<>)8^ZXMX7=>ii#>DCLB*yCktT@#3HUBGp{m9YoK)>8W!0o*F6uO z^WrG9*GE?w5t@NRh+P*rfD{SfO4Tg}avQ(^RlqyzMZ|`^Tbi_ll}AX=j4GzER{8A% z#jTkbSz{Ih6&IQZzxC*-Kx43v<#uyX!fE<9rsDq;GF~mp!=af%t<5T|qB(W$D#6OKZC`L8YK#b2Nm`+M`C;!;xK5|%ZBy(u9U&pJz5dX!13 zOFu!a8NiJC3V%@rhs!FSzcA)p=n%_q)fn)wnI||T#i6c_SR*jh^*?Ix+dth8K_%Z} z!YnC$f#{B-+upFXq2GSUhmofHI!e^kh<%_3h*K`X%n61+Q?j7e#RBk;8kEjdwU{kt+1N*Lu^PNj3)xwgj-0DekmN-*46S1WKBi4y0%ugc@E zG0^Q0ndivUM90xC`YtA=cHB$WX_l5&;s@9=b$tw?KDSM_blYco9$?g7ku;Wg3!vTxpTB6DyEzT+VcNh^3UgrR zQrD%~Xl~g97WzzcX@)=2TZ$~ODyo5nY==->Ax`25=OIci0bobB7;npr;oQer|L~6@ zLExv|bs}j(S5O_x1bahnGbtVFefEbl50C#Qtcil263qas%Ipn?JY9bswjha#cf((grBTX7w8IJ7BbuN;rS(muq# z&AL(gN+w~3$3~+7L3=yjS&7s>dwfnRQ!zJ`9de2_xNE8eoJ7u-OcZW5Lo3 z2Y)iIecACmu0`Y=Tekhm>!gWGl_hO;T6+~(oale=MfzD0ox4rJ%T-Q$i5-!q?b3Yh z-bJd)UeF8>V_hD>)Tku9l$r)Lp?bFM(6hw4G7(FE2YAhHmUF}$4!Y}-)eecPnMQt| zxE^w4vRq3pT+>s~bxbV~V)PHsNC_7WT_Wok2Y@8%e!6~zpT+)Ed=xuOaegg>X4^wfD<7f2hcHW$L9}OlPTVd<#Yga$(Q!Za_(GH7 z7JK(k3!Psv41%k6FdvZ>F@J4itHjnJD2HK=*QWvws*Uc((U&UGxTE5vkjy^e@bE_0 z^@S)RBS~}u<#j`lqL$KLYn*gJ24OlGGw12UV%*wE`r&w9m?v|yiLk7^r$>1@8+)Ds z52Nz(@C!{%pf-3s*A#+~S`j!L+=mAsxTm~7)PUzjT8cx^$=CAKefWc&kO!((KlPXO ziHcuUA@}?pp~eruc$*nbJEn*mhIM+F`I%>BNdG_`ple#J1zU7jIjl?Vf9(i=GK#a~ zaPd>UsMTQ9Nth*Z@ndtapOm|Q*$Y8>YBNDNreT>PBRh)SPxNMfRdYOVCqK6V&OBq8 zyV0=%8;;R;{sKIkTq?ZlOTtGr!~ur~M*g#A42M1-IZ3|`X{9wsXoI7yS2fc+0`L7t z3#2!a1!7MfCiQ9aqZHs@Ag@NO4qu%aP&?h*%yieZy`xn{n&V|?1sED=c@Iwfn7D6x z0be9vpzO#eRYPF^atO2KL9sCEl_OvwjtlM4j~_lzLV~MysDR1wqs#W~sE`zm<^C2d z37J+{s`$<&wwbQWLIL`7n!yU49ePPz0X<#)()8M?iR)rxP5*6Yh-1}5EP$BaV z|7?WOflu(@Q$i8XAN@q}buN@~zX=;eu@zQ~sr%HVJb&Ie8eERQ1zq&j<_}88M2IWB z0g@wlkcMjwZKDH^k3wKXa&#<-lw{t&EoM@Fc!r{{`A6l0K5BiXSM~Zjt4DWX-zzA)&QIFNpH0PSeqyt7C8(L!7rvvss;RUe zT$u9w%I1!6A+RYpt=NUE>fGeKp2#Gq6yo1#oG!KIKWSndAUYbXQ_dkT1!K zrxK)?|NHVX6xn*|OB#GKy3ti;b!~J)WuDX<_?j(3m!; zkkSc`yZCl^!kc;U#TmMGz2jeLH8n-5LC)cG2Z{k=wuQ_Oz`V7VTZnOF1fH2Fr=|lI zSDJHxg0R?(8F?&(gc?4}h_a$k_S+Lb{mITf>c*XshWSb+oAsaq7?Ij=MhP){&C0-d z(nJ|jY0~uG0x6XDXwGq=rNX%DAk_TZ}7ELaNwXfCFDolg%fy*xHxz!c}!Zl zJs0uUR(di2+sHNs$d`O0eIT)XWeU{O2D5-_9*O_jyPg`^ls4cqD}?uJ{1q#p0wU+b zJkIx#ene9N-}23LBRFiuUSmmxjjN+%$E1hy$Gto5`f?J&KR!yUeQSm^+FHTeWEf2Z zcTIeuo}Gzgmc(fUkL(U1fj+M@sCTf~G|&=oJ*z@vU+R{%M+T^?f+Y&>AFc*(m;@ck z(x^2VeZENv&rVkfW?0y?=wyWDZ4q5s@g-!;P7Uy}Ydz*?-2T;BI6KyD3k>HA))4qv zwgj^8F@`#{D_@;s2sb9qvgMqjd~UK~$U->!Xf_gd9lH#&RJ3}a0N2xsg2UOIWXAud zRhS^+;1XR*4i4<%s1~`U3yuImRDk+t+8l7%sU)ay64a6=)FF+P$nWMS8D8V@1@H)z zN2DeycV5!Vfj0yIUGCq1_+)Q|LB)ug?m=*kdeu=UAL+&U+5Kb$OCb1Uf}gsj zv?_1R@i^B!by~1Hi3_tC#Gu_EYpv&fJ6Md)8c2Mh!u716<%G&@&Kus)xpID;{<{kQ(NN_Z;ekTW z*dL1%k+KX#J-)inLX_($LgN! z#6(`PhxQ34qX+rijUa2%A9Aq=N1$`)ft2+!yzg%3J;Z5^9_Uz9;+aO=_5rJ6(rFE< z%V^?`)XIS%uHw?Db8wfm=|xj7(-HF(fiR8d7&&HUv1ta}eDu=1XDi4^UQbS4Rf2eV z;2vGDD?C(NT9tzuv8sMx$DhExU&&eob8nt*Mg~F&lkfU<`;B~%16DQX^w@D}n<)lt z=IgIShF0BbKdP18g<=SITXbErCdHWZiOzv2I1#6#YC=2n4lynKQ?cXkXDUB4FM9mE zR6iRB;$@WIG`ZoX8c@kq=+BpSqMdenmK!Lg9O{wCOM)aO8yW?0#F5O3Kk=zb+%j$% zmJYO3A1bs1po63}RjkirpU5KXdn$l}%_ieQT{Rz*J-E5oF}%YvK86yC{8(tQW2&wv zSq)Mzi(z4(f^Da@t10@jk@Ml$D+NbKf4HFZ93vb?O~T@hd80??37x}nd#vIRQ$H1; z{K5Qe-wNF4A|xi~o}QgsY=KI4&_{2qA&ercI;p!s z(&%%pS<}p(E-Tyfk0>`EpAvqlAde%M3`??wY4dJ((Q6w5Nuc1cK&e`hHf5lC!4tf|RGP`r!~vrXYRathgX87P^I<1v^#3 zz2yJRX_D*c7;YQ0PG(M2n`&H?8GOECL_-c~#pNjOk_)7iEW!;B%k|`)=hXWJ%_AhU zDZl6m!IcgV7!v1ieOHb;f*c5cy^09oXm?(TOMwU+9MJg8iZv!bvV{Vcy*bH98n)YW zXM0i-HX=Shn^?b-wS=iSxUfjY-P2l;17O}GDU!n(RmtXS%@vv>aA#k&Di2dFZ>S_z zM34w%631%E9YAL5ACKv_^&j7OoR>Zfa3=uam^cAf`717e^iXH@$gyWXd}?M8-uw8f zhY`iQy5}2@UE{xv-1+=$o-fAmQh%z4&@e^u>fr$w>HMxs@}>0T(TQl1$(egIesGXB z^^%qr8l`3pcF#js#8DcNDMJfOGWw2s{+iO8@-!K>f3MXZL#jMq8u+-S$CLwig{-V( zTM(3k4t(8;8L5Q?pAAUwJfqFmrz-)RO~8MqO)kI!HJ z?upSF>2tk=a6G)B&+a%Y?>XuU_%MDIT}p^GeC4C6c8HOO_ogxczHv=H?%l!AWxbpIXgHV#g^?OJihZa#eH6fARWGbWF<$Ba=<92aP z^b`_kL;@!K2eDXnshn}zqxV7yDNYD|QHL-6|1=t$2%v2<%Lx zS3@i{W(I`Y#6{Ym{S+47>f-^uUz48m|zetl?=42_V}BXk~V7y!10{ zJW+!i4>T6Stwn1~spXj`(kbK~7~?=cJ!pSKXk6F$d1g<8rU}FZ0^o5PW9HWt;B7BL zSS_>9yU`iO?0-ML!Pv3m)fn;o*?KOdY3)NK?63Mjp=xz`+8-dRG*2%uDf#R66i9#; zWYbwuAq=H0myt-5|DEHbR+i8#5gtU6h8S`ZK194wTz57MO2K8cA|%eeG@N%4k7DVL-;(w@4cmC~&= z<_(HeJr@tcoSTD%6Jke9zWv|N;?=xv;YdWnp^%)sGuNyMdfbKNRj3r&y&a%vKmftV z=kC{Qu-y}v`L~u76oWJK0YCa64;FUy+#JrEZfyEVS z>lrgwnOWOJXlYAl-Hz?Ds9*6YHGi!1=z1|d5P)?dHhNZC#{_?GT^9MvnnlgnFJz0G z8Hl@o$4VJCDtD|SkjSNm8>0s^jQB=|IQFJ{$3KB7!w+SJ^|9?(n$}iB-*SjksXa*`|79)KIfx(ct<0 z4Juf=NDV9&bO@!R1JMPIsO8*qS3tOgm+=#IhLU{ZlAfdeMG2DEkqV-91ar)!<(qx> zn8eze(K^FoJT~CQ0JG2+loTS884Do`UFhs^$~kjTF%d397@8WA%{?qAdJW@Nc5QHl z4dw7~kGh=22#n=E5w=2yCP_+_jS1asRFfm@5Z7>x|D#T~oLzay3WVgv0UBpz&`_$j ziP~YdmpSlG<4ye=vPXJX^@-%LX0whJ!nvH?d*EhqAC5cp z=jru)g{RXsAp!oTx0ZUxKBD+(Kti-WTbk#3-@wKkE-Y)P(SgiCU_J#VLBB|;xtvy2 z&T{26;r663j-}weL)?+2+sXBmI9l>TB9)!5K0N-VJV{>Q_Nswcn57$ldRATGzL`Es=A@6%!Hd=5dH}75^D0Cb!-=;r4 zT8r(3bcEG3-1<5Wa4@zdh(gcp6Stf;@!eEy5=+vNMNwGaye4X^BvkJ=aFx=lH*iIe#}DEbt@=Iyelvle@pTdT^wyGFwmRL8H~)XznqjTi zjzUazQG-!&T)Ap!KCVaWubUQq2;}BfpJK7ELp$%aBM2-;t61P+9|)^wVp)-^j+pds z+b9#j#9MI(?Vc71!$ZRlEBaxp0gVH5kI{1u^S0>OsVe1QrVxHwWoEMvayJrrvc^l= zVcEfbn_?hHM}(N64}cSQs`wZtM64k8V+eV8^N0Dal$w+@^9$sj#_Bs!x$YWSxQ*g< zaD5{OM@KLJcpZ139`Nj)ZtZhhC=^if^60i-=eD111{R8e<}e9neN6x*Bp*4XJfPm# z3(Fs}*}mc)^gMav0Z(Myftec>HuO@(u>qe?@KE&61D#bAG?muC*GBvPM_t(Q?#5BdSlI$c_%e>!a+gMzzADV6L(o@gOVA3qs377A`C|j6 zCG%Fz9%_5=W*1#SeY{gj4B}9VXHfV{t^?}3&1iX~fMEX!gypav4L6p6E~T`riK(Fd z*E-SW*TSH>Zo_d!p|L!eEV*8avYDDOg)+5rokiIA$5rLB+zmXOoO(&7t<-C0&oN!X zg~ema)0t-z9u4_5swa?;!L^9b`OqPl)H01^g!!0E{YC!&s{wNM)9UtmJ?ee9kC zjpuch!wo_NPOSvfKQApzaQXi zJbicJhrY?Q_h}6CJODcl7BNDze9Z{&LgjL->J=Rs=GwN1O~;q0V@3>+AN>;hTo4># z=#}{1IsTS;x%Pd9WEW50e-K8?-GJiEc#hDQl;x=_vk1N zsDb;v6%Tp`|N47KDO=U>(qycIh%(R}QhDaULoA7%MgV%?0otyp0$Je?5TL9mcS}kf zck+rJ9HoFq(7g)Nbugz!U$yAzLaIEfN`w!M9ahw*1M6 zI?=>AFO`tz+`TIpxh&zU)U8i|F`&o$IQ{99n-aa-UGI}}_HFpcVY>d5eiehlSBjOQ z+J{qQxzuFE_!@H4Rctg9M$zHWF=g6wCU3`)c7(39CNmnjPcawZ8HA}GSEx?t5~6{B zlDWw%Bbmd~UFG69jCH8W@Fdwa;n!r8yV}8X{SZ=hy%$9C&H?QgXc4P>mOskx)`>MYoB%nfY*l znbc1*vQysZoK`9jeIV`(4QRXz9jXKquP-7>jG31XRC{kY`|yYm@s-8hxqOx!sV|x` z^tHxXk@!E+a|?n~YSG2}?YZok<{v=r@iqg)lT;sxH^++mcAJA@E0w_qVpDe#VA=-z zQ2jnoUhq5qzc%^HWGC`N;1bsz#c*dV8PI_980QYgW8>JK4U|e0gX9|IJv&ptnP>fs zHXlbd4IL$xqgc85o?|QhjjdJNTF%l$YSLNjxGkok{yd9pn?)MJPNK}@n_%uN26~!r zi@HH?E0%RdQ_Mz&oec_t#;q9I2WG#{ZKpq>L(M)-Mfj={;9=?9>1N!~d(T!H9nlQC zMtr`0X_I+BHgprRfutn~9{by4hB=~Z*Ff>E{uxafeOm;wiUybcb17EpVDFz64kP`4 zl3Xij+LwLARWuns5`$wEfIr;eH^haJR)Hsvm+jZB#*Dopq*O>yH>xCf(e$_bF`*!FHe< zU&Q^Lde&uE#bq(BGn+kIp{gmH71=RSu#P3+8%i<+axN5(_BL~%yqw;s8%$8~Fo(JK zaLqHqqc@+eBz}tBxr<0fHnVlO{N<79=&_}MzYX9OZLMLW=$kI*A^4TC0&3HxRjzgR z%o^*&!Th=<@7$7{Q3X#oXf6e4xDe2|eWZf!3!ezd>0o*JGp7C~la6DD5y?_}p<02g zITK@*UI#DQM=02wRulz6+qMi=VDVW+zf-rqe*?*y7+P`8y%Y^y`yb*S?(B3QoxWkp zN(^ys%N2vr|4Ex!6l$SzQ$6?K^2zNnaG;QtA4Prtb|A2f_^w)-DCRquJEP6y}@asfw?yD@sLGv%{s{i_)ehFOF`Cuh2FfbZ3>hXKj zmTUuvi?6R&Jh~If>-k}+2QcZI^ zqgusjQuLHnG^&_80k`lpYjfmvut(KtjJ9ATJo`loezxZlbJC>2Uq&D!2BU(j^ifWL zimeMOF?O#PLqwZe39O%vsL&U}Roe5EM>1ejka0R>;1D&xW~=W>{wp5YsuUB{NK+VT zgWt22*=y!9>jh=G>T(wX?v!Ngc_OC?eSeyLYqrMAVJvN0wnhy4L}){K>JQ-!M+gL1 zlFq?i>>u)f6&O@g1y2bZDiU7A$_tks!;|PDQ>1A;3^zTWCx~+|-2y->^0-kC^BRX` z5BXBmgw6-T@^sfP;yv_RRMEBA7+Q^IqpCPr%5dLMw{#l&wOAMQl1Byb2nV4HMA)Jh zM?qo?V3f!=yVU+O)NuJn+>++)_AKrJXoUD1H&hWsxmVOAZ3d}k&n?U2nKoyY0(deQ zj^j*HXStGv*~`VgRIa0JUoomA_wh4-iMMuB0CE7TT6psj zgtJ!FE6g!6OCCvO8w0s=Z+RNk(HA_?j6b|zUkC3b=7xwiYEcAqUZv}xyVH(Fl7=U% z*&TNNS4ka77yA#I*Hdp=0b}e1OiG!>cg7le7cgoCUevEa454=GfNV`gnB$s(ObImJGK&nifH6Z8wkHZEW~jfM-+V&tMo z0MBDUyr9*PimL@t!3(?W%<%3Majw&+6ax*$!KUfl2ZEZ7FUX0wDwHpxmt-OjQ1u-p z-`wjUH2rUWzR{sUE-TuY_UYn8Z>0##TuqK(`?2ykB2&8LR0nBEs4awMF9mS@q5KsX z9;|)Jbr!aFI!FV}iwh3~f|vJ`?GCDzTaH&?Z%cBk8!$u||8pHZIY9*HdAg76Pr%9O>9wQ0X`z=uV-;pu4+V zlMz=WkGz5Pyu_v8c0`#llp&EdRj@Fjl8Xg~)(YKDDzECJv0U|&s76Hq?)HraxBo&plF>e#;##rx)l!IBpC zB$IVeXi)QLe3ms@+~nU3TW>sKsk(ZwLemPh3p?|TJ0#gxaX+_L%&-t(NQSF9(rF&C zTV2Fyh+~fcXF=m$c~W>|Vh+(bKL`QgR*viZp)i_I17iB9jjpH+VmsjAWc(r^Cw{1( z1rubwfS^&=_R)~NogUzD+**A!+3Y66-)$|M*FSh_(5+ftP}l7zOKaTNg(4q-PMhB*EDyc46%Sa3_(1-4LC3k;**XrOqf1AZjLh%E z5l(=i4kNJovc3v(fxb^u9N*Myj0l5RlvN$>?L*h*`^Nh^^vPy#TA)N`!{wsi^2nWDtb%QV)PvxsvT?)#-d>!uI?;Z#Z8bmhy{kCetQl(`W5OpG?f+pu{ zHxbt~>ifU0wmnr>-A!VUi5H(9!o;7u`bNxL=*#+MusMFX8yWEQ-p*@meN_I*6R&G^ zhi6YTrko|rf$@kXVu%gcn@hvMiLkvbXO}X#I$FgzWp|Oe!Qy^=>*;MOidmOy{S%cEb|ZGYuO8bc7j2f)ns*{YzeVafm)2IhuPdq}r z0>es3=hQrAiRQ2+u4jU8t?H&{giY+qH}$hTaM5cBce^8zn5Noi5URqimEE7YaDMj_ zeY`m5+xuox3BQg>yoY1#y#>TU4`Xc4<#wycOF%@t1zrY}5i*gA4rHtO9&a6|Fh*H; z>b@G>97jjcX- z{Wg&|m;~X3Q!3S&Stiy6oCC0lj7S)uT*_h!bp{f=Cgv_&OCcBVER|VFFU0D+tsU=z z?ppVDOjnlPqYr-Bzo@mpK0oxqK7H_b(npZ-s-J@0IB$G@+Ft}AloV`e%kKm+j3=WT z%X_RO^=FKrQ;7rH8kV0=c8}Dgs=}O+`J3@XA^uZhh{^`iJA|dwZ927m&AIotcvHx8 zzFo$;<+g6XN}T)GCw)k4qN#~f%}z8f?&?#+lEHeFS(dMemPz^X$$cwd;|n6@1rF@kZ>)xeaz72%=X_ zN6ZJh{I#L~6`^bDnEne`t!DO-0HB>vo7JTRU63>?7twO^b}h&VfYFMeZ4NiiQ_oWLNGyb3Uv$fZnS44 zFf_etNQVKhC8%0&|32QZPZDUutdA_QC8#8babx#cWH)x#xcQ%)R*@bcTb_6VP765N zSOLoG^Q%5*!v%SSL~&GLSOtrCO7^HsbZ%fg&Id)5uL@^$(riDfI^=9fzMNo9cN?<- zm8F)aRd|2|f9O7_;BxK5bfn1$5Gr~$ES!H3n95Z{V~?&^t`*kN!@dF{!68W;=ZIgP z#zIRM1Mcje1afdZZN>V{h7jY z5EeJZ{r~TwFiu*WZ0QIj*fEhr-iTgP)a9ur=WGOj96DT7p6@iL6;%7oxng@sk9kJQ z2ENbDmD?TA)^$6|Y!MC>p~8Pz?GrH?Kt&Z(vfoa4yn}_ zUY_@W6?j@3KnQL&nEZ5E*MNrSnWXnFDX*lk-+~S_1AZe~z2nBa#BS|(b{6d=)5QV+ zZ%v5M6jzqIMHB@Sji85qXeMwyu3p1$@e)-m3S*XQY;(cirH7D_%)E2>7 zqj^-t3%BD3X%?wqqloZR&2zssi{bTo%FL5TQ)ygK=}8Ec81G&;4=OiWpL`L;DA&tW z`Hn-+0?)e6CuYBpd2jjZ9PH@oe(PQN`xlcboLvuiauLNu2HFK~awA&`I8^#d;9;_4 zYMQ-(Lp+XXUexUtmNT$Zo-I7~QM?gOh}u8p#!Ul`f1(3(Na;NaI0&cdKiXUHJ6NH% zF_f4+VM$G@huS z$I1%fv%8~_vvPmyu@9SQ!E1*VpCk=uMp;OsGDqVAQ5tCXx#WqhR+yJ4Flp5aPUx}a z6`&r+D>#J5uk0zPMoYgkC5;m{di8 zSqZ-+2oACM(9DKoLeh}BveagnRmu>MWJ`i)+RA>kqNM#~*NZ`W0R3kK$wpLRy~BX7 zabFDenmnDVI4L!DxzsQV^=dKw5Q|=mNeT!an$yW`md02+J`7W3;?}tfLLR*&;b6Zg zs^rDrI{kx0!9!8R7X;xUu1OQM{H_33?-Fp$ox1 z38XKdA6&_Hx;be0N*$7gH*C9EJe;5|su_Q2m{-{gHc#YzR-y>XnEtoFq^SEsTO&Y9_24eMX~>0(hN~=P`n}UVCVm0w2Pb zpM=9Xj?40%3E_Dq`2m?HEP`P7=Oz{ys2Qy850lWKQO92!?Jq|rT{tQ;ueHr^VeG_a z3>br0BX=x}fUJ#zRi&PUT?;%fEVbQ(3I^U&0z2?u^tP1DkgR+fhFgW&o&7N>vQ|pO zekuIGpyk)L!x0SFW#&qdyA9%yf{?Dv5d@X`_bEhg7Qb5|TJ;*pI@Kgn?j6zB6A{X} zZh*J%40t&6#-CsZuyKT67a(D{oLhz=6d^(BX6pPaj2<;_1>2aX#hQDamF`$-t$F>m z8Fk1)NTkf=W`|^Jy)^DxfxxdmG%hDnvNFt+=e{Cls<|uk4DlE&{j2}J@cJ-`6Qfvm zru4QVzSxIvo`*rFw*ohrs#6ZBWfSsA&50y-1^{@S);@y;0ARz)RJ+X&`1l={lh0$o zV)XvV>=J7Nn92Rrge7Rfy|i?w?t(5G?~cy!BPJud5U*t@0>vfQ(SO4S zT^`?yC@ShvGxr(8b>=4o)Zm-{Cbl=H1Cbdm>0=oM3yN%aAL@~-gkaC>AVQF&0#OoP zFA?(_NfZ!(Gn8~XXg`ea)UEAf3QYxV&{MYjLeGhdQzp|$(q#jVnjcYv)0#K<1(66e zM2(nevfVtK={2LO%KX5HH@zTdZGe#9#>K7A5WWI}@?}l<70wqNuA576*cg1RO$+%; z=sI#hKbhEq)ars9_zH2!^J#tC(~Q2C6a*6)0fljMn`zgEmc=1Dr-kg2yWrRNQwPLb zAepcH5-}hn05qm_Yg?H{>Ngk5Uk(&-`l~e(^M7*B( z(nE$QAM&WeaNW;R;he;wRJ{s*TIkf&Up-k_ZZ_Vw>OMgsl=J;}fq6T2TE7{inYXYW zf@<|wIlO6VXylbEUX@F(3d(Z)={4Hr=1&~7%Gfiaqg{YD?Paq?6f1B2*$67Em|Ad< zP(&^6-*0W0VouSw7i5leG$vs$Hm#V1iVu7cA9EKOQCb)sha}-d7vRF=HX4x8%Sy0e zD%-?66)4fPLsl$esUT!qvBD#v@5;SHW$t(LpXQ^Icj&d2E`<1dvRi)1GQHc3fq74O zv&5dSa_(g>8#{3x`0@JACH;^d$e`1N(>thR$7&A@N6_Ya)y3!;%=F|~j)Zf5AhjR- zfL+koAr$~LdHfxGz`f6h3#ftsrLJ|kl0l^~0`~uauI05HO{V$lYH)UyKhm$NFv4IC$@%anD359*g zq0m0|$*yP?$;AasIknrY_^7WR-uf=V;F_y)W!oxE{iLI`bFmDMV;!+n^;hy~Ta>;tlI5MYvNed$RoGO6~gqRXs1~Bf?m-<%!|}Ic&n7l&&QoY~*mk zb;{s)PL5>OBVr*R1>xCtqxx44KE7Tug@99tayk7tYXQ>YA^#uu zm9MpkNRQ5k$Y?GV*hh6FiJ9qd)12H`E#P;#KH=6>)b#gbo459d8c56^Dh*O3(Y@dk zGsnSD=L6~MLQV2AVmmLtuVp+MDy~wMMB|L;N&vk3V8Nv!wSpyOEL=KitD%^*pEFlZ zOwz7bprfhqZNuj!BjF0y6dn2rDCF=@*38w?IG@-;aI)V0jzYvitbk?v3fkkC3{Ngv zUsijmK#w5@#*>roH4-O2BYS2>U16C*Cg#@+xPMaT(nOSa;acCbABtJ?Q* zNe77i;#!CwSwpv*ju)?`>yM?sPT!W4$7JVaVnO9}j_=Sq$X)Mx7cnO;8TS-Po;2^D zeYTJBuzbx7cvVY?NaPaCfO^-rYwv6DhwGR41u0g%M+Vhsg>-3zlAj`2yVHo3%*wj` zwLq*Lw&7O~IM4je)o4hCn((>B9hmyS^J`>^%w;sS*$z=4zn++4=$%A8Sg%0oxoVjj z510c@teECP*QNx)qBN@p+d8Cf4IShcK+UGDS4}cekp~!CAFb)xJa&1}iP>n_^`w z+3|ySSx$V)qsM?|YA!MZuV)4KTDG?VwUjXC%dy@I0;@iHAKNdTb3%VN$0BUEqTW%O zhSLG+Lxhc7Dg$$nUqGbC{Y)K(N>FcL(9*zdpr_Q>uDF&}Yq=xcw2`)2Ls0l+xJX}7 z+cjli1pBvQMUpIgmVOnnWgQ+~qM6tJS+Mrp`Y`Gc)!zy1gW{o((d#8>b@-pqbg`2uyyjnarc&?X$EQ1|65~hrAiRJw zDq*D8M9W3E^7}$P{oT(aSBbbxRO5#G218D=V@=yoRym@gn%T#c&%l`Z_aFKWat6j6 zWlWG%zd1ZgS=X5Fr^!;lr0Z=2>KelHM9h}VS8f37rr`77P^hj{)Q`>Q3FA5-fiqcv zLQ5FYkLe{~TBVzswf*|JH-MnE1z}AtFvGG%NyKmnPG;-qqs(#kcWx%jgb_?Rp;(Nwll zE(4YMb`S7XNNql*z$L)t*;R?qSn&zSc!pVr3(n>zB^i@0&>J6$Ih+Glei|-N2l|Sz zOphmr#d`4x^aNoYPrG_~C5wHEi~o`6x4=2?e#!qcavi?oa+m;w493s8k^tj8kHV}; z$4q*`odqM1>{4OVNzScTBI;Fym8W#qnuut_v^XwU-}6h{!I@W1?8fo^<*yWnn)Ld? z2)-1nI9du}5kj^l2!j{-tWn(+RWx@yi9%$ZO_`jI5wpZcpSFk4sy>XNZt0$1LMG9T zPE5kgWDXr%P9QU9TQ%K!)=UF~UjVJTsfD#E1bQekv>(Gs3If&p=;ABC%)_b-VEu(0 zY0jRf#D6wc;**C~_$};er-)PZ46^Cjmd7QKpFa)e%u+_~fd*v;wef;rd1QIkrlNfu z`0dA9RA8Feu^3fEGh}GqirkRgs>RfZB7wQCMTlEL^AJT6WV_G~Wu#P7t_Ps+_RXnFvQL^Y)IE7xRpFCg2A=qMb<{r2H;+u z)Lgw&vf)k-8$Rr5x340BA$zQKXOc3E0|G=5KML+#-QVZp!L7^stJ?OI)j8=wq-Iw? z6_K#;j25DPV=&zm-xYen(O_qt*y!7^iBE(@^v8((&;VGdoXiOCE?!xsglnk6{T}m; z5V75Oh0bQO*;IC+gH;hdAd$h@MVvJS{Sh-Yu+ZdfzLJhlRW5?~>Nho68mse^OnL_QZ7kMb~85 zq^Le5ly|&)$H0yiQQcApESUR90a?AE571GWJCn&(&htM^WWpl?2^{b`JXVQa2EBem z^v7J^A5p($5Mo1A!_Om4v7ZxBOWT3LGs68HSkcEO0gZO&wOuw3x#h4(3d`(s;Yar8JMW9)u#4wKKttd^%s7|Axrx;goZ#g?u}_jx6Q*{bETU z23l~7taA6^R3f4~*4eWWc!&qX*7PJ8M}$Q zs%8Bpi-F_|$mh%Fh&-=QLaWdwdyQ~tXtg|!f&R%M@*~f(KzRxQ>?0qCGtp%ZmEUu_ z?VO9tb+2_yIU%*dlvHMXpb>mWA?u3Q)+co8jVKh1!WWeFv~iFMw>;?&<3Ybc zv5|F)y~xiI3wA5s5M5d6ZvH)xe9n?@IrQ4Z9W=}!Yg&0x-1`^@L`4trff2pl4 zjEg~F(=fq=(l<3EN!gWI`5p2Vk+%{t)(_qkyW}xK!S(mw^W-v-4fyGI*{`SDuIvQP z3;|jdb`0tPJZPR6^+F@L52{2M2l2}fyVRic%eRasAzGjcD_?eR?Rdp0fcH26h9!=c zcct{oZ!DUOCSPGID&w!8_LeQXCy@yxGj^b#|FOJ;M2%UUd9RE2;k%m^WB4ZLySC?! z(bs;FM>ao3Fvhijh9!!a7S|ZaS*P2F6Wuif8qWVpBy3EB<4a#h-*rt^)a&9KH*#Kl zqc+m3TbLfG4!({f&&vMKF?~#qnWlVNfkvI%PVkDN;s;p-2P@P2NBxx3BXJpyC$|th zN-!1&u5Av73!LFSiQ2_i7Y>{lrjBDZyAyO?9nvQE6+CzA9}NFkt9!Nd1sgh(_38Cu z{P!e+K)IBhkJU81csOj60pjoI8?W$qL0~hYjn31cG9f8x4DVc_D!A)ea_p*O0hYS9 z?w62+-as8~%+Oa88HTF?P>kmhABV``ak*jKSPJgpQL56LiA>iBNlHs_vA=;{?fQ_5 z>=1#EWZbbTQVg-^@xRSF9zdiaiWjI`b}i`3%}rylU9OBrT3Bu=0O>QIbWrb`!f6gR zsL_HH*ACaocM+mMaK#@^)3$8Grc2=e?sw?y>@wAK^N_iKgh)vRS| z4*gUJrht*fp-+OMGg=?}Vq#rLQVjGoeLlFR*1E7doVZiTb-~6jOTmkWE0$0oo@5ya zw+>>2YE)*va?6i(L$71s>P%JoS8*~H0u0|-hQz;`5dvwZ_0Z0g?F9y|U!gcTLY z8?hZWT$2$gm#_T~XP5O%1pg=0_V>pLSmi_p)4SGHTIVa{E?uKVnSfXI-1&&W4E;_H z(Xy#zRSk4LtFp*_KYH~2nmsgJ-jdqqP=}pZyOfoj^a_EnIN>?5U?wsbU$DKwu%h&6 zsb6Zo_Vil%E>rOGda2D}VrsbQ)JHIiWbQz{SkxE%{az_K+F~G|Y;FO@L-PgQ5Iqx0 zH9$#`bue~U6&Ixr)`+dws$U zZTAO8*Yg@6P7(Af+WfI?rkMfzp{}Rm(N+F-C(KXTkexbKZdD+h9VEGcvT?N1j3ImA zRG^@AwYUU6sdk0(mMaepV1`i}VeUO8GBYD_s42$RT8!7R@X}MSr6XYrwvv7+S=z2%vdq()Qv{Q;WJ2$`2ph@deSQGL_Geq>5ATzs?&0wqf2RSMn_3KP`JL1Nq= zy>>6ZjJMyl+kF||8;^1xyOX?U6B8jocxxCoeT1q+mM7k!$AKuBdu^=R(na3d8`;prf zM+y)YTZ)SJI!5u}1lCh3_Ye?qzuqc}Xqm-PT~J{-w~Ihvz;_%a`=xFo#%aL1k%=m^ zl%d0sIzou2#!a+;^1i6yMjq1#Fe|lE9-HV@I_ZnfrMfkeacv~bIHplNMZVWXZK2Dr z(_zNC0O))EX;paM;2Nl0;RL`+AeMAgr$Xf=G0ul8^4geHOI$0YFtIx$QiZ(>U`6>AK-t)2Gb%3UVmzgFiCx4q&98dr%eo^1^ZK_%K8 zH=ko!EpmXTX@js^n7yT+h*?8f+@?6}3DoDdwG#wTHF@|pVyw+V*Ai{2%#!V<=SrR; zrRyXsaQ67I0PGKMH}Vj2e(&Z>!t}ECM!|ysR!2@832eJD(4KrTj%hfALnlYaKkBZY!%ng2`N=?Q2wKylOHS)yIS71 z?H`+-sEhXtP>N#)p zBI@r-qMhAFob%WK;DZvuuIZRE#;aAG<%s~K`imOyUz?#IZtaqjP7qkZG{@ciWnSqM zbt6nRYD~nFwC;⊁bO=Uw1_StgbNV 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508130002-Config.rsc b/MikroMaster/20260508/20260508130002-Config.rsc new file mode 100644 index 0000000..3c32a2a --- /dev/null +++ b/MikroMaster/20260508/20260508130002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 13:00:05 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" 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/20260508130002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508130002-Diff-Config.rsc new file mode 100644 index 0000000..0fba6fb --- /dev/null +++ b/MikroMaster/history/20260508/20260508130002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0