From 7678bcc44151a11f89136eb68de3279d8476819c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 11:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 11:20:19. --- .../20260512/20260512112002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512112002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512112002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260512/20260512112002-Binary.backup create mode 100644 MikroMaster/20260512/20260512112002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512112002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512112002-Binary.backup b/MikroMaster/20260512/20260512112002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ed19aeeedc0ea60e49ba8aed0bd4e28b7f8a8fcb GIT binary patch literal 302653 zcmV+aKLEh*sF8C$o&*3_!g(Pgq_0~tJgO>LZ-cr3000O80004Z`SAPzLud$5bCF5H z+pDqIQ!i_@4*@-q(}dgh`SC=t7}~MaVkshN+Dfbu|BhfmGCAS>Rzm)Xf2=n3yVxK; zPXjU0R8-IjpVcR36>%E2s~7#dzDVfiDb$$c=)0#L9MdM}b&UUBLN;ugL>H0QxsqSk zN|rBMuK&1BZJb>ddWf^Ci}O6_o?plugIoUpYyPM*~cp=KeEm>^}WjZKI09Q=p)pqs?W4rD@&d3<}7KJKa z3v%iJ!)8;E+jUR}0=;Zak5l#sY?RL$d{3V~w=|mHfFm zoA6g2(QzS_@nMj)hq)$2jU>J7Ee4 zm6=o7$j$o~wJ<{j+0m{|mHHuYR-Vq?ots}P*7VquUQkLqA%5I1fghASy?IQ8)8U*eZ>xJ+fx3)hx>u+aBZ5F!V(MH$Vcs4 zU@uKcc*-1k!w}d*AKKzw2DVbm0wNSNJNM@=(LrPpAsv6|X1!==*P>3w+|7&o2KrXLi+&;Ye*y(K1jv*1s(2 zx5}`J>dAl=a2si*{Pt3K&|3~*iiz9Jsz>0IIywV4kP^qn6C%!PkJIa#itP@A5Y^{;Asfja0?%E4O5~&iW0dNa@0dt zIyf&Vgn*l04z6DFtg*5{s@OP(%#j|AE_z?0w7jiTs$ufXc|Hfbk_#%BI-|yZZ>K1U zU#z1nS9+nOS9mIi^ZL@mTuG+P9rjNIEIfX4RQF=8Ig3enc){m1p{YilT5{k@6gpl5 zx)M-%ACWDt7gp85RrA_=?*zt^*}fRFoLBE4m0Sst>Fl@RiPCjdP}MFJt)_7}C#iZ| zE_^+yjvk{WzgmcT(V_v#{w!(-r{yk5d1DlSz_)Tp)6A93_=0_gmc>uJ9JOD-i_=B^ zz+ke0j!&91O6odK>=MU+77Z1uU*)ZV-rxX5YL+*n`CU>JV2FHGoUViBXI9_*P1Wbq zi&qxefr80V_u&x>*fNmey1C9O#%dDF_kgIXISX&ij#&b`hNRbG-|@&$Dsy`7DhOr{ zCi&^71?P-k&qjt^>)CwRrirTaOa3xu~sN=sB%3!-Me(4HVqyugO6iu+vGWB5gAE&z3NI~dF=lDXd)^4ex zc`2;D?0Erc@oBzpa1bX~&Nj;inc?Fq7;n5D;8X#puKHgew7oT`LRVW|$u ze!mWD5%a)`afH@hl(3otxD+l<%sGtj zbSZ!=KO7NbBn#%*N2wf)<{pbtfl=nS;b`H5R1F)`R-jiiiOz6=tOlC6s}nx-|~%VcNt_N@(pFd zH6Egtr|~-ooNlS1PDCUKxFR}8TnNK(^1Tnw#KkAPv59j&f1Lt)BgX$E;8YQe&cCz5iQ_&9Lsp`?0ppTcpth;h7cD*O( z>kRSr3^$D9oblMv-74u9VVP<77Tp$N6rHJxqkr+HeK~2pGhzc8LAFip`tT?s?HBx$ zZ0Z!0Vk8;O`l#GV(Q~4wtKF=%G5==mHIe;08s8_>59~sAptJa|MY$gGqOuDKv~9F| zghtDf-bAB3-Gx?0dm?5@O?1N4pO{&sijqH}ihee_h6rY)cSvV5h9M9kL)l!d&Y^6I zxJA6#G<+?FO0Oi*50yZ&&7hPvm!%JozJL`Wz(!L`Zw-{gA>5#B9{xk2YRb)c6rkb? zwKp}$E=_JyYv*F0s5ylA5vKOl8;00L*dYyHV_Y@cRJp0jH?>Oj8OjAYckFLLWP1P2>XE5v{P=(P z$+@8w$zY{oNcuMjq5BF(6KhDSUfx$FoOqmTFv@s{n^vljo>)0bfR+|kawZn^E zyE4ES9g`iPxZ}X{vK)wA4YWCzm#7LTadT4pm3vz~tdu$q4`}tCSGKCA$9Yo_BbrnC zmZNI)*&fGPfn2&=vK;DYR0F?2vz4K8CA2LEB1N#UY4LN}$QkRVqPZs;!X?w!g<`!` zAxK(}c-a*7RF_;{*ka@FvgCsq8^Qn$p$E%+O0r}#BIn7nRGYFW=T0qn=A`*j!!tp( zVRQe<+&7fAY^wpY(qdIfEbR8rT<1Z0CbefdU9>s37kq3I{{2Dbs1<%<;2Il@OY6o; zH@N9z3F5L_cQs)dX|kA(+454@)d*MHA)eA#O_cAhnS6Y6tmvFjfo6LMf(>!YM=?yC>`5g{v;o@8st4E*rm8i7f768EtZJDLbe1Z!9%FK+DjxdaBv>8x@PA zKI%Ok0fFtb5Ji z%uVdRlce9+lU+JWW~OVYq)qv6LOu_H?$2&P|I>vCA!oQ!x`^N&z20-*Es=h$~ z2nd-;>k(+$o8A0L-_xI200M&wQ#i=BHjjpJgpMPw4Nrk7cT^DfS4i;1)}?7OD9Vrb zlb19*h^bIbAEr3P@{Pf2`lmrM}16ji0*6mom}dCv5T5Czs-#TZ_DDtj18lw&ULJ1QAQIHL9uW4tkct9n$uP4 zW4D>A1A&vA8nHM{-4xCvPo$bNY*M$H@WXE?|Q)SAPS_wq0AT zf@LdeoM7t|*u{Ez{B+Cx0JJc1B;75-4TA$3b0)_V5@a?==y2b>*AlUZK-=(^@B&-< zeuA^=n@Jye?_!_5n+DDv)KvaJuDMCu6P%;`oIToT`heyq`I*`9{LWD!)bmscg}o$|%Ca_G5<&(*%mv@tki9&};bNALF@*lEzwydhF z_pA-cKBX}$w;-W$K>b>7LKi;zKE_X2H>}cdKDEt%05DRlKoVl;-Ktq~_XVDD(K9AR z$6M8FN$YF*H?b^HN@t83ltX_)tCUPjh;6%`1V0d`l0EkH-66L&@3z)pO0No9;GDzv z53ryd!~ZEA>C$A--!n%61Az$DnW+hj%S&@?4ejzVVdle(uOd%7d2xE5w-xkG8=82z zTf?ou&?Li*^5xP^r5|RVIq7dOE*fX}zr&Y_tHegs#4S5xQ9p`BIE;^b7%=t=jgPFV zPMNjF(WnbBA&@r3xi_-SmLcm41w^QZe%nO0%F=_gETcV<&1%%hF`_wdp`T53MQrOz zI+m>uc(ai5%v>G>Ct2{iqLufu z*iC!^5pOqgEIw`DAJ!*Lg(J4wSlqHi8B)_@mv3bQvX;pIsgA_-t7bPI+i!%qsYRe` zmyI!43c{>pdJX;-_NWcZ&v?OskhSyy6j5GWN?vvBBL$M~+MlLc2FiS>sk1U)@@-*C zF@V0N#gf1jc=y~n`Ry;&IC%7f4IMFCe$U;` zLIK{AoZ$|2={yYLv+ApDz7H4f)91I-EqdWA<=N5zhCnmoXfJ;Rt(uT4R)Vr1pe-o* zZk7~0!E1<($Fw2x>+IU%4Jhh)p5^MC37A0lxZHu#!5Izs0fC_g!Py}q` zWeqF3E*Og&O+wXJhuRa5Q}(`j&*(UrF=OMV`)7r5-xq>6I1_~Q?}J{fwK;n#Y>lpt zEZFVxiZ2iXXgvxS`hBMa7 zJ@ZE@fMm=Dx{Ta*?^mIY7kq13X(*eGQlf!8apZc!ejhXex&0CUv&g6>^rf~k0Vcd2 zlzqPrd$oQ9vq>AMFX-=aa>lVLLsAP81W1Z_0VwOS)(Vf0Wh3`T;%Xl$zowc9rZk3Y zm}f%KC;;gvXz{|LenOq6d<)lHz3nhF7*{}4;B#LvOmMG}DO(w!vBs}$kw>i;6YLhm z{*)wg-}@^5cotqRj;IRpd@R&_fI}Xx#^Hykme&DwSg>u=+Sgz#2)lQwICgt(_$ktC z@v(U*xan-+3l5WG zda`lNdo+!+U*jdw)B2e=13EgmH(txD zUx3L@U8#V5UMcJ>2abT7>mkN%_p#(OfJD<-agAfCi;0%a#%K!5m2k zCW}3F{2OS86D>3R@!>Ny3Y833ojpsyN*hrny|HfS2Lhva`VTJH!7$s2%fy6ccj<^I zwDc1Ci6>m7ZEHFR(1MnqNIP&-zHzwxh_-#5x+~WZH8P=Sf0Ns#SRsX|LRFn&UT}N7TWef5>A)!c?wL3i!YUVGvxjTVbj#>#Qh~}p0QgZXGSXwG( zN;kT^3T2;AI#nvu&N{K@dfhjE?$4#}Rc*ZK^1ce;p4BfK=HNEjA&a1sNLkD}H_~{i zC%bqN67*O4SJGO5Ju10h_d=;8QOhPX)fszAHB>GMV_r`CLbjCv?zdasx}xMh4O{3( z`i}D&z)?(aAVsnjnf!=y(!i9`*?Bi+e9a>Aq>K&WQ}_051{P0W3u3x~O#1x8C$qKq zZcjlE3BcWy0%B@FZ3*#yQ9%Nn`_2x6%^+y9X17K&(ffA(PhC#5cZ`MsmRNN0E2M=3 zUJx(~&mvrZkSTqgxUTdEKFy}8t$}y4fnO6UB^*2K0F9Q3tC=jTyGr`h*K4U?bTy<# zl@FS5pf@mUj85c4H{XMJ5ci_l)O)hcX0C@*s};I>r{f$G79S*NnAXjy$5OP9YQrND zYy0CkIMnD6rr7MZgHr&7VNvBB-4XMKnEcHJAx&xAH%$iY%EuW3gI`WH-Av9*tn9FH z#HB&jxh_@ie>Eu(EL7wpVCpTI2a$8rog_N`TIc==WE`Ic+iUoS$VBfRsR1T#Ws)*D zx(k2p)27k`ism~F$y#CB8g`$gcZDL^nFu8onGQthHFWcC%R(2P zS+6A>&hnrO z-d5m|zX&I;w*M3TUI6nsDRSc37N)D>KtaRF4so3C0GmYPUx~JbqXI$0ubtBa_-8#;#E$|J zK6bZ~#Rp_jsnr^Dh{Z5?Ud&zB7}IWTb=n6!rS{<|Ouq0p2%SzHw6pW~d)a zh@$01+2ST6@nqKrwk%#Qkz)Ll6P9@e8#cqj&WDS~RebDXZA520uJf$=(<=Q`6q-Jv z1czz2HNS$hDSC?EsFCfxI zA;~0brhNxH$KgHMpoM&a0robU%YeeNnTTrS3C#XQoV))sHup^~ToZ@4E=eR6q{ssE zdvxX2$ZkZI`$B=Zuq1w(8+U{D5><^?Qi71X5fs#7pO>sB!P>zX?R){;npPu^J1uM^Qu29z?Z&%!u9nxFn=L7eu}zWV-WF=7dNWa3L-iC zOU~A*DxX}i@qwRjGF7=A|0}1rvg(541E{PU)CwuDKPyyrmQhbe5)mk2W|oG>G>fy?tf3?maiU;*2lE!qM1stCoHQUmS<;7AH7v7w65};a@ zqJeNijApKCtmEgD+Fpc#^CF{s_&$a9!@ZJnc@$5S;Ll|i#jHr!1P$yYkmv0fbQ*k; zz(UVi%DmUBO5}6?)H$>6kfV>6BDeJZSvCpGUHg&PZWOAQRjeJf2GezG=hxkhZ}hA) zRyL<;?ObcnZt(9-HnI9aP_czh+-CnmpD4R40FX27qJKW2HlVdf4saP(8(=GI05?3U zst6}ZLbNd4iR-h>~c>{Qln>e=hW37Ja8O|c0EH# z0d1G`=s*auxI(k2yJoAEEr9eB&6+TtC|VABOQ_Kz!-u$3afr+sN=9>`uAH|l#iXf# zjX{9vE-)f3t9Gnc8t{xP0*jrPmBM$7{vl*vdn{5}FnaL;Wn zzILT{S|1cJG=P!KbbYQq)Xd?=6xzfI@E=U>Qc*XOR(*VXDX7hHFu{zL?gj4m8ZO(b zNhtCTippV7U>HHORaT6fy68!QX~2y5Dw#TgJ{3Ppz7F>%n;}PG?2d3NwWE9+x93SG zVL?+$W{+CsM{67JZED?i5L72LxvqzHQmxo^KX;*#*f%`{Yd2A^r)qWe5Gtct_GCIo z0p!sIBo)16@zkVDRnMpW0o>|=MQ*tvH5yEX#3&3FN`mAC7uA2kX3z@`o1G@74i0Ua zoGNs()Qc@ctrSnL|1RxuEkE&Oqr#V>!lV|R`J+&%Uwf$VlZQ;o&Fg^rLB2ObisAx7 znbbx_c>xV${?0Pnvs{>S8vJ}GbK)CqHDk4dP@}2HDlMZU**_X;NCqQc2Q$c}d1hkr zHGz7lu&^DNHy#E>oojPuU!&C#PJPKzCjJMUQcmKoiEnR$xY3BktjuP}7D68&9J|v0 z4;rpfxD1zP1!O7P$$*CZ5;Cq0_-%(?P^OUp#QWu^pesK0@G3>8t5AY5XhiEs{A>yxK(hlQ74ZP>)UoAfm{Z1 z7y-EJs6j zIBP!k;x5%y^$Qb@a1lHokozDzA83LIY>{=won?$vZX`AYi+wMMU(4zils5s!x%bgP zSf*nxjiO>H^T$=dvfDiow*WW#k&y$Vxq&OwgToK`YD+N}(Ju0h#RS2q={ZW?jLUB`^)K@D%@=Z_45@NFQ`{CP13B&l92={Ox*v1H_g0c&;yl zLVnY7NUjvL?pnnm4b;PdZP3&0BxMN=(vzW{^pHzSU)`z5CSers!wA_B!oZjxB0f2@ z3p$7T>6zMNWm;j#5gR1Qqq;*%voS`_v-#gjyglG7iOBX$`-fUD6j@2jS~qSGs+rkI z?-DU7Xu2iR6;9-SUsLELAx#ysJPZ?dVHm48gTzPj*z?5$7aAKN!cPL;D9xvrOO5q8 znhz_B^X()#NX}QPkT++&b(&1|?{;7bzdUe2-#;*lP?2z&iLJ?2@MkJK*(8^`dk;YI z*NKbDf~v@pgah37J}Ih{lUKc5vzRUWFkS_rKzbEECuvqv;GL0om&OtFZ<6R8;R{RQ zn1kloRLdYGg(+dtioYi`$B%wNX9$TxfIuINb+ER>_1kRm?WFz;kWGiy@CnqvA3QsZ zo`6Am#^B)3I=|UogdO)m4H>J$&kd~`0v5P*d<9zUwOLY08a!EoH*veKI>z{!TGb;) z|KM6;9gplCIjZgAHL$8v2lca-Z( zN%}zHNc~V@F4`m7g?$+-GGFN=7nARnDmB#dcSVhDo^L!KHA@U{3D$g%SAJymyDKkU z)mJr4Y@f+9xuy3R9?L)HFCQgb3g=}O_gX)c#quz_owqyHNccdg>{Yg4qp;g5HeSu| z=Y@hiY0i1%V3ESs_RNB`W7Ycg6X}+8TJ|WyXfbOVm;O{)Td`FNWJc7!k0Eho#sfvK zp_z~N0F|QNEE>zN|MwgZbXB0g_b@`pa!uW9pI0wUBDX}FR5zPJx$CK9NK-4QEYiwF z9+ECLXYG`o{GTdGZEK%!sf$NPBWic=SbUdQAK9wbeQCM1SYZIHey~-@!~)q+QZX=% z)G0!PfqZ}ipXgq1#2gJpf;Bhp9A-+S3FYL*Ep#Z1(4qA`yyUzTktZ4VLv0VMiDTM^ zT%{_CO)(>SkU1on=;Z)FjeBI%2qb`#o`TFL1$tUW&vEfDor2(lK^NONuw3@dhDFR! zg8~E_);qxmSIRO03EK^9B@+{tpnf-PO(l0k zr}Am15zkCSn74bD*Y3HIwYb_-(XFmF!u^Un%u=BZ0dlUf1BUJr4?1^dYDE6TsW}@< zey_S(S|jYT_|8A7zlZD1)_W@+uRF7nnCod!3ggMgJb_1!6{ zwofK21mzhtak>2z+*ZV({r)U?K~Y$tOc*w|vgya75=LA&Fz*N}^2nH}v#%JG3e z!%P-4UXP4~oYT)T&46iu1|BZIBbar!(CvQ~1tuy|#`UAcJ@rzlCg5b&^GE7p4?EC%!&)2378|+SjT> zp%%K>9=EDUO7PJff+HE&s+L#bAQxCylt4%@3yp}dR&e_cI;S*z1iEFHT)fO-s}81c~kvqC2ZIOs7*{sK!K zTP?&SGj@mnUxscNgA6L{hcCDq=gKv%3M`J!Zc<--M4x9Zs%)+6~xBycdn|oFmn8RGVfSTh=&hhi^Rlb`A21$MU%?CqjB|1Kh z4;qm2lIKYp7o|0q3m~IiVF$CCVR>@m9h*yHFth@Os_T1iB8_8Bt`J^}_O}xH|F9HA(3udE1oWe_6%Mg&|tKo?} zV*CBIL|{Y1sdRuEm!(Lh#b?TI9D$Yi@#ISB8D#z?p;c zg%Ec3!bU8)JGLkm8}W1AlDRlf+WsPQ2JdEy_~Fm%sIh^EJI+nO+qHm2sg$O*AZSt! z@qw8W^ruHHMgTx8=%5>qx<_9!P2a5;8PkrLN|-*uSc#ZP5Utguldwcxn%9>sNLXn_ z2A8h1ebvZXAj{LAW_j@`Rg;alenl5jCi+u?@t5QB((8p7V(&OdWTL*~aNRm7zrhHR;VslPWXyTe&)SwXpg4O7A^IZQcW`MmtppJPq9xpBMlS zM<~6R0bahVQZSc~ZP<2jWkF51*`cB*BrAuGM?Sr^~t$bCe>;HS{}J@m#0%~<+Pi*(iK-DOXPU{`)I$Q0_=0@j!T6E7tJuBY+{A?fdj>l_I_HnN3w-j z%)EAC2QaD!!!>RT1N#9jIJfc0I5=UU_$LUw94PXW1XZ6V$AGDp13BL*tk3=bUjufE zL9G}YDd27KMU6+6rq`ZXv8Lj4ubW0w%+Dk8R{5ZX824jj6(l7os;~61HNC8G=42fqwmgMBkI?FX`Mv<~B3m!V~s7Y`=iDM%M=X&Mgl+x zRu30n==|bmlcg|(QZunze`WmS^#ex8bDTfZa$)8wBGbs~;l8G#567;tHCI3`gnFUB z4b2p|SYSffQV7{Yjl`RF3yMA`>EikFHbl8I4q9Y2U>`KK8(FY(+~dHAnra+zT9AQ+GQ_otA~*7qROzu)%Gv ztN2QYSq=E6>#>iczyIFf#IC%g>vM26D1@|FCB8Au6h_fA+N@-VBni2|42mNfk*$_b zrSPe_A^=rueG@p_U-~~~tlJmJ1j-0EKOsxd-yd%7#6Z?L4lk8gXi+au-d3bAvb6mP zAEwu78OpV9ie-6i4XJ9dxe?o7+Mo{5xMT47mN_n@7@Rq`QGUxh4jn0aiM0X(t| zHdrk{Qi(=&m9D8ujb;BSleMv!qv3)7P@gMOfA16F(LnzG`JLsiXPj+)u&ROjhy}Ht zu&6Gz>Ae!}_qil-;MjC?ot;Dy7?_xPfy#)H>o1c!OPK)SNED*>G@`EJ_$dg)hEb0w zT;oRlHk4o%*-(##I~p=bHziX`wS`l>Thc%^0Xm05EXK)$s=+YqtdK9&kkJW60S(Fa z2*o_^ez+q>#a*7Kd0ukSaDKl2YQw9nCzjzIHm}FW7Re0=PlpxF(l@38*?Dg$U0)?9 zv#kJ>n5pOv*@~SGqiH297kg<{s#$>9Pag1OT4`ij`yvt?>009R@gwR3zT{|PU^PQ$ zQS|88j7AU`ffqv*d%)OcHT_AOFgPbz1PZmL^=pz6e;N%f#A%Z$pLrgFzy{?{MOl*! zIA)gRmyX~w=!y26i#jji{~PP_R=m|^F;@yoVl*`x518}Pb*DhNG4d6{o^ad_w38L3 z%E#wx(a|S0h?au`OMxUvOED!%%!u6$dFB0@wL>II5c7LcW->u1T%o+m!6u|zYd0m! z6&^5UJJpwOFUE$8C|801?7R-f$M^CHwF?6jgXe9d5#FOd4}$he%eZgKvuODD5MQMa(?2jPoRYFwKOG*w1}ALBhgTRT z1=Q+INOgG+s+K##)Z1Uo=_A)0k4AQvW~w;9y>eeKq<9=4p@!NMFy9awb7?@;cySU%C4IujS4OH)3^X=13|$M@_J!)d;iIC$s7m)b|^x zCP8;lIokV>9f(oVi~(HHKkfaZtgbq3ET=#y_faUM`g#xpdC~>{b#kx&nX5fOe`op45-X{84|w08)w}9 ziHW%#3L~)|p!}Hq(fApoLQS>~PVRzW3b_oMI8~Jj%>OS>)@08b^>j%DG;CC6#nqo4 z+U^dMDR!i#s9MAMNFWh9Y;Q?irKvo0sgTFZn~I=upc`L>wPOiAErvKsl-frP#rSmssU{pFD>@ipj_M~%3|DDT9sRgP7YJ~bep zn1kt#{Fzo!4&P@zB$8VM={mz_d$PEr zLIF2`Q}t4vv#%y?FoYyZBE`&|$*sVV4Nl{eE>{W&1(~h9y*gtJe~mhwLl5>3Os6#7 z%Kg^?dJ(|eO=Ys!^DzjnAwO#)80}zHc`^x~U76R+H_G}hq7TiFXq8b5)Ggr273+o?*WSE3bbnYjBr7 zEs7>gT1C?#z}S747|u0BEG40=^{tsi?K-0TY)z2AKD)iQdFATe#f86xb8{#_K_aUx z1b_&@8oZv*Om*b$3I7cHFG-XS3zTxbF-CT zvQ$Jt%RNq!p$Nh+>YX}o@_8N~ICRIyfqIZCZUHoMRsO!o^=#$Ia?IVgNhzQ=Y7H=# zN8m~h)FDt~E9=0Tk&;rhG|G*+>7myg+wX75Dj@e74a5*mX#x~6xi|Q_@ulKf#o`TV z&H%%<;RUdg~yRUgoy`{rfw97fon4`7N!#@~4iO zk^bUHVu4pphMwo>4)0-#RVyqf59fUT$=Gb@+{`S;F9g&E)IcCC@~MG>acS;{1+#b6 zS;10!M>%C7T_aNWX+os;U)1@RLCnqDaf@1aJ6e>Xa>A+R} zY_Z=IS1eo2S;W|2`xS~Wu~Kg{*b(qwDRd`ic^&J{AK8-aqOQ_|6`h7g9ZC8qw{ggh zh#0ZBiU?z0H(NM32#x^dIv7_=!8BAcU!Kb6lhz+$jw}rxqadk(8c#VS(|y;{-an(L zU7d4o_>d*ccdNm3>>8Td5p=^U?1z=V-Jxw3Romb(m4tJ4JwqPo+2EmoSM}#aIwgN=9!wM^Mg~(ivYmihU z^6+ca@BBCOt+?-dLeX~W_(%<6GLo7;Ub~jGk74#M{jWCXJ}0wS1x{YL)>>2}$d$i=%4O-iQK5L6w{pOb3Q1L3E!a5$q0F_fm{)f8`yYkCugP$?{(0h& zn*-IAmSk?H5p_X?S9RNDrHn+&QKpBjy%2(DJd$TJK}oE|4h_FEzH(BOJaGPM)foG~ z;J@m59GE(0r@6cl+jXEb6>msujoBWnm~tn;Hw?;XmNIHJ2sFeHuJ}dLQ0Oc+REXsU zgqKHfxORe+@Axt&;t`W?ufVa*rO#izuf0;w`!Sjk|0y zhqcG0MjK$brpZyuY|jmJ)oNL9NBmF$?h!JtQ^iq*a!YT0!!;p>v~d6yW9d)&P&@O}iwM@}Ircb;S;0>^W@ z>Y12LoDUCa`u30=2)|0va|Olu_t5`3$7Euo3X!9*Op4ZUnNT~x*(HMp7YH6BhG@he zmdu!vm9B3gv(5h6&&y{1#Iu%GS}Rii6B~w)0Tjnp@yY_IsL8mR{oz=rq>^+o>P(f?DH+_Y2iiYt z4?wOg_e^6lk^?z=AO{t6^xX=zJZ;b z6^GfRMexGd*M{C}387`ooe1!J;CT7kW883~%Fm)Pv1=isvH-y2vF`Sd1tnX7tE=U7 zo?+V6(sFq&tAE+RPr4zw-Z}~|c3PA>fb=>yCUMnt~e_)*DX@E4U z#fyr`jAIK?glftSf#!10|21KFQeI&`&}DKOui=M=S9*&gS>UH4ErT% z2pnKQa^HAwg1^X{X;!f&2S8hLv8E#*YVyWK;4-V%!S*)|0ns|g@JvukLs#!`gFRgm z*WysrmuIAmXjlOaJQhbI_@ZxanF&i@$M2j-3r92*)r;T@+krG_d$jdJ1ljaOHpE*s zKJV;N40!I@aAh|%2^@?11dA$Ou8Ln+7`-o23Q~=dFu(ED102VB(i=LGFM1f5X9(RX zek9K;%8}=OJew-d3F@INV_1l&v;wy79VE>e+_nP3VS!{W66jePm3;q66OoZ`F`~#K z=uW}fVzt)64qW;&NH>si|0%*;n;oM?@1Zqi4#F8S5Iuvv6SS=%bjuA}Rbuidaa}*5 zeleVa&(7`h6=}Hm^<*H~`Z*6Lfo27j?0D&y%sIvJBF=p*`p~2Gi56 z=m-Ijx#<@igo;Vz);jg^H`3Q!?3F!ffKx`mb66FXb-_2+- zjPDnurCS{!?h5Hip}FEIMBZ6#|DehBcD#VLcTz>y{K1hh2?purwVvMSE}+-f_m_*a zkmEIdz;>zLb7zVO_ED3o*m-$(#8sNN@10Xqv1MW?gwiomz^XSuQJ4D$my`cPH#QxB)O@xX=V;aezqc zE&MBAi_iD_7af_WY@649tFKZvmTOrED)(SV4}DD)#w)n96Pv^`c{TOJ0A#B{T+kd_S*ib|zI{v0Q-Ia~Zsa+C-ypIauN zyBT5`YXX8OrRG=iiq3^Bp*?EKu(iMvvj7ZB3p{g7E_rf&i2$*i9~%F51AD>}YM7-L z4}vc7P3rn=-v&e*O92-x{oNiudk_K^laAchCmp>s2q zXYD%q&n>g%=99~$veeP-*(_0*3LpKxd9I5As_nzXUF{+*Bs!rcBwk=Re8rJu^JzaB zP9nxvzJ(x(k0%j26Y{!LP_2~G1@zE+$Tm;r-bY%|FS4mq+z)OalO_pup=j#DZi|Uk zI-zw=iZ4@7Ap5QoqM+3%Eo2?(fHQ@yQ*M&MH3>iC>d$P_X z_R6O}JqKcw7~^OhnH_>EyP1$Z$I*K>ZS>bZzr?(=s2QJk{4FQld+C<*=I0>Wo1_>m z!HdxzXqZQLU@13Mn}qaL_FmEc$|Nqw=UVaI0_6MN3?bm3x5dN_q_MUsn_L(55cOhO zY;wOY?VE$ecI$2q_o6WN4ih{d2i-FidrRmDr4pFR!ZLP$XWG4P^;?cI2C z-NoD>F#(kbgIB?UzPhX}y2s5#-^gi7kzLi_AJ|pkv|MQPv0|K{Ascof7VY=M83K6v zoqaOpHO1FISiVwrI51BP0l>~P37X_m&uJtf&oXlzu%M?R#J~o?5MZzU)R8v99heBP z-IR697@&c=eeIMoNB;mD^xE->0Gf$qoC^V!Z=0|hZm1`NK0!(l_%NYUXdoE9-v~Rl zjf7~8P#_*j!Vo8kH*zyU{ z9DVdoQ+-g2(MQtFj&|sTZ6`(5Xz^A>fnjGM%4=~Nv}$O6Y)0WUjzn|tC(O0I)nKjW z5-RNf=K{=Y?~?%kKLEf1pVc|jQ#v}AFhn&03Ub#}`2P0lJ`}-C96W^=Q+%hB7$dYn_xKd8HTe_H9WLu*TxfI9Df1K-Yni-1ow|Xa|^XZ^%nIUnj zk`1mTf)`*f(~M!?-i+w+Qe0aI@rHTy=MBeO2Ci3z@9oW7e(gM;T&|=IO+-l~C`-nd z{R^r3OfDVIMF`4s(LcH}EqKhsd2$s$;quP)E62@saE${3(@+rIRycSoP==Iay~I*oX#|$9YV>HnQ|Ie(i40K@m`Yw=od{`6 z6149p59iY^jyTN_;loiO;>GP&3h!F;bP3egCs_otP8eALOE%Fv3nXUO%-4gZYm}>( zy@9|vVtZ4RK)uI61WnNUJI|?NKbT#s+|d%^`2R-XHvnS%7eBC*7B>h|b1c7L_menTG(aCrmu^zj(LWW2gn{6X}CY_ma9q%jtUIYE9uCiZn zfJ9hbsXN@f?WlK<9d6>XkZw(`w+7r~{DCQF-2^;D1L=YxrKgM&m+lB#h_Qpqk+qSi+6$_#O*Jm{Pragy#zXt~21a?|;3&Si}2-EB{;HW?Pjq_a&#Odh!= zr0CaLZb)g)il8jmLu5=U0ysq}6T0Z!1g+ToY1HVUjy^FgnPc{9GbJG_XNor!qwAA! zl@|xB3q$%#54Bo#TAX4O#@2|cyp>%uj7qdNM%aaJk19}XyM>v}gzJO%U%k$tc&R?H~f(eZuVT8S>zI_3cE z+d-%t@6E0SCUB13>V%dZKUa*QiqBvoRMyx_E%v@L9_Tc@x9SIoepCseWE7k)K*jZpYvZ? zyH}%3WCm^lnk8O-##NC&9|zsp3{6$aoSP2F2K(=~6}lCh8t6}5;-E)&4t`?ih*8P)EjgZoH{aNqPs+<#ZiIP$Y%VF z5bG-dECo9Gr^}X%W!CI|xQ(L7ZKbuM2GPiGbrgk+zJ_W41~8y}!dN}5UW`aJN=XW1 z#?a4(q<>R}oNFPbyN(S9{E+KSn>l(^<=PRz^vMC4ahbkDA~Nzr17KQiG7)V~6`oMb z2yT%Kj2-RuFT?Q--sbysn;8EFa|S}trmDu6vwSB`51(k+B1p9W3`bMXu*eR-(z1#(9e2XZR8ra7=r4-YLRA zk$@AhaXFnH@rz6^s4SK(Rh3JNfCnNl1Q;q?FY<#qb*t)sIQZNBzozxh1bX;i9Whwm z2n-VUHxS@biYSN1H)!^{`YK&5-F^qjzAu*#6U~&fbA7Xc>6!>H%>0N7$@6^ytmx%5 zdKqbf6lxe=m%OAc`7;DM#7S7xpyGl05boM^G^@`P2Tr+`LA`(v8rbDu1QA(l?*vp* z6-JiSYRx&~@5pr`Q*-NGGv!p|(XN2Ep+bPcmyF>i;R?5!MN7b!fVGaxkYnM=ucZTU z&5zM@N%~>jHyk=HiqT(M1*xAr?T->!5oV^Wg-Mp+{tZJ$WK@ z6r&|l;aVNydOSoC7dt2-^-3ouZLLhByrA@8 z63QrdWONs~kkki|-2LG%KuU;k)PTDm2wvxCsrrG6p9k7(pdENIs)Q!sPDa8;B zt_`LLrnatk!%yOm5!xV(YR_1ps8*~M`Y%s``?dD}VIqHy#4 z1XuW+*k9{F^oy+mzzy50>aW9~-;Sa`_*s>!qYM1$b>(aTf9srm9-;*I))+?cNKhe>poVEET5J;Q+~{ z4-H!Qlb$UPs?%V|V!m{)0{__xmFSumz$y#pGr5tAL<&~{qM`_?cYn(VJ_KfT)G^zA zBo$@-!kYKl`_Q~3tQ4jStgXL)(tTGl71wa(z0)vp*$|8XsY^C{hUZXh4t10?aTV!p z3S3uaFyQ`oH+WM*jL?Nk(rd}fvP|2tGAUVxsv{qPJF7A=H>2*XVh!#hxG^{!GjYOYeAangEEvZe6t*)!>Y@y0f!D4gKeOW8J&+-~Kik?zZOHcn z2DuDG#J*0EOT2I<1dJXs@pFft8x3WRNN~VNfi~NqxJ4Z>4+)v8Khqr|$?^di1yQ`&wTg9z?he+Z z01x}C*GINknIBXLt23v$>m%5LByo-PdieUUFwAvSbEigecFL}g>-zwU=Dyr4t8@7+ z0&wcN>ecaZIiz~7%h+5;Tjz|^xbTJdhodF{bFPo`(NDdfhK5n)R-t^MoU)wh!g5pS z6{)%$_|HV1{JgZgl$u+7g6#U#uDkU?m%NdVBxE~MDah2*IHPqg11pA!B-?+B?P>l9 zF8R@?{B3_m>HG1htEHtQe>ERXVUxSwn2o1k(bD~0-EGH1C2!yufPq;yMkmkUW&wZP z*&R=yA1%tKY7^J8rqs8oMLtRf^OK+G_oeBY^Egdxw->w-Z{F}V_R7fsH7&$$)73FB zR3;7}m}h0I6k$!9sMaX|HL?B4;Tb?jQBQqy)S(;P&19FmN|7^^m-1}TFNmG1Q-x=j z$MsSgf%$ikcz;mM0`udzshEW@>(+(JS5SbuafTQaoIc&nLLND26PT%wvpn`7<+d=H zU^i28Gh_!&ub`3ER;Pa0Ky9vAl-^P5%^ zmRg{{S&UeQy}M091f^>Lh99L6wZWt*@%qBKqYV4Pe5ddT zUh|hIPZpDT7&7uTZy=v^hSe{y(-LV{7!x7K@iQ6RE`r8vV&Z(N=rWdD@(P6J;=FKg zEvNXCSz?^t(qKqN18pOvu7{8;+#)#KjR~!GM~(zy++h&KVe_|BYOE?t7mV=; z1k=GivmkC4t!c7@2(wq;+_nx-U*zTE;kfZ+U za5N;_YPXu1@(}OUw%BvheQKONau@BkI{n5mYSKaUrg^ruA(KiOoyO1(UfcVSF_cWL zRyEFx9DKHMsZN5D;7U{|rt@(mP4_v^Yas9YrkbKsslGA=32==G+VD*>&^Dv4sHD9+ z$E9qhPX%~>l@z`LS=WM94~PK?T=}lJ(Dk{3+lTM6^)y<2%SY;s9Z%FQV;?zj_8Wsy zDrwVzzSDJ&DsnAsqrn^2y#jDn@qo6QF1sxvu~nh z8HX|rMIfZ9+^8=OI97ZS@dNq0A>sY5FB!GQ`fwPGM%3+zmf?ZS&$Q4`)*c!bW=YYs zhbDu?Q<^9{rBeMV9g|G~bf}~dG^INKCN|xNv_YQ4U`3x6pENs2mMBa^2#eUxs+&{K zH65J5bC-zj_iYd0qY5LIQ4orJRN^TH4>m7|JYl8Ci*bcLfuk{M>TKbJsk9{C2QAzC zHm3-0#9TO;&aiPMRVe-PxvB$5Uv1f_66ib&sEN-OXW%molQ8vaI}At);l%%aN{~B_ zDsP|de=(sZQ9otHxEHzjUA}Vd<`t6NT4@AXsN(5+N!E>K(V6>y_=TYy^~o6xz=(1P z*kjf$@%(}r(ba~MPEDDzHhqMH;_Us| zpr6^IW=b&4Bx&p8ZXKe*?OcP5frfnB3WWvzujyWzSP=9=ghc6%!Dp&*Pp zdQ_=Kb-^&ytrF~syw4_nC*L)N#v?Wg(%$dph_R$}|CItb5MZxamf^nHaPV~2=R z7EHaQ>NE5R*li=PTZDYFYkJa8lLc5bK+dFE5PpZE_;*_HPW4U(RNe;jc)hsAg4{#@ zWIKT)l6>o7dOiS~YeL@4bnbOFP<@}41DWUDDkUHrZ18i9wWLEumP1_|aN8?-eLAzy~NGk{lsX0J2#h!)3Rd zuO7LBJS6=SWeUo_$LQV%yLz&7Efl9m=?0O@SLE+fneUWY zxNW&d{lIbofY&zlZv+z_MdwHHsc^#hE#DdNBZvZmI#VGYEE6_dpvDGyNX#`q!e)eQlqh?H|dl9?+<~q0PMNMUf~+*ri+JrbBQ35rEB>f zZoa@YvvHdo|9Xw7yGfUt2K(+J0tsaH_B>n5&Vo6u{|DnzssynC56%tR+O&qJ5HF&m zYOZX_iMk=nG~@S-3$*8h!) zu^6|NLJ!1Y?W|KDj^$@KMZtKQk-iH_WUzwQYmy0SNudqA&uadu{d~d0IL)8OvP7jv zX_;Vt=B@CFW^_zd*uadtZ`2WD6o)B!VO~ZSIXqWOIRR!>8K70GLxaki+GPxi(&msL zm3MiMW8X~Q$lJ5@ua-GCeH1?Cy{R%0W9RKGRukJRI<1saU%4MrM$?kqxSh4!#VRDO zWm7A+R79gCTRS~Cn0rFLDJ0HX^STY0NN-eom?b-5xob1SSz-b zCCYymYxzWTJVAc(fY^}8`tWY6@q|S6E^k9uu{)%~aa+oi3>!asmg@~sk^oy5Y}-ST z^7g@{>WYk-d;38k38OL6>x#65(7mNJ3Ziu5QtyGcyrGFmwqCN;*-Kw+2mba6(d zAvsi|f|!{*-c{Ke8V)-9jettk*r74BO|!FBH4)-7_e{ao&YAkSPfH?CgS7AVZr{c< z%=}(I_-OM|akC&k=x3fQmrejSr!0rPEc4qZ z`&QiyE-oCY<*_s7Wx(jk*EI*}@dUO;dM&_s#E8wZH{yTXSbeb>WRyvP9}N|v*Y^$! z6bB0>C}oJy?PnX>hK$nxw`U@hO4SUmtdzfPxMgVpGT2|oEwSM}4xOv=Hkt)->ebiL zF>fw#*W98oGVwR&buYoY5ebT??hz7z-d(zwFnW=1R*Y#0PWWT~#bxZ#3M;Drz@UqY z`+yr)DBgP-*}oG``(c!X54CPzfInvMGfZ+7N5gQ?<6(^M|5OmWotxs^*4c&pE!Lem zoRHo_UXydb1N{{5HCx+Ns79eJqGRjX$H}Av1%f;txfh!e)XvjyUN}bJ@{URQOrgpE^l%BtWJ0s21{4iBd$Jf3BKM++<#jlqv1Vl2C!YU3&XOi@t>#o}Lk}AFB?-!>M zXKmzd|LS92DpoPw#_Jp>NDgH7Rp{W zXbsgR*@@n%O?hw`IG@RnH2#}bi^p%6O?$OOhzei-`1!G3y$z%0=f5y<$%|~3jt6Gb zSqE{Fq3S1|h1+gwN4D>U?jU-$?&KJ>h(Kyg1+j{?i49HlTk}2QI;sgbQVW>4mVRj8SZZt$Wa#O8{unY9|oT1DKBRjm?66X^U;7*9RrV{Tg;ds*po@ zCp&cf3$s)e?V=|Ew(L9_f#`g?ejh6h-^Z8;O-0l$gc@U=YTS>{CO7tI3v1rikt6D1 zHrDi~#dF5_?yd{oS(`kqjdCn&CQp{~m=Y-E3(-a%f+Dadyqk;)m9D_sFiL5}x><=8 zf<{+QUYbq=ORBO*aqqOuy~pq2_Tp!Vdc1meeXaAPEGUg+Sd=M3DF*1&f%bOS zWXH;xNt>IbnihKnm}Mk?d2P-MupU_yix!(yLnb^45S?iGoz^!A1h}`QrwfajQI=XQ zx(Ph`0zGvL%%eCXCL+6Am2ME}e4#Z_z6aSN7nqnDU^L(%W)!H2?Lr$099m$!PHUDq zig#PlR<%}zJEUONnJm@an!&Mvbs9?dJUs*UqBR+^iPj=GCoNFy>4MJxEeDVlH18it znmN6$zsEmZYh4K!{~5oD&LkJ4*~Gg?8}Pq)I6QH^|lWD9C$J| ztb(bOBq>P%Q+&rHp(Udu2kQS< zMNlDb3h`4U+zcTo?u9=TG>-&}tg&K#3dikJxCa4RLLl3x#5lb|sBE!tMP=xn1k7XD zsyEXM-qh8etf`qkJEB4&SOkb_=^P`PGS(ZjOFLrkCz za`rl#}4>WWviF) zBw@ME>LGpQL=mCer(;z<;ycyk)iShXa0mCFBw^5Q438-TIHUbA*{%=a^~Bs>?Ckl- zF0{9C5EJ#`pakz#MOOBM^L^ro9MSpjJt6_FPo?WPu{ux=3k zzE_@hj^)riw`Em_$ek2hcNQJw=n^e5UkvhFPr+~|Rx!*ij@K4XbD@0?5BODV9bP@x z(QJX&?*qQ!92S%}=(U!ohF5|Vym^IBkd8CAWS^+>-mxo+kOSm{V`8`P37^@=Q!@Mx zd?n3v9%Nn>MMZ;nUj0+0p@y7=1hnZsjY3E-xrhVW+oGCMg@1WAw+HWPK7Pa5iZYOy zItSc?JIGfQzh!v>BP4AmI;tZ7QaU||d(Lz%)w3LDzqtBZ^JO|PbMWoDUhgV+eS5xsAR-ZfY9;>lXXQ7Ljv z(n31tA9?s@@&P`&F?*@v{Nu-hU+`W?_jOF3(6McHg0N1GI-dX8`O>W=ra5(G;T>cu zVSs`>ssy!&YzLirB)x2&Z6PHh2_>`}@^`nRy9xPCtHpEF?njC0O^t!Ix4eRopfKIQ z_BBEn3%nPPBuGb6;xY*SrI#uHOPlPWkeQ8B2k^c3D~cYOFGb9*=yqIbE6^zioYkE< z6icA2IfL)*`>}Z3Y3e&i>;Mb~hLqm8TiX^pZX_f-rO`VX)IciUoA5fBTtRIr=hr)% zQba~IP1p1~fb&zVG}|V6Dbr z?eWVXCJi#yBYSntV~G66tZCGFfaJeC+(8huBZ+D_7&4e)$HEU!M#dE*Z^%fX2aStj z>G;wGe*Jb8R`~}uILMimAPObIEPlEBSzz}kwU`uRos5lS0SN6e z{uC)u$cA^PmX$l>W6fGR!8wHGpQ#cT2Nn2#60e^p1Nq17kbK!eebq66S|}pkQHTn; zAha)s=6kx*KF&!|F(uB7DeG`nr$;)tYw`2%d^#cyWSPVe)mbU>fuGTm{vcRvULEMRkDB!vPqvt~Vvq~aM>9H1Et zOi_7Sx&WJHu1W`4(M zQg`1zC&6d?_|~1q`~&W)@)3V7kSMU$V`|_nGo)*KDOKR%5SkRH8M1eFa4*lcQM+MKjO~*~MO1JxhkQNV^ zid9;Txl5t(%Ij1Xu${l~Q;g8OorAOOH6i3;oto0jOF&>&x>ISi=PC21rd zEOC#vjG!Tbk?E{Hq%2P^8)fjOG^ZskM#+{ve5Q>1e$z2 z?=u{wkqpMWE!?50z38oPB26EF^j9<~rmtpJ?y@;Oa*BnRE7sY9^-^v1J+mcZdwPW! zgc)=zlPi2RJxG2pyZPFowEd0=tZXt_69~!nOu0e_{Ak7$S(4ruj!m-tFvT1MAt<~vS4bT;fmJJ z2}0QbK5a0mk2nt1AB)kN{Z*`K z195P*uKRO7an z-suB-Lo~NVUM{$-fOv7`8gb!eGb+N8XT0lqZc=V0Y2SxJxvQ3(^f!mpHB)ue^#-I_ z<+M2VNPQSpcv@tkMkyEkfHD%IUSV+b%0woYBdKj;{$ zFe(;+ZAROxu&EAs%mq7Tc}>{j ziMRDq<)W7E-(ooRTjU5bTyo4}v@6#d_&TlYSLrnU5GrxObsELTSE{3F?{7s+X7{b^ zs|p&D+5-EEqxENnl3qg4A}Q_B@RAaOaj(0%5eu!AKt$>_J36f^FQ?b5;Q0Up_W+#C zFmrH?+L3I1SJmFe4H>^7Y+a2@rdq|npErJj+^oRG)o^U_LRgiMZg$uH&v=pDXJaSK z1X`c|Hb|BZng*t&qi1P7v)=Ysz^vJFKH8@Sq6sj$Fhx3Ur*_C9RF4nkQ~==RRa_w& z^Xv3@iDPfj+~i4Ys(YY8KZ4KU4m@86Af#iw>}#~U+f@y>b~4A>bqu7K?15vR$=)y-fHoq#LBWFNvqlTw>1R zuC8+o6+@>e$X!<>_E~{sZ4g<$uf$WHeXoGCP*iahsA!Byq-iSK!hCa@Yqft?aU0%?gxo}K@S|`bg>9$`f zH8Pju)7tG)c=LCOE~Kc7#8Aj-bOFBXiTtPNQv+&}HUMzNI3mpp0H$fB^UuF|J0sb} zu&%4vgO&&e8(qMEHCk(ixB{`hzv3n9k=sdtak~`389w`BqqmO?5Yn`$n^Z`U+xgqx zB@>It!N&vHmCJglL1l`e2CIW?Aim;P8^4io6VwpyaweJ2)RC>5!=JJBhiutg7GlIr zyz;lLvIqeeUUU14xa(2l!5q!kaY15P#!ClLBoB&7Z5J_CYVXl#zm8Z8i&0<8`DQ-3(ojW`jxqUn>0KJD1T zlfqiKq$s0?SZJHn=R@VvTiDCnU1-? z`jD$FLSmn$|KUo7ciT~=y8n$?B(I1_Mjv!9IzvF?&s2+4+15I4Plo2Sz~cs?3EYCh z?PE`-2N4A=k$;Pkk6~oU%+5s$Nj;?_#J({ zh=cDA-$86&XHyIj9QZe=ku;N!kTew-OBUfb8*&L1l20PK6gwHkR}?C#dJv)XIjstR zi)Q|dT{e(ddP=oG1F*L>t-uDV6I(8m-7!T&Vbb+Ak9C{HsWa19eI3?U6F33vbpv;V z)}X@{SHYtc3?u`Bfi`$}#ceH|K}0QVk1&^WzrTc+%k2>K^wqoDEw$chHC0i@fVXU)GKlN;z0k$j%{AJ+cdC@ZiHyRkwda( znWV8r3K>5;k)%O#RzG`Qf!{}B@@w_ye4 zWJ^iyX{1=Uj^z&xI&#u?A2Er#qLBT%C+`UPE~Dp%xCX7(NNhpMTljoqLGIBjYiJ_^ zhN=3pZv4hkpcm>)SP^VXS+?I%4|0R}_oU)|owYJVIb)Z;U2f_#F1_tMUKJ_UtHNp2}=pCDGRM*+i^fb@g8q@l&RQTKap!%BuFna8?8a z$j+2^yrH)ZzRIT=>v8{h@9+N^+zxIUiSVZT`SQ}xY9XF3{Vw;{cC8`dO?Vn%0H!OP zhuupKCIPe_4U_!U%Ia}`);3Z8ckSNUPOf8KhhXehTDbsYqOTN`)znHsD{LzXJ;=+&w5$P4vd>1>C#!<6OBD)o*mAt`s~~O=r>Js+frLd!Mi5RJ zFPg8kiPmZzN+_`kOdQ1in~wD(`DAqq+@Hhoe7cz2F#UMnZWvCXuhsaai#EeC3XjfE z37jYYh5%ah0*q|fulEQA_dmgGmv4$p#y#QaD9HGBJA*Sk)}$ zy77+Me)wm%2)4hdt~^!PA~U@0u{OmS*9&p|=?aH}AQ-9o@F%m5LgfKF7t_{I)B}@P zsCi32&`Q}1b6JDlOA|)tZN~10a}_+h{o)W!u|kJ4fn@MMx&U_-pe26 zQKuTR5iBRn0#wPBLJN1OTUL2V=}lZ?v4w?P`eh-jVSD$rNF8vdD${0duKKaxMokPa zN6@i%QbK%R_4G-X--wMD;c=xGpIva)eZL3OqbHeAFT=e<(*HqDWD4X9B}~q!#rfvJ za(-|k1itWO)o%T+st1aqkSd{QZP*HYc_Su&e1=q#mxFOquG15YXGNC z9(2j9x2u}{E=?WyKY*P7VHqaHBY*Si3f2PxvK}1UqZiP(7QX1Yvie)>e)49p=ke}C zW}T9vo52hHl5gH#bFU6%4lfjV80MS{-6gP#jTE%QStkx^zYA^G*%IduqtB95V6N^NgjnG3qWfhr zxy*mrWNNKc7jDm$MCi>Hq|p(a73s=3(wF}Xe2N^r1y)4yal)cw#WG%4&v`Gy1f*1| zV<)hVWNJ=s*~1#$Je%SS!5$j2)2mgy>QP?hXty%Lz`u`f=V7#or{JwqDm|uU4I&F` zdrm?L@|$s=p7b&Jc+6+=!Pw_~DXH3=jppF7xoFN9*j*r?R1%&~*}B3oW8sQa&qo#q zjh9_;$`avR4S}BZuNqx_>^Gd%qFGkD586H4%yjv1x23o(*6n4jCBxds&X*d;K=Y@w zF^QAM!2NiapFGSli#Yw$=E(f#;i_t0J^%T#!#os_Sx|QOAlt)T6N7b%v!0ZUwVjPt zl2Hx45uO|FaI}hpNLbpOjv(6x?4Mc4s)Km@m&S#fs1~+u3GXhb7e(rh1mfZ9(QyQ2 z?x4w$%}sh?n=(IPfmqljc>rBD>yE9*)0t7Al-Be)>fX2*IsXt0nRU2fM zhM`oau7rIn_C~6(=sP5=a?qyC>-xQ@C1>_9AB7)F@GmRaJD1<+DEzL;Fa#a>Bm*&- zPoH9Jb}V z*4<7X>PHDCn7#!1o4i@1RL{vM-+b#jN3Q4Pl;^uBC=57^EJYD-rEGhpFeoN=)pbUQTB3(uAul>*OK5wFxHsG(H^F1+;*EIV;9`^dPiN8zc`6 zczW0>|8#%pkY#9)x0fz=tR;-L@0~R^4PZ_2@@7&FRzdE<`nuw2So10Hfq(z&E6t3i zG%j%{H|p|4s+YKAK?^0g#m(n@=W_hj7I zCtC5%jFKJ*2mSzz@6?dZzB(8)1BZ6u5gjkBrXAR`<6$xP4H+M#e7g<^gtI-)H+|Fb z#4b>D_x2U)Ij@Fs(5`o{=2Q$93jq0Yfm~M*{@OQa~D*l?KANy24K6hk8tXIkD z8dvLwf@F|5^Mn_j7QEN-)sg75D9QgHzS|Vnp$|p!=_n%Bm}~{f1|BcPY9( z0VD*`2|rB2Y{MC-44r2!P##RQ)3QBjI7Gc@c`SR}nWKNgBo}aR>uDSgq<0$@ zJ)8;VtN#DpG!d)Hmo)f^yoCrDZ+P@c0WXESiS*k`tbD@VC54Iny}&E-(d{EdRZ^=S z%<29Dl*mqEg{&ZG{qG?VT?dFiER2(%{2Rior}r%-?hY(cEmQ6JzJIHHbPJ%H5v{<{ zbLd>O@c5^Ohb{X|7je6jE>M+os@Wes+w~-(jGzZ~MG8+wWxkCM|G&wNvG8vd!qPYz z12jLLUul1)y!Oa)Pf|M<2+JQ%qhZ=7*Fg0y@AVk+-_LG6Nu3QyfcSe*l!{XxA7!$X6=d}SRk4^JgMG(gMGwtFI+ zlVxUDV-@wit<$dkVAj#2KEzcLTKvKr-*w8mapvrxx>692-S);iHVaX;^4AxCIC;M& zYX-Pjk>TkLArnq3X|Ya;LTslnz`=o+|L=Y&2-EJXL&PUH2L2OU$V)IW0%?X;dLNwj z(T&BCWp1<^UI_Opuu~$=P^lMG56n1 zWS34Ii~*=8disN{%Sn{VMEQXBgCvuI9MU@WdMPUyY)$Ui5OG8r8Gqqy zMVjtgmCuYd&~Pfr7W!KyCS0ZRcc^4TS0f`Pp|(l4yFm+x9}F;f2vH+r%GF1`@$^m ztdZ+nX>vO|=+5xompXRFvu%CXwRIYbR@XitL>+L_DYz~+d#(15?yhl(|)19X- zC2B|Mdhi~pZB>@7+?5a26@>Osc%Nd)5l$ z2JpfKjXpalE$3rUG@HkFKy7O=P8;Vi`Q!z|{Cs1wt10WiwEmX$_wl3e5zl?YKC;~0 z7bH4HMDVXKF4yn8LLB|Pg^_tUF;K&-Ieiv}D}F&9@p?9^+m4^>TuHj|m~S9fNrisX z#I1`htwK=M?gh6v=47St1=@m5bfB1)&HRayz@FIdl-9`(&8PT!@xtkk^Cpu%)%hZm z<#xn+_JA-tr=}vDAW#Pq@p3~xh3u04@02H(AR}^Q$mPwryyd&xfZoHA;bp#vY%XsX7yVP` z>gR$hNz@hx*dcS)-T*m&d_y9i_2WrtcfKL#q2rVa{Uv_><(!p` zdm%I3R5Fw}jTRI;un?gB1AWJY9{MGspg_idV)wY{kYqn& zJ-Mj&b?;Y*`tKMye8t?;4k~ZbKkqT1SrveS)VFQ z;}8t zG0mDZ6x3Sljt1FDXlVV8ZI%E1!wP9$$jS}o6~xecD6`SC;5R+3Pjo01hp<`8{a>|l zU=y1KJdE9DKj7U0E|3PuL0w{G!fzTEX6>3B(VdNtGd}2=Bb&hddC)4Ld5`4ikfsU_76F zD4DE85}D6*s*f-mW5(#y*1(NI)p(ciFRqw-Q8yUR0hQqg*;{A@fB`c5p3Bzp(TEJgMXhzQu-uZ zZG})X42I&rX?eN(SwA}jwf@F4eF~3;Azua=&%JL!g$i@=saVwm7e2?#bW9ey*lVWgXczme}iwF7${LECWU{zxMq-8q}eUqeG55AEtZ)qE8HIis>D;$(P z<-ZDJf(Z!t&R)UOLAg)+29ws6OYrGn@p9ytGu2E^KrNz_KdJ8*2RZQq8hD$hRP7Xc zxUkI!C#p3W6b{K!C+YfasEQIq>V>I^*G%vA_d#yaj8yDlqbg{`uIdF@#p20Uq3SJp zVRP?>t)xm$0drU}C)nsNfNUxUgy%ElvOjyLX`8zxx!P{&WOnMvU8u+%!?v=#t+=n3 zQD0gpv09vGr6Vwj_SzW{n+9#n!sB2AqRL5%DQ)Pe)pJK1nb zz{0pL8s8OZ|5npb4q~{vR;M3O(X~*apn-w}Bu{NxHy!4tx*(?2N9O3q3e+Z&$5i9; z>-f18MGW&LY~{&bwy^2tY_nCYc@bRjZPHNiE3o1xS9eBC8HONmaJb-H;jORID^BzY zH1g}^yJ_cSzmGZBIBG%hyu?XPCwP6o#g()j{!gBQ${_m&uMgHzw6K4jh6BFU*9EJ_ zUV-LN>$*!^P6Sq0oP$?n!eMT{oIs}I+ zn>ZyVz#)|IGE_lI?7AzvEycj#wV~A&a3Ka%y%}F=XwBB{yayB7Uc(4#14-=Y*Gd8( zC=BR+opA>Ginh1E(PfDcO!1V`bde1CFotEK zty3H<;LA2S;(yzqOMrDfSHNIzwKVoAHlUtKrdTuL{~=xQjS(ECMx* zQLTWUZG_7Wd`74FTo2~ZY2|%;fwLk)VXaI8sE#1@56VBEnmjUnXU=| z#O5TP2;W6}{VG{Zc5`9wIPPo2DQjc6Zq68kw#2p9qp_6>t#Ld3`7aI<2&U?62U`dS z@ZB+I~{WyNZ?mTRPioDvOfFJ+w~<9liT&N#c5@KCeCUq)rR;c_x^qU zI~Nv4i$Q$MX_JA<2-u;#Ov(J{NTXYpsNCJT6{`hZ$odCo^Kmt7+Kp2=>y*YM^Iedn z<;v-1R|-Cb{4w|1bb%W25A`BPH*I#0>AUe}5V_j0>;1*?rL(@t@t#WX?yPZOU_qn) z%QNzA(u8Ykdho)ww^AbP#XcM!^onZQHGWc}_0L|uH5%}}5j@)dA$v4uU=$K%w*lC1}{s(bd*qCR9BH4m_5-OkuD>5NN`nOB@6yT?$9o(*BWzRb&mm( zUH#i3xjJ)M8+Ztd>LUzSj!K!vi9anU>^K_+%d4fwYJ-Hq=jTNuln_L7_SiRq3(foT z%=W7R%jVp2?*Z?CiZyZX>*{=(cXHrG>vhMKaBZUJ&oM^xcb@l@ojqBW2(8F7ArqR` zUf5tL2ZzLMJfgj5PbN_*v+f!@k2``CxH}SpF+8wOBUHTKk1DI1^JN2GqVvL;E=x?h zTgrPdE=x!$A6&a6W0mjR60SLuuS#M%Xii!fQHC45u4_*CQnrWR zApx!vC}J>`;}omh%((~o(3sQg{cEkSc{$gF+YIJAxG+iWr$oV zk@DP4Er|a-!ga7^cbMbLTqD?1-}HInYH}Plbws}Bw(%SAgMwaG3soLB0}cwB%o|$- zF*IJR)E~D>LP*_wd;xEwRW_;+H1+sx7*~`+1~11zM6THW{!vC?-tU+V_Ubk;SMw-p zG$;mLap|DszH(5wWK==YvClDvcwz3WaM0RTi98Eb2;?<+%{2ig0SZaOQ*=O0ifOy! zxFP(cu~X#GlSb#nKh9z*yux;LZwA?!xxqiqG~GlbN@tS~$Lun5POl*ShDH!Re8QNT z2Nza`OMC^LRDVq<6OMT5qS`>NyL#J(p%eAs$J9y&F3XR9DuDiibcvSL>JIM5YA-U? zuB?(OygV~&5>in=b_W2sqZ^ej>{cKu5A9=k>+HL4Op>!tLn?%uyt`IIhf&x_3PIPH zHjmHi^nBcw1}y2~=R*gGQb9~uG7bbkn&WukoNfmCbgBIv*( zlTv6H0EK{4i8YArBI|O_g{P0DlMcmvwfnU!Xg0~|vJDv>N4bzr$akjZE!WSIfW+L910g8w+13x86UTAuT)~;tW}Jl8ZO0MG;NRsV8?2yXG7? zf{3ws8XlI&+uUZ)WTkj1^( zb>TEp&Mbtq9e&|ZkWPme7a?0FgtRtQNAII?h+}}>Gkmyc1#rmKMtKbQ+9P`6dC8Wi zs4M)WJ#PV}=D@rMj%-xwf@5diIrrJ|*5SrGP|LGuA$9U0lo{`a+w$ow39Cd9rpH=E zCm&xY=it_m*GtHqyrEzB+y_tBmEm^!Q}5CsPb-D5U15`0VU^xI+HK_L@BXcQYeTiRT{s- z9R&B3F$Z(2AV1^+_ZwLsKh>!j<8>&`LLWq>{wL?CL?{_!1#zH}A(f}R-UngsHya0O z$6z<}UD3BFO8`g-k6$f=uN-ERN<3q7X-?gQR5~zEZRtDYyZTT!7_yN*x$Qt+|ayW${ z`S!(pRhtr2P3sS-aHl+{5_-X(=}N! z{CsWa`(5H)(}%qGKrAWeSD~-Db97BfOA1>fSX_3I&c@2S4U@?Laa8PF=Tq*Y8 zWA0#p&p_gM@DL(^Q44jusU%n#PE?hrTXaDj*m42_lv}+pCfU?(!0dzwp3WWU9hCG) zTpnWFggNn^%X_sybd?4h%neVWgL2hn8RG+56acxS5-JM4IS*P}l1!-Gp9;?2m=jDF z*T*$^0@?U^cW-vM_rR>_YmQtjd{4R1HcH`3fvmaYkuKc1j?Q|-ck0r%!BB$0`tbad zJz3Qe*3DL;Y5QIjh1U|P1wSa?T3`IMQ@v;fbc^QoO#{2i9iPBscSP}QPIYriFVBK9 zNOi`X*}DkpzaqQ5X!-H52FdJAXAxx|vlRvB?@Sw0@skQkBl)x`*VbM{1?vm(iX}jR zV-=;C{J={OxsnCUW4~95BcY?IH+oaZPTqWgC4t!y`&+|_`a?lw4s8IduM+p=jXTEN zqBZLq)DyGTR@dt}Bm{Q6ei?%o=1(2YhP;0joC$phB+`vi7Ic)C-OFi;1XDYf(|yz~ z7tB2!y`0d}%~xIIPjL>c=~u4M>Tv(A(ppojaOZ2tr~%**S*%aBGR~PR)^0C?3siK- z#7(dPzju;{9NfNx#~PO+W4gc{R_dX^IUf1eLI=`Rk~P;eG~Gfq1bIc+z5h{j+GBMM zDB|iu>yI_eHVbke-Lxd3YVC&pD_V^8ez3m_xL*lj{|Hvj@Cv^Rg|x^klqAVj&bhib z;jCxh6l)g!CU|Lw&$yA%uc+rlk2s>tK|C(t|KPQvXDd}MVe~SLd4z0exyQR)&8H6ls-xRyXPy<`#P-xw&~KUJ zr*9=Q%7at6pPN^~u;1pRVMIVV8&rIT=UdO@{gCPiJExpz99z6?;eWY4N(5ds=Y%(= zoj`xx^hV;IX^CyviHRmcAQh2bqn#)`|B8-vel=CoV9g*_+gw5uPbGE1r8ufZl(6Ig zk-1e*kf@y6pT83k#L?9c?G`Ua|B>DPIuKS|cjj0Kre_#zTT>s^OTBV^L7@2~h8opl zKK?aJ#Uofxwu0?7Qi#CDvHt?Isg5L)R}c)ZU%#3M&qW1c_)YubcJJLr?6j3ykiOuE zRpn`LM^A^}Jm}DjzaGY}(}!5Gc8WE$Hu7iT<3ZS0u^dVkzA!b0*lwE;3L4f)SY8q# z+q7w?#mA-cC$F>_&z4^(dW;kkHgl-=6D%lbc3x+`#a#C)^uajU-l~CWiU9GB94v9r z+I38qWNODR7UG~wrpP=x&)SEYKB-3PDZAvpHfNMmGayf#BCQFrsBE+ zpHbwoyfrX^?=Y(;Y(q7k9gJ%s&gd54W;u$?y-ze7i&C`G7IyAwMwv0sD&wLo#5?lU?7s$3E`W@bzo zKX+QsZSUaTsi&V# z15GOvX~{}_`&@XVkoSO!4+2GG=-kMsoZw=BL=gzJoYJjr)E(mZk=i8<(4HW>yR&k@ zFO)L)@D={XG>r@Wm1Ic zQriA8*o&RW0M;eEc$Dfjz#Zv139FEL-KoL!?;p6BOyVED;csk!pm}n_v#FoQj;sfS zL~)KcMcvAY3}Ut26Z_{>kj>1nabU*0zmX<&+j&fme%B{2_V8nb&`B?h1gvzPU{ z?5-?W?F$2}RG77OSx<0~nJ!k7HZ%~)PXqlyx!s)o6^+8E0w@BW&x7BRAeY0h#jIS} zy~>U$Rk{DmV{~r?WMM-1jmQIZNGg0)x=E#iJ!;>IwWT#!n!~3Q8soY6`AUEkHwP?@ zo+Va9VAt_WKL|G1YNSbdrGX<>`GmDgmtpJ|niB8bC#UP-C18D~mZ;K;E@f*Yq>B4b>{is`tlmOqhqdSw6F)0cc0jFN5p zN-&rnK#u29%ipMm=2z`wx~P~^2#)x1mtr{m7*Xypn!wo&Bug*<)edP)Y^A(;+`erm${Nqw>s6)?w2a79mAT&HMD1jNXYVnLLsKMAkbMyijhvknpwx zV{GhXRArSJFpNfIFcV&MdzyN7`6Eo21V^HK&STjV?=`o3Og7RPP`J~yQ(uI+fGWE- zK}urAyRRS;7+TLt30?O6wZjwbg9x6m+et0nS2Qvmdf-Q2NX>K6Xi@pP`CoT?SKhQu z{w=W>skbG=3kQx{Ig;td*OTDvdNUrP?=qh4ZaUdhETi?l$&9G5WiFgP09loA8T=rq%Oh@|FjrWvZv{K(a73wC~O`Z>Jk>i<^! z*)^w&3c-3-f(*33v|(zJ0Ffx~&w7Vol-GYd)^T@DkiVE+ApAFqXmT!Z&>%p*Sx;%` zAN(^S-v8yYHg~^QbaQsF&Vkd9fVU-qvAlns?NaqP4%)5)qlJv*0OeGG3t^nfMEa=U z5G^wpGs%fu{_}VYhQIsriX5XGtaa+5Ib-7o2xMparKwLF_mTYVc!~-gSem>nFN(h3 z9|>?A!_sDiEWElTSMsZ39;8-_%=fK_hKO|C8AdxVV`rTd1dI=;%6|(FZRFWbgp9Pn{zJO0m z`5?1zQp)X;NE~PBq#zk~J|Y?r9+S>cbS}1J*kl<7N~_UYAh+Iu&|cspOYMcH|D|ci zx~2zRTU2BMDCk-+Jbz>=LaFw#mwJMA3IU4LD_U#QZ57@>W70_H|UU}zBYo8qcIghu8KG~GbRiRdMx zFkY8S?g-Z;G1?fy=WlSP_yB}r@BD_&`l->d#%R9_6eQM}YJo#9ZJ{i`i~mXUYJ9cN zH^=gHq_|WM_-%~lyg!mlp0qOLlt+V6L8bB~q78Q4Fp*R3s3nd1*^1m}UPGOSHQLY= zIxuveKhv7SXtSnsTdU^0<9Y6KtFg&|S=)1Xsevezyp&ql$caqbNY-Bo! zMIe5gYpzS7{+)vt@HQ@Y)_p`1vH?+VHG29C;d>0mQZ4zDEy3eWN(VBN5p3T?MJsq+ za^(0w-|U}Qzsn@I>&EG^+obV1%xxI4sd`B&#FG8Pt-!8jUee$_I!E|8ni!aG>5r#@Aj1Lwl zv}rHEIZt;q@lKP^?9`O69)n6}QuiPGLt+<^_r!RnCA|{+oKvCP@T@~MId>SZkv14t z)wt&6eD&I$K&M-7?;fysZdWs?a^C>d`33QHr_gl)Z4R@?F9!{|_Z`*R%AL8TMN?h) zz6GkSMpDU|>Cqt=mcW2m>mZIJ2dPf&n{!XZD`qSrtSXQK?a^X^j({^I%17qProKt! z>hQ-dXox1eslx8e-mD|b>ANt()TESry*JT`4y*=Ou-{)@onB!LoYvs|&`sgZU)BjKre(_lei!mQ*|+(EHRk*MX&9p)!L%_oB157kgY=Z`7I1i@@<078n4uL z5%|gi^&a1Jum6`~o&%4Th5?&if1mD{zIp$F)Dv48xoV>kwMezX<>nWC7A5}~%865r zFiQLIX~LF&$dKLjNdcBaiZyNVl6LW{R z$|!*u-Xjk*>4YyFri2(~S6XS0gTYkXJ(BUJq2Mxe;}MmDfRPbB29-9bireDW&2~hn zGF@Oy_5Q8UEofL`8U_Q&yb_xz3eq#<(EaFfHonG5m}hF4)%9%U6r?}&_GfiVrxRpL z=Nk^XOuz(5B{qABXx3Q9x_|rsWi+Ho0pj7QPEd+Vb+q|#+Nr6wqNqe^5_3lKqxUzW zd8dx_;i#8XIV5Or9bnB4qh7_C0{Q;-q-ocO+OeP7K^Hou9Q?FsFc$~_)D&hlnEZnW z)OYWhv)iq*vqgzM{E%IlHkNLWk@M^>#0hkkkI-agAUp;1-R$kQ2z% zu6pFE&dK;Z?(22#S#tN25_g{kUXL_{$Stt?A^*Frc9Wm_!L#y^>Ri>20<;prdV;^L>WO+)XLb*hL5?cwyOMyA1d665-1r{h&Qe#;^D~?V|xp?mf>= z_rdMmJ3ci#uB}|lR431TY|iDxx6@v|FDPhOEh253{p8oT)W8r;*F)$byFUF*N4nln z1~C-h@e?P<{)vZ^GPPTGBcdZknyKk_MM!r$#>872Ycx|TVy2(i_=;avzIJ8L7QlU` z0l2P^4=$FqNz>K-5B!gwlH4Kq3(9PvQ|vHwJU-VYT;|K7^!>v-^qyPJ5sk0|c#`{5 zdhsHG`%+82#7Cq;{|HFv#f7EsmCP1=LAr?zxvCW=gvK--rEr4HZVvTYwCUW{|BpZ| zv6nLGcaS-aQC$D@W0*F@-V>=-f#iG7Ta=th_901lv#LHK03~lMplw%Qrlc$-JYDGN zT&q{n>KtG4cc$q6+s(sh&$6YLiGTGz9B|Q z(A*HJ%)(EV1j*wQRt{wQCNajCyppl){6o1G1~=!8&BI6uNnoKko7dZ?^)HPl?Q88H z9G=c4oKgz~4G9{#-;J;5b�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�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�iISiV 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 z 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

