From 7971101f1661904484db9369b127f730b56a3da5 Mon Sep 17 00:00:00 2001 From: juewuy Date: Sat, 22 Aug 2020 20:08:23 +0800 Subject: [PATCH] =?UTF-8?q?v0.9.8=20~=E6=96=B0=E5=A2=9E=E4=BF=9D=E5=AE=88?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E5=90=AF=E5=8A=A8=EF=BC=8C=E9=80=82=E9=85=8D?= =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E8=AE=BE=E5=A4=87=EF=BC=88=E5=B0=8F=E7=B1=B3?= =?UTF-8?q?3HD=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=85=B6=E4=BB=96linux=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=EF=BC=89=20~=E6=96=B0=E5=A2=9E=E8=BF=9B=E9=98=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E8=8F=9C=E5=8D=95=20~=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BA=86geoip=E6=95=B0=E6=8D=AE=E5=BA=93=E5=81=B6=E5=B0=94?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E7=9A=84bug(=E6=84=9F=E8=B0=A2Pan=20Peter?= =?UTF-8?q?=E5=90=8C=E5=AD=A6=E6=8F=90=E4=BA=A4bug=EF=BC=81)=20~UI?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/clashfm.tar.gz | Bin 12825 -> 13673 bytes bin/version | 2 +- scripts/clash.sh | 30 ++++++- scripts/clashservice | 1 - scripts/getdate.sh | 3 +- scripts/start.sh | 182 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 213 insertions(+), 5 deletions(-) create mode 100644 scripts/start.sh diff --git a/bin/clashfm.tar.gz b/bin/clashfm.tar.gz index a9aa2c7ca89b2b6e44eb82a7dedb17dbaadf2cec..60d504fac00f5eb4075284bcd3adfc697091baec 100644 GIT binary patch literal 13673 zcmV-vHI~XBiwFpb3PE220Ap-nb7(GfVR8WM8)+X)Ez zNM`PR_rAN|`<~%gDBbBvckcQVKR&fk0rFKe#{O3;6a0eEwYk zT_5!ABEDVE;FC>fLdq`RGokf2{E*$xdE251Z@SaDn;cB0jw{iQ&J5Xea4-2FD|cs) zJDnYJCY(&PM?3cH{l>XlogSsbv-H9|onEAudz{gBa)h|QCXy?gii9$9OIC?VqiA=uJ^Drr zkkc7wdlU$t8z`(k&>k+(jqe4jI!Yv}Fq%3^^Ffnq5B!}7#bx5!qsXC1ESl&d?smZO zNqhG?<#1<`Nb*;yq>>>Vso7ewS(3lJD z(7{V|b>-1ouhS6@Wyk>?|Ml13{^T7Xq?6E@(DD=7>_~C=f!fnsy!bt?28+Og>eLuL zou|X|Y!Sd?TS_OhN?1l_Oorp3Flt!KEzDoB(uD|!iC4~2z2n}(7E-bAWuj$f~cI$gY0wS<&$tlOsdfHL7O4t+e zzNm9=%R<0n0XS8sS8$!pSSa4?El$oGul1D?)8Zg4mlN^F)#=;YBSQOnwcJuwBA{1O z3up}}1i^C@8MM_BPev@!r{xH7M~M`OHuJYlpR#X=Eg3fAuzg!W(oj5TJd;f~wWiYK zM28}$h`XEAp}^gdI^)qX!u~zc9VYHrtIp*S;zCT~?#K`yIcjpLWD}Nh&@YhQqqRY6 zSC7_)EZJqFk*(1Wb$5}vZ&FG$ks&Vs$+}jj1^KVKs_Y5Lu8_Hna54ybU4@ph+%tLSpX$3J)drM3!r=V0!Sou zoI$wQ1Me#h^**2e*bpAPCC@dX;P|SD1Ao!EpWr82B0iNQ_|_gZNh4i%7Gy-;aDBs` zog^|%Kr(LcqZL3R3#NuC%Isk5=2zV#oSVo(67o2mU|UnfUcjRL!-36k45#-tH2Tv(^;sm zk4rAyh9rX}SR3LF3XVfHGzLLlOns7p))?Fm4|L-Z#c7coy-0J{%msoCjrDOe4`a^t ze0BV5i{xkT7B}W>p);PijQP1e&M6_8?R}iPX>Lfn-lwmnUR|R3Q%raj`K3G}@5CSk z$(Ng>I&EjH*(%)SCrM^)}?T?9_F09eM8`|)9#qXBATJBnDs;_irLmj(OrT`Q! zD_-@TI4T3pQ?t(1Ww#9>>M@=5POEpW2@E1rJ0V;=t0;)JGnvjnF_LWqs|<(0_n@=uPAXj1N4%W=u_uO9uz|8nqTv**d*>l*h~M85#C&F$7k%p8M`FBDd9plW#O zus=>%>VwROBN8R_byA6VScEZ_DCTC16aA3Q!Ly;spo160Mc)H?U<37c@)W)aj=vmA$P_Y1+w}8dAWJrmWE?-kG z=UIr!Ux7#h@WuK2G~3Ch@fVnk6{b9FZLGMnB2lZv7{B7i#jiV+4Q2f zE`lwE)qB)On=Jr8?>K~KLZ3k=#z2hKXA)^yfm*IAC-}NLFZ-g+7Kq3VKDGF%Rly2Y zCswQ|T{=9Yomxi??!4}@s1ZNG)Wch5F$Eb!FcV1vR)8Q=G&iE2{Z%&x)O#gpkd%6c zKs{y?Us$~ku7c3U`p_~$y)7cuGbHu&PnauhyDg6P8XKx$|O`; z^v-#501y+|xL~gEOR9Ah$Z12TT%66pI0(rL_GA`toyKhB2w|L%rY7R&UANG%ey-HM zTnfh7*y*>^P%A;S#+ehaT3!`hG#ReIuWtnPGR8Q>jv3=hQHATi9Ihl%-0gB3B?OWKz&2FAAPqy6ZJ1 zAr(pw{IB$Xx6%U@Di4yQwG2Bj&LA{*rF45l?YU*9uaQ#kKF@4<)8*ogB=je)*+dJ_mp~O47mLjMD5{TG2yfaeWig>x^k1=7%W}C0vj(4jGM~b z-UqR46QR?w#YE^R%Y-!#H(ShwV#96v2{HtpV$GpNK;C)ori=Z?)~*h)fY!4{`!4`N z{g}vMQv-`-r+p2Kv?T;`0F?ELz1g979E4O#C=kap2&lZkYe6cN%G_i&Q4v+@|B+Dz zdkTyyynztoN;=yHCw%Z28e4a_+~!FnyCJ;tU?RTvbjnJyD;r9sJmF-V2N4AEq>eXu zQr$dcgi=vYBnC*)Bo7blS$8<>X@hf69uCr7@E8_M#<=HOL_HC3H)wy8*$6ED*LgF6 z&wt0E(NH#ZX#}a_)cEor;nw>siLudXTL?I2Up(;5X0pm2*Ix70rmJ8AbPm3V{W5Cv z>51dQNQd^_1^QgTt@^tYHIXO*&MvxCdYn92vWFR*y_92*bNF zJ?e@iHRQ-2M{xl!Ft1P_3~s?Yu+*;JG&elnKYd-({z4 z#2@h2Q+0pn4#oSc#nltF2kXRi-$HBJG~$XmN;JB( zT${3Lt7(+Y`5T4vJxE-_AQ&?Y_FC%HMsaS%Y0hA~qN$cJ6eh+21OMH`k9tf{D3RjH zL<_r;l{TQoM@?`^rW_%XNb5IP5Z3tBgqIB1uw8^pLVo3d_)}QW^3*+W)1&-4(_UeA z3_n{GIg?cq7BVVBe1#_tP)zEx>e@|*#o;hkz$kYNQ=+d_MBYL^r%o=TNkfTSJ>b@M z&^$Pxj$YHx5XEaquMvki!?mu2RPs&&#sY7Bd{{(>jdFan0bA@K(H`E{@&kBAqAm0m zmTyA$0AIufECaP}gZ$nz$^U4#uG9YeI3pL=C{13_78c4U*mV3h&br~^8K?-4cz~F& zUD2TJ2?AnaWsKe(*Cy8w1rDjd^+H!(J^*K%TAibJd+5weas3B=S+8tgmOa|jp@ZkO z*?A~0z=l|9voxyxwutPP&(Glvnj8uel!2BaQsXXWPpdR_56+EsRlAvEq8=g80GfJt zR-HNX)W-HIpYx+h8;l5+Ej?jkPoB>1x7Zg6q1_#m$*U0CD=sbY3tJU=fCnNo6A*y1 z9ov%{)Ed^UCA14vn~;|4_v^j2<-~+vCc1RcxJ?ECVazjWBKFRAGHgvarfNh4p@Rhj(&89qIl2Eh98&>%Y+PAF83K=WjqT z!oA@%6M6*XK|l!*kP7FF5KaOYFDy+`xO|mT$+34FYtK zpqebs3afp%7vL9p`~1*bD2HlP7*{`zJSOB#xf(@5At77F><|1LTbzwR!(TD$M1QSm zYqPcKh{LSr^!BQHz!3pAk2v<%gKe+^0v4~Qd0^151L?n5*>>VYwYQ4ZSnXJPcH+ap zhjD+2lnNi3haD)ekb&ykO{%5=FCFWw7{y}>P ziLZ2O9xm!@>kBZ&fWZ;%zgN87TbBB*ewmZR)Mwru8=-w`FoR^rE;rUUCCpu&J9*8L z=D$2=J~`kAY~d~CRn5GA$7r~-C|1LG`e#H#GrpkMH;IVOO|rQ|+$5h({K4Lp?lutv z;otBSCR7TbKp_d`68u1b#2-Ms017nF2q=XX5I>N(DVM^16cC3vg}B7sf_Rzc=v(l4 zzuk$=I=kC+fg&h}x*L0DY>z$TxxztCf%cZcQeb*ofLO6ID&ih$O{~L$C-dq!QDuVI zw2e*1A@Ch|gq7P6#L*-r2#I>IN_0Yy;2~p2uWix2wx%U0#pN}@cDlkQj7cssE@-qB zAbKXB&n+(G7B5|rEA}kTEnBAl6>^J;h1}AGxni+^xSGbxGp4O9Jm)S_gbyOfo+K-f zW*q@@JP|4FIRM&Dm<1M_EP%#{d*1^4oR^EznZn>6&SXefd#wDrNOd}**DW0Gb*!TGydx;mP zSRcL)k>C9GL^Z~))bHM_e;PxW2GF#Z`y53}?nelIOTuv04cpqn#4Wq#M2&gvhBf}M zH*7wfoohkGq+&5wMgx$X(8F20@;J8NAIt!f7mN`)+z*l(u@+s3E~9A>5;*PtN61;X zyQ4|REG9j%Pq=Up^rp3$O-QnhlN&S@oEJ{6MMwR-;O0zb8PE_bL<)FDAm zddRoXtKkbEB_IR7L%z4jAQiIr@$2Cf?mofR2WBKf!?wo>z_x2V9hn2Ez9Q?JrXe_x8!v9jj5Hs<&}OuYk89UXiFX!B z5Y5x?5l&uzcddTr3aGVaAxax|vgR_AHO>5S@oO?j$r<`Lat!EbX2Rw`*4V^@FKuqx zAm$H*$^=6Iaz@SgAv2}k1BpUrU_+>EKeWXQpJc>}@g^JvQyDnWvt@AqfWDac?af!A z4o1c`Tg!8+>92}fX@0*waq}ZNFgj|5Tm8wg`mtwT-69lz8Xg}#g>VdSE-~}Iwf7DL z^+(YHb?DYr%?{Ho6b6F;;)%y^jPg*+C4RzO^Qf>8&LWaJa6pZJIm1ENAv26T(j34& zvRvsO!DO+E8ZPJw^Rn~0GoCR?Z&`_x!kz0!q`f%0kAud7y_B{r2oSq zA&#IBw>Dt#U5W~U0ku<|zyL8x6BL;ef9u1akgbfcciAsyNGAK)ftz4EWl$4F zVh&{^oC3Oc?LxKrO6w3jsKXO#*PilwN&DItuS8(=9K3Rne>h3;2qliIsZ9}gZ^6C_ zsRO%6!0IN|F5b$!dCTmUn7LR8FX>=S6w&OH+>7n4L0?07%9)&{eoaos!lN zW)b`oNMnip5|1wQC9n@1#+1BVGP9Im7^>6@vQS8MAd8~&qFoW1Q0hUFnV1A8N}oh* zXw4pV?ZmSum?F9HkKJ#8e)`;RSm+hEn_qKnU_u5%-kleQ`iXnZH?2Z@E=Qafv)m%)IuZ%?3-VuBmDU(u@Ff+5B4c2tJ?_HWf0oZZru7yG1yY;Hrz>dhNh zuiw08@^tte6H}qL`J)k?9ryWF?d)@HJs7@($MMn8RBt(4s9=25AE;MEg!cz0oe=@% z3g;K#9Fkqr&e5T$%o<7Tws^PHO7eTKWYUy}zEsA-q5G&uFZyV>s2S^aB2JA9pHYC1 zPsQCJ%zVlS6^P9AZjwjCcy?zL6O{s7QK)7r*)P32IT`ENQ-e98NBU51)x~v1xH`%V=+9 zkfu@Bhk=r@4_vp;sGDiL3w1I-J9zLQUs^!;C^}+kSEV$_65y-?W|sW6TK-fm+}T?E zrN%rqZhx+wd?&XiDiQIysJ6_fr0rO15dNG#I)nELqO@PD4Kp>%1`i!NXoWJxve2}! z8d9)JBhWSBeY#*2Kq=$#u`z85GW&BpN-dhdL@6GKqK?0=)-FB6lHwhzDEp9Ti*&+J zOYx8QYy$?m5_>EF)HuxbCek``kB#ARB0D^ ze9P(7Exg^`tGwR_N<)1qj?P?PY$-v94y+7enyG}7}NS^`*rwFej5LF1-K?|yibuez1ryzstf1m zb@oxC#I^;2cUd0p_3`ghXd)|WeEd09` ztY_i0Ua;Mj{wc2)H#JK1+~Gc71ms3(vmar-*f zwYBytqkWARpHLfSc#nPd-J1i2cW$yu5b@_T2a(a_Dvx$G4}ZMjupMSjt+H=gYIf{! zy)Um3JgEk#n6n}Ac#f1UEUYaE4nqy>D{tE=Y99BHuS4s%L#3^Q-6oR;16Y}{+w9x3 zXUHq;BOnfxP$zo;HL<)#0>p-4H;RQK_!5D$sY|EqPzHrwaNRtfNP z8S}1$5F&aJ3Gdz5}9fa4zZzD zoTSerIFAw8SoVvatL*Fr^RmhuH_0U4&TMg1WCB7-QxZpbUV57QoyPs>o&~FC-tP(1 zc`VMNlUhfuW>yB8BkTZ1VCWKd3G>zFPT7{{wy$+u&zXnWpSf<&m>F@&Fj_?#;{uto zG87?$&nTf*X2aGS$V2V($ja3|geC99LQYGDg*KuH6a^;=vSd;ealY>WD7eUV^HJ3Ano2MN7(-N{Zb?*lnV zj50}1r$R9DBw>Ho?JZp9SD1@;`{l8#rKzRPywxsqH8;-r7CcCK%nDm zM|grc8ZMJk`efE_8ZA?hk^VUv4Cu%ae7l$J2m0Nf2U;Ct%H>$jTIm#*z%KEok)8ze zn|4yXezp06o~hTwc{$4oTykQe*&)LFonu{9y08o7*U&IR9Fo zVmTXx!RoSQ8$_AVhc>3ofWauToQS9)$#y873B83nz|h;!J3|j8-v!+G7W{U9cYAxf zJIO|8QvEI;I6>+}9r6OoBC(dpDwZUpJ(TdH&tne24pP`M6G%Jz59 zKo4P5$=eN7TV08U9l~eurtQz)+r0llqwu6%*swW-c$H6M6h^5jyBGA@)vgandIZl1 zB@{ezsM$PJt0cRtS00cS8b8aJu>WK)uFm1XPFyTE(1$CSB@gT&_65XYA|iTA z{KrOsdP9lt+n>LUO%oXXr#CYslr{R1I9=Q=Y|~hAwm4D+TQGJio~}jR3!aIA9%2!! zC~~IB1ZnWj>@L?@b_Tb}+z=o`JDiK8!_8Ku0ZJe`t%^K`>&vxnRpc?*D=lGAg}oR+ zK9T`AG)ag=S2Rjp{C|bGX6~Z7tFOQAva2ou$-vQ6NubSx$O#*HOA3MarI7`=YWW%p zpWVqwX4iIfk7p+G=~g^~aN;4oo$~jV_ux>x@t}~g2VR$UD=?syF+S+v_wYj?lQhT} zK|=b{ok;VHRP`cpD$JUj(0v zy>WE?)!w=2f$CBJ8+>h-6Ul|auKSAqsf{Hv`>#nt+icp^Bc1a9XCFVDbQlU&%av31 z=#vJuDijK*r1|OnKQmd#o|4HGvgvF(m(ESe^7%~e6p=nHdY_Wsm$v?fpV3oO z2dj-#=djjSFvwACR9tklRBu7y)+x8aR^Y*bX6w#&_0Zw2IOD*$$YN2&)!_ebM9QIN z8>+ACuf1sDnz^eFT!@sY*IswQ+;zp7Y%E4S2~iCG0Rp$aqf|3MeuS=Z>&eeI-oAh1 zsTUz6^KfQr3*J3$e+ReU2Vx^Z>T>_#H%gFnv!%8%7M@HQ<+nfo5vG==Q(J6AtEusx znjzC84yoH9iqdR=#k{qB&X1>>iY>o4w^EUeZanhJ#*Zgd52YOP)E7|jZhi20Yy@L1 zFD^(nd!gDu#~bB}^AI-x3$0SSRG0TGt3M(J7YaG{(r%pv15V@x;=Y;#PwGCk9RWO@AkpZ@R1N7H{FeZPFUvbua{EM{Lh%IiIe_C*)9RSGmB zyuEWqp{is0JYHw@B<9}w`t6OMp67)nWv&Pw{AR-Ys0+kb-*>O13=#yl^ETFI*|LH&-?n_pqG{77x~% z&+}+C-F2H^B-ocl1wdajo3=VDKs!DgMRy`_P;Vv45 z8dmCLetL8BwRa&M;*tfaym<8uwgJ)Hp;Ne2_J_|vH(-^CH(RfKjbF){8Si5{gra)r z&7(dB(6JHqqG&mT93#a^VYi=$Qvj5%$e8%2H!74^KzEq3kJtR^Njk0kORD*q2DDfWf{Lkl5n5D`7VcVxe)FVyZPJ` zSd+oqq3naUh@2rE(zlO24Hr`xdiIwG(e3_VI9uvU@A;F2!W4X*0)UfQW4i6yS!J3z zIAae2y36^{D`kg_0#XwLLL6$ofnp zu;q!x;WgFZdT=In(g$>qMgffV(r04J)z)Dwk0>85;cqrQ;hWt-No^9%fHzFtwGSz6 zaK5^Y>+w6I;UomDl6RT7`Hj3|b3N&ASjAWZ?Xu2osn_9^lK@04!SA48Hhs7CO)K_q zMxJIS`sK3li$mgia`Yk|CKxevhFpnZ8ikH;Jov57fFe8MHxLf94+y%u3bDM6nQ>b2 zq`TZH-qz~yeq7zeIV!5S{b)s@**z+!@@+9q_gGimX_;xi;XBrm$DL$$fv)HeF5*|4 z?IU1T!P_pC%9UiT)DW!h;PAYKIIy6^oq0<~=x$yl;y0%gGq>Cg*W9)FWS54(eelMZI7z#cc8@o7Jq) zn4DqD5v@s%0aLkIL=BoDB7LiNG{3 z^K@}2;~n1l8{{tHOVV7OY$QY-MB_6j9e9MOSUf=2fBI?thbKYjaWqF_TkBdzWN8^e zLLB9=urBJdT!n>u%p4ilXm;pPC~s+<7FvCSQrzZw8R(YTiD?)2%SX8DiB%yUuO627 zHz3GWnsnnfJhs@3Mo5spVnca`4Id?e%)sWOKj6}XY?h|3Aa;_!O(`Zf<%v-Rag@l` zlLXx|ATwX6hL)|18|pZLQc$+wU+TJc^Y&6BbuAQMlR;p~?Gfzo!$dr(_3uAIF3qhs zJ_T@s<(blRpxonhM#rK+8HnYZpS%TQO`?Yt1Q`;y2^n=!h2^n5InOA({mUnO;&B)X2{Fnr5S#aY z3l>&l+qX6bgH=GRL4W--=cQ_GzL>Hs0)Qts??5rR&wtIzJPk3|IQ4-td>GIdTOT)H zJTnS#fR~y-Ejy(F5pB0Vc@GB@xoyBeNvRV7Q9)71`NSHN^GFqlWpJ5%o48BqB2DfS zzZNYy-=+~iAL6Gqe-B?e%zjl#-_^4qal4+&cX7c8)JXEdwjvW(^`Syk(tDG-3>x|{ zD@-p{uFIad6xJ7YihIU;{=U(}24NZCvJbWnDT|=v)H*G)KBx95O9p65M&zn8s;`5k zFQEtOQftK2rl8-Z7R7u=G9L2QnySvry7O^0^th#qcy$~jVYVq9n`$&h5_fWk9LMzlIa5R=haC}; z8EicCRdfM39nJzt_NLp)VAdlr2wh&S8C8d950^JUSSrLQ`UCHIKgWj=&smU@&(JI5XTP`{ z2J59ZR?NeDsYgBBmwKjo6!qI~8L-g+7(3*2R9S=9(foz?u2nyl!@<*N9P)O|b@-VM z?|tWggzMn@`8Y?fDe_Rv1|B%92Elrn4Y%mQc1~Pqnqu20|DbXLlVj zK8zFc^U;+h5f7M$xJVo@%z3?4IWvulNc%_2egutHNLKuj*QBE8_zNsdZUcQ?G1@YH zGyGwWsorqa@&tsOpHR+2nN4qQ2X6VWOiM0cg&PED^GPJudSvsp`@u7!Z#nytIJ=*5*@BBWc>unmvaEnZfG0 ziRsjK>d=Z|sUqjO=!u+T-{s<@>M^4wAt9FweJ_`ST6>bLQ*qVQizzPY(ihW38Y=O! zjNn{xXr&mB%YNw63y8<4e{nj&B$}|(#nebEu-CuceEoq~xwWj|8>FG$>UOC0}~5_jDaACEEbti$EnK+N>UU?7%{CeJLD+U3Jj`Q(|_xJ^f# z2CY)NzA|m?91@Bb!r&Bk2PX{7bb2ZXU~YP9 z7lW%WPUSjWGE?qJZV zaUnwOMULw?+T(>_Y*<-#qiy%Y-+B;O-4R-t&_zdfWI$s%;n>rt=KMto_4kiogt+|s z+Yi7@l*2Q-g}3Nd$bg4flHg>0v0cUjr#o)cfn#>+BTNpjZxrzGLK&lwLGaZ#f9Y(W z(rth7Tv&19!#=2!`^}fUYo<|>eS0H2rz{GsUar}tEIcC=W@2D%yPOrX zP2Nad{>}oXF|s|EDx*Iccq(YdL|>VP9txB%10dzHCMX^6&Y2$r((VTmENkve${gA( zx{s59F%3KN6c`C|6>xS{5BIAT!?gP6sq6P4FkJ^&hW#-Fv*DcuM*h6Fz(_>y0wcrw z3z*P`b`E+nqilDUCxlCP3@Z-^_o=KwIXKz)lA$4u+4EM!`#;V}4Q4B^c}n zdq8mzIKiz)<+!&)^%dXjd8IUzafNZ82-ho%yP~)5kVo(~C2zNcVHVATK0qt|p{!`p zT>}V{!=q!H{Ikvp=B)cONe1WX_J%#TgX22ujRzyrZ<`sr{?`!ivxXQ6`xaLIlx|q1 z`de7p3(c@jAV^xXuZQ>gk5BfT+`2dZb9?8c`#^KK(QV(Etk)M0`tZnn8BWk6ySvi_ z-A~FRF{I^Ij#wh;%`Iv6o#e<*_5BmCX}kH@B*k(+gi~U^bx?mWA@)+fV0Gi-K}q!f zVt0oqXzo8ja z`AaHBwobe^nNA-$2nhBVK0E7l0PdJz0>NU6@hqDQ?46o~mvAeh|u0p0D`XXL^)yA6w!NGMa!{4it? zTlCG05gwM)qbJ5ydw|4wCorQ+1!ue@O*A2Z45)vL2ZI$Jq*w>-%NHwx6E09ZY#VVos^CWYE#!kmeHBi?VZ$_$=f@g8Z+scbZQ2l z(6XaJ3#H60$KO&eq@{!}pmOwWBO>^aqPZU(;V-a$;siDf5nExTJ1)cE)qNN} zuVMO$VPE<;(%&e}Hyc;}pss1Ft$WsjuRB?W@N0;^&U<;HJXvP#6h#n@5+6<#%Ej(+#yVzKv2F@7 zub6fC5=*zzzkB13P6MK&IT%Cs1VHnq8$z}HzJLkGrX`xSt}&si~tD4{6VJXDP12O=M=RBE$W zlBH(c(T!DGD^m-d<(32-k`ql9DaPebyA7W5=3^D0FwW@uV3iuBS~2c?OGp;0-K^DQ z_@#7G{h5_Wp!ie_e}lbLBHK4+#TM5S>UaicN6oF2RIgpekscKj}Jb0(8d8viB?K5{a53!1=` zA1sxRplG)&<<<<}PKfE`bTXgJ-?AoW$QWA_fW31&czB%G@S*w!L;R2;^q}!%v$^D? z{No*re;8cozqXIw=^xl*pdhiz7t-6H`g-=e%h*Bq;Tu_}t6J#Xi9yw!dGMDe-m6vx zFuzs7K2`r!>yRl*HI%F#YTzO`0sUaJwo*wfm8vzT5q|y8JIuP zu$@#z=YjtHtskJ!k13yhMW-Z*71pgS#Fc|9#;hd*V>d!ccUXxc8GI`*cco_BLSY=S znemtt0U&`00IqRRkIJ*7aSNbNR zTkFUyML)cU9M|}w_1c{y)z*Ua>ER|KdtwkUW5Lp35IU(&qdF_*uRSw0pOJNyKTraj z9A_f&ek~P-gTn4nR|S<}zsybU})>3N|BCMJCfM!;*XTg0bs2O#6sRR1UQ=I7n z)UUr zQ`v0Z9#ekDRr2YeDw0R8m&%eu#`P2Gm{Lx8{A?jvs?ELhasQbQ57$|Z0@21*8yy|nNUv^vl$4&%vwh{fM8?Zj=4)U#6Q}*f|Z7WAbR&J zLIuGh6fX-N43yS@C#4AX8mQo{MQ!gM1Q9%V@+2a7?pY{)PSwxw%}z4OmNeOAb7&!( zTXr+Mc{`cO&L;EJIt8`_i9~q7#5idw-Z+sE7o^zO7*rkf{0At=ZAq@vGyw%O(Jzr- zko2~Yx%Ai!fSgJa}R1Rn=2RM}@p2`7G@mZ*3 zkF|Wb|C@i|-Q@TCW%>M}GpN0?zsgV6X%L+aF1v$1?cz?+obc)PdMD=>JO-O~NuodW z&9uISUQh<_VQfW)y}>ONBRauxmH?rVRePcXCPh*zR12t(a)VG=<5&kAswO;CJ%A`j zM4+Ri_zFQVB2-G0bpH7B^vMyRG%m;Aoneh*k>YoMC)pX~i#Qxrnr#&I@-B%1>EGmu ztDMFoUm?*y(sU9xc-zVCIMTUEe0P1^GMn6t$9m&V1k7U4N=!f{quYoGLxS0+N``c1 zCCnU||2|L)q-=<~IDs7%G7V^*e0SD`NeVMPOz#Z1&Vw!l?w}E!8OoQ^4cW+ZU z&-l*d>C!hPsxB)bVJ9Q*vs9VV8E4 zd>Ps>-Ng)TqIVplVN@LO*d_MhxAzoB%1|5=3-A$}HX|>{hVr~Mr72Bm%4+!sBI6Ut H0R8{~EHG&X literal 12825 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 r|1w?)k!%*3l3w3WC diff --git a/bin/version b/bin/version index 2b4fb38..e0c1dcc 100644 --- a/bin/version +++ b/bin/version @@ -1,2 +1,2 @@ GeoIP_v=20200817 -versionsh=0.9.7 +versionsh=0.9.8 diff --git a/scripts/clash.sh b/scripts/clash.sh index fa300d4..540a8da 100644 --- a/scripts/clash.sh +++ b/scripts/clash.sh @@ -24,7 +24,10 @@ source $ccfg #检查mac地址记录 [ ! -f $clashdir/mac ] && touch $clashdir/mac #获取自启状态 -if [ -f /etc/rc.d/*clash ];then +if [ "$start_old" = "已开启" ];then + auto="\033[33m已设置保守模式!\033[0m" + auto1="\033[36m设为\033[0m常规模式启动" +elif [ -f /etc/rc.d/*clash ];then auto="\033[32m已设置开机启动!\033[0m" auto1="\033[36m禁用\033[0mclash开机启动" else @@ -144,6 +147,7 @@ echo -e " 3 选取\033[33m代理规则\033[0m模版" echo -e " 4 选择配置生成服务器" echo -e " 5 \033[36m还原\033[0m配置文件" echo -e " 6 \033[32m手动更新\033[0m订阅" +echo ----------------------------------------------- echo -e " 0 返回上级菜单" read -p "请输入对应数字 > " num if [ -z "$num" ];then @@ -193,6 +197,7 @@ elif [[ $num == 3 ]];then echo 6 ACL4SSR通用版无自动测速 echo 7 ACL4SSR精简版无自动测速 echo 8 ACL4SSR超重度奈飞全量 + echo ----------------------------------------------- echo 0 返回上级菜单 read -p "请输入对应数字 > " num if [ -z "$num" ];then @@ -221,6 +226,7 @@ elif [[ $num == 4 ]];then echo 5 api.wcc.best echo 6 skapi.cool echo 7 subconvert.dreamcloud.pw + echo ----------------------------------------------- echo 0 返回上级菜单 read -p "请输入对应数字 > " num if [ -z "$num" ];then @@ -305,8 +311,10 @@ echo -e " 3 跳过本地证书验证: \033[36m$skip_cert\033[0m ———— echo -e " 4 只代理常用端口: \033[36m$common_ports\033[0m ————用于屏蔽P2P流量" echo -e " 5 过滤局域网mac地址: \033[36m$mac_return\033[0m ————列表内设备不走代理" echo -e " 6 不使用本地DNS服务: \033[36m$dns_over\033[0m ————防止redir-host模式的dns污染" +echo ----------------------------------------------- echo -e " 9 \033[32m重启\033[0mclash服务" echo -e " 0 返回上级菜单 \033[0m" +echo ----------------------------------------------- read -p "请输入对应数字 > " num if [[ $num -le 9 ]] > /dev/null 2>&1; then if [[ $num == 0 ]]; then @@ -535,8 +543,10 @@ echo ----------------------------------------------- echo -e " 1 不修饰config.yaml: \033[36m$modify_yaml\033[0m ————用于使用自定义配置" echo -e " 2 启用ipv6支持: \033[36m$ipv6_support\033[0m ————实验性且不兼容Fake_ip" echo -e " 3 使用保守方式启动: \033[36m$start_old\033[0m ————如正常方式无法启动" +echo ----------------------------------------------- echo -e " 9 \033[32m重启\033[0mclash服务" echo -e " 0 返回上级菜单 \033[0m" +echo ----------------------------------------------- read -p "请输入对应数字 > " num if [[ $num -le 9 ]] > /dev/null 2>&1; then if [[ $num == 0 ]]; then @@ -551,6 +561,7 @@ if [[ $num -le 9 ]] > /dev/null 2>&1; then echo -e "\033[0m不明白原理的用户切勿随意开启此选项" echo -e "\033[33m!!!必然会导致上不了网!!!\033[0m" modify_yaml=已开启 + sleep 3 else sed -i "1i\modify_yaml=未开启" $ccfg echo -e "\033[32m已设为使用脚本内置规则管理config.yaml配置文件!!\033[0m" @@ -566,6 +577,7 @@ if [[ $num -le 9 ]] > /dev/null 2>&1; then echo -e "\033[33m已开启对ipv6协议的支持!!\033[0m" echo -e "Clash对ipv6的支持并不友好,如不能使用请静等修复!" ipv6_support=已开启 + sleep 2 else sed -i "1i\ipv6_support=未开启" $ccfg echo -e "\033[32m已禁用对ipv6协议的支持!!\033[0m" @@ -579,9 +591,11 @@ if [[ $num -le 9 ]] > /dev/null 2>&1; then if [ "$start_old" = "未开启" ] > /dev/null 2>&1; then sed -i "1i\start_old=已开启" $ccfg echo -e "\033[33m改为使用保守方式启动clash服务!!\033[0m" + echo -e "\033[36m此模式兼容性更好但无法禁用开机启动!!\033[0m" clashstop echo -e "已停止clash服务,请手动启动服务!" start_old=已开启 + sleep 2 else sed -i "1i\start_old=未开启" $ccfg echo -e "\033[32m改为使用默认方式启动clash服务!!\033[0m" @@ -615,9 +629,11 @@ echo -e " 1 更新\033[36m管理脚本\033[0m" echo -e " 2 切换\033[33mclash核心\033[0m" echo -e " 3 更新\033[32mGeoIP数据库\033[0m" echo -e " 4 安装本地\033[35mDashboard\033[0m面板" +echo ----------------------------------------------- echo -e " 8 切换\033[36m安装源\033[0m地址" echo -e " 9 \033[31m卸载\033[34mClash for Miwfi\033[0m" echo -e " 0 返回上级菜单" +echo ----------------------------------------------- read -p "请输入对应数字 > " num if [[ $num -le 9 ]] > /dev/null 2>&1; then if [[ $num == 0 ]]; then @@ -678,8 +694,10 @@ clashcron(){ echo -e " 输入 1-7 对应\033[33m每周相应天\033[0m运行" echo -e " 输入 8 设为\033[33m每天定时\033[0m运行" echo -e " 输入 1,3,6 代表\033[36m每周1,3,6\033[0m运行(注意用小写逗号分隔)" + echo ----------------------------------------------- echo -e " 输入 9 \033[31m删除定时任务\033[0m" echo -e " 输入 0 返回上级菜单" + echo ----------------------------------------------- read -p "请输入对应数字 > " num if [ -z "$num" ]; then echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -766,6 +784,7 @@ echo -e " 1 设置\033[33m定时重启\033[0mclash服务" echo -e " 2 设置\033[31m定时停止\033[0mclash服务" echo -e " 3 设置\033[32m定时开启\033[0mclash服务" echo -e " 4 设置\033[33m定时更新\033[0m订阅链接(实验性,可能不稳定)" +echo ----------------------------------------------- echo -e " 0 返回上级菜单" read -p "请输入对应数字 > " num if [ -z "$num" ]; then @@ -812,6 +831,7 @@ echo -e " 6 导入\033[32m节点/订阅\033[0m链接" echo -e " 7 clash\033[31m进阶设置\033[0m" echo -e " 8 \033[35m测试菜单\033[0m" echo -e " 9 \033[36m更新/卸载\033[0m" +echo ----------------------------------------------- echo -e " 0 \033[0m退出脚本\033[0m" read -p "请输入对应数字 > " num if [[ $num -le 9 ]] > /dev/null 2>&1; then @@ -835,7 +855,12 @@ if [[ $num -le 9 ]] > /dev/null 2>&1; then elif [[ $num == 4 ]]; then echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - if [ -f /etc/rc.d/*clash ]; then + if [ "$start_old" = "已开启" ];then + sed -i "/start_old*/d" $ccfg + sed -i "1i\start_old=未开启" $ccfg + echo -e "\033[32m已设为使用默认方式启动clash服务!!\033[0m" + start_old=未开启 + elif [ -f /etc/rc.d/*clash ]; then /etc/init.d/clash disable echo -e "\033[33m已禁止Clash开机启动!\033[0m" else @@ -864,6 +889,7 @@ if [[ $num -le 9 ]] > /dev/null 2>&1; then echo " 4 查看iptables端口转发详情" echo " 5 查看config.yaml前40行" echo " 6 测试代理服务器连通性(google.tw)" + echo ----------------------------------------------- echo " 0 返回上级目录!" read -p "请输入对应数字 > " num if [ -z "$num" ]; then diff --git a/scripts/clashservice b/scripts/clashservice index 735d02e..3fa46e1 100644 --- a/scripts/clashservice +++ b/scripts/clashservice @@ -21,7 +21,6 @@ start_service() { procd_set_param stdout 1 procd_set_param command $clashdir/clash -d $clashdir procd_close_instance - echo $ccfg #修改iptables规则使流量进入clash stop_iptables start_dns diff --git a/scripts/getdate.sh b/scripts/getdate.sh index 45b8d4c..6992730 100644 --- a/scripts/getdate.sh +++ b/scripts/getdate.sh @@ -456,8 +456,9 @@ if [ "$res" = '1' ]; then echo -e "\033[33m下载成功,正在解压文件!\033[0m" if cat /proc/mounts | grep -q www ;then echo 检测到/www为只读,正在重新挂载! - mount -o remount -rw /www + mount -o remount -w /www fi + chmod 755 /www mkdir -p /www/clash > /dev/null tar -zxvf '/tmp/clashdb.tar.gz' -C /www/clash > /dev/null [ $? -ne 0 ] && echo "文件解压失败!" && exit 1 diff --git a/scripts/start.sh b/scripts/start.sh new file mode 100644 index 0000000..9489309 --- /dev/null +++ b/scripts/start.sh @@ -0,0 +1,182 @@ + #!/bin/sh +# Copyright (C) Juewuy + +getconfig(){ +ccfg=$clashdir/mark +if [ ! -f "$ccfg" ]; then + echo mark文件不存在,默认以Redir模式运行! +cat >$ccfg< /dev/null 2>&1 + iptables -t nat -D PREROUTING -p udp -j clash_dns > /dev/null 2>&1 + iptables -t nat -F clash > /dev/null 2>&1 + iptables -t nat -X clash > /dev/null 2>&1 + iptables -t nat -F clash_dns > /dev/null 2>&1 + iptables -t nat -X clash_dns > /dev/null 2>&1 + #重置ipv6规则 + ip6tables -t nat -D PREROUTING -p tcp -j clash > /dev/null 2>&1 + ip6tables -t nat -D PREROUTING -p udp -j clash_dns > /dev/null 2>&1 + ip6tables -t nat -F clash > /dev/null 2>&1 + ip6tables -t nat -X clash > /dev/null 2>&1 + ip6tables -t nat -F clash_dns > /dev/null 2>&1 + ip6tables -t nat -X clash_dns > /dev/null 2>&1 +} +start_dns(){ + #允许tun网卡接受流量 + iptables -I FORWARD -o utun -j ACCEPT + ip6tables -I FORWARD -o utun -j ACCEPT + #设置dns转发 + iptables -t nat -N clash_dns + for mac in $(cat $clashdir/mac); do + iptables -t nat -A clash_dns -m mac --mac-source $mac -j RETURN + done + iptables -t nat -A clash_dns -p udp --dport 53 -j REDIRECT --to 1053 + iptables -t nat -A PREROUTING -p udp -j clash_dns + #ipv6DNS + ip6tables -t nat -N clash_dns + for mac in $(cat $clashdir/mac); do + ip6tables -t nat -A clash_dns -m mac --mac-source $mac -j RETURN + done + ip6tables -t nat -A clash_dns -p udp --dport 53 -j REDIRECT --to 1053 + ip6tables -t nat -A PREROUTING -p udp -j clash_dns +} +daemon_old(){ + #守护进程状态 + status=$(ps |grep -w 'clash -d'|grep -v grep) + [ -z $status ] && $clashdir/clash -d $clashdir && mark_time +} +checkcron(){ +if [ -d /etc/crontabs/ ]; then + cronpath="/etc/crontabs/root" +elif [ -d /var/spool/cron/ ]; then + cronpath="/var/spool/cron/root" +elif [ -d /var/spool/cron/crontabs/ ]; then + cronpath="/var/spool/cron/crontabs/root" +else + echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + echo "找不到定时任务文件,无法添加定时任务!" +fi +} +start_old(){ + #读取配置文件 + getconfig + #使用内置规则强行覆盖config配置文件 + [ "$modify_yaml" != "已开启" ] && modify_yaml + #创建clash后台进程 + $clashdir/clash -d $clashdir> /dev/null & + #修改iptables规则使流量进入clash + stop_iptables + start_dns + [ "$redir_mod" != "Tun模式" ] && start_redir + #标记启动时间 + mark_time + #创建守护进程 + checkcron + sed -i /start.sh/d $cronpath + echo "*/1 * * * * source /etc/profile && source $clashdir/start.sh && daemon_old >/dev/null 2>&1" >> $cronpath + #设定启动方式 + sed -i /start_old=*/d $ccfg + sed -i "1i\start_old=已开启" $ccfg +} +stop_old(){ + #删除守护 + checkcron + sed -i /start.sh/d $cronpath + #结束进程 + killall -9 clash &> /dev/null + stop_iptables +} \ No newline at end of file