Ica=L 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≻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®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%0DB$kOM6mZG@>G zD}Erqa5 zj1qqH=0(qRz`4Vr?(r5zyrx`?RZzVrQeQ7miL@{7jfQEOx~EHOvSxZEZ!MMZOQT4y zM#_Gu^&WFK+M`$7M2fXTxgRFEUxk?)8V7u)b4)2_72cnS<0`zC+2 z(1&HCV)DtE0{M{W4-yt1eAtJQacI`px;J0}65pma@5-4wZ`*USgelX7*zF;E*$J=_ zVYgs=%Imfef-sK;?0s|iAd>h<_!6IbV#%+PA1Ce}RB?>yD~M8BFY^JvX5fqf{D=VI zOs0KMXeSQ)TwkZ3ro9F8;ptjdpHPA=jpm7DQ=gzfS$VINjRfHI5Xq~0Q*BTmJ{cn= zNj-~ma|7Dogw?YirWYx~SoN2b4TK2+aGyN`fCo|FR+Z5>>q(tcjc9>gxcOQq?86}q zjv#a-f}z}{@9-#jJ2FsU$hhwW##oL-e7Cz==6f)dmaE(02Ko4+|B3(IIhZ`;9^ zvyR4FeZg@T;-s58i$au^D5}na?1oq$oQdV$#8(?@3T67tF3y)pY$REle?k!(%5o|Ycg^AzvGuv&(L3z#I)?LkaStEy zcP$yj-XgnfG0%>UuaQvb08%nui(p>KK~lkQt14KP0nnq>jI8%-j}5GOjz=;xYpd%v zbNX0lR+{byRDB%RWN#SHnt80tj}M#NE7$WlIgJbf#`=xWHDx<7eAJ5Dw=Np~M)d1a zeN&=8m3x6b3z8S8{czk7v@oPRH=KMKo^hx4nqkOe;}h&Mmjf}1fmGQ|az4kg^-)_> zI8rxsW~VFMO0HdorU94lzlT>}nB(DCFmbmR&3n|K<6d`jkkZSc3^3H}841Bs_3!9Vgf+5c`U98RSS8C)T3!9xhIYBRg*hJ*d ztG_Z!JYGluuLoO6Vo_TmAA<>#06_Ew3~dbtnzNZSY;9)O_P?$%2l>8LXxB^{ z3>L`i%;%PC-X0gV$SRqDY)qiW=z9QK9J;_v#}pTsLXY5&{d&78L?a?0t6;O9Bu^}& z2Iu}=_D}GMdJ4@UpqU$u9bahbH(oS*Sr{Ru#? zy1D}WJ7CN!Y#LR8+-a&1(P`4hZM%*HIXzF7r$t>s`|ykvtWRePF_C6G$gd`|+kii? zPNRCRPJ}*Kl`%246JPZd!}0nTQF#zJiwGOn^@+!!#=@d`tHI8N#>s8Nso1B3Ub)TT z9~or=3**5(RPURHFyJDkxl#$+#KL z1HpDWbCl*HhANH>GJsDA)Np6I4pLoBK>lSan#3U>#kElmJ+8dj(s6zf<3ko0_hbAu zURB-w+9F3*_tcXJJB-<_C#h_irT&z\"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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512112002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512112002-Diff-Config.rsc new file mode 100644 index 0000000..f6674f3 --- /dev/null +++ b/MikroMaster/history/20260512/20260512112002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0