From 4f98cfe560b641904d82462a5c455255866fcb7f Mon Sep 17 00:00:00 2001 From: ProxySU Date: Sun, 22 Mar 2020 16:07:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=98=BE=E7=A4=BA=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProxySU/MainWindow.xaml.cs | 18 ++++++--- ProxySU/ResultClientInformation.xaml | 19 +++++----- ProxySU/ResultClientInformation.xaml.cs | 48 ++++++++++++++++++++++++ ProxySU/TemplateConfiguration.xaml.cs | 1 + ProxySU/bin/Release/ProxySU.exe | Bin 71680 -> 72704 bytes 5 files changed, 72 insertions(+), 14 deletions(-) diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs index c8b280b..314dc16 100644 --- a/ProxySU/MainWindow.xaml.cs +++ b/ProxySU/MainWindow.xaml.cs @@ -39,7 +39,9 @@ namespace ProxySU RadioButtonProxyNoLogin.IsChecked = true; RadioButtonSocks4.Visibility = Visibility.Collapsed; ReceiveConfigurationParameters = new string[6]; - + //ReceiveConfigurationParameters[4] = "domaintext"; + + } //开始布署安装 //System.Diagnostics.Process exitProgram = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id); @@ -208,8 +210,13 @@ namespace ProxySU appConfig = "TemplateConfg\\TLS_server_config.json"; clientConfig = "TemplateConfg\\tcp_client_config.json"; } - Task task = new Task(() => StartSetUpRemoteHost(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, appConfig, clientConfig, upLoadPath)); - task.Start(); + //Thread thread + Thread thread = new Thread(() => StartSetUpRemoteHost(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, appConfig, clientConfig, upLoadPath)); + thread.SetApartmentState(ApartmentState.STA); + thread.Start(); + // Task task = new Task(() => StartSetUpRemoteHost(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, appConfig, clientConfig, upLoadPath)); + //task.Start(); + } #region 端口数字防错代码,密钥选择代码 @@ -516,10 +523,11 @@ namespace ProxySU textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); Thread.Sleep(1000); - //MessageBox.Show("客户端配置文件已保存在config文件夹中"); + //显示服务端连接参数 + //MessageBox.Show("用于V2ray官方客户端的配置文件已保存在config文件夹中"); ResultClientInformation resultClientInformation = new ResultClientInformation(); resultClientInformation.ShowDialog(); - + return; } } diff --git a/ProxySU/ResultClientInformation.xaml b/ProxySU/ResultClientInformation.xaml index faacc36..fe58065 100644 --- a/ProxySU/ResultClientInformation.xaml +++ b/ProxySU/ResultClientInformation.xaml @@ -26,29 +26,30 @@ - + - + - + - + - + - + - + - - + + + diff --git a/ProxySU/ResultClientInformation.xaml.cs b/ProxySU/ResultClientInformation.xaml.cs index d603342..98a642d 100644 --- a/ProxySU/ResultClientInformation.xaml.cs +++ b/ProxySU/ResultClientInformation.xaml.cs @@ -21,6 +21,54 @@ namespace ProxySU public ResultClientInformation() { InitializeComponent(); + //主机地址 + TextBoxHostAddress.Text = MainWindow.ReceiveConfigurationParameters[4]; + //主机端口 + TextBoxPort.Text = MainWindow.ReceiveConfigurationParameters[1]; + //用户ID(uuid) + TextBoxUUID.Text = MainWindow.ReceiveConfigurationParameters[2]; + //路径Path + TextBoxPath.Text = MainWindow.ReceiveConfigurationParameters[3]; + //加密方式,一般都为auto + TextBoxEncryption.Text = "auto"; + //伪装类型 + TextBoxCamouflageType.Text = MainWindow.ReceiveConfigurationParameters[5]; + + if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCP")) + { + TextBoxTransmission.Text = "tcp"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) + { + TextBoxTransmission.Text = "WebSocket(ws)"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TCPhttp")) + { + TextBoxTransmission.Text = "tcp"; + + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "MkcpNone") || String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2SRTP") || String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCPuTP") || String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WechatVideo") || String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2DTLS") || String.Equals(MainWindow.ReceiveConfigurationParameters[0], "mKCP2WireGuard")) + { + TextBoxTransmission.Text = "mKCP(kcp)"; + } + + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "HTTP2")) + { + TextBoxTransmission.Text = "h2"; + } + else if (String.Equals(MainWindow.ReceiveConfigurationParameters[0], "TLS")) + { + TextBoxTransmission.Text = ""; + } + + + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + string openFolderPath = @"config"; + System.Diagnostics.Process.Start("explorer.exe", openFolderPath); + this.Close(); } } } diff --git a/ProxySU/TemplateConfiguration.xaml.cs b/ProxySU/TemplateConfiguration.xaml.cs index a79fb54..6b4c835 100644 --- a/ProxySU/TemplateConfiguration.xaml.cs +++ b/ProxySU/TemplateConfiguration.xaml.cs @@ -43,6 +43,7 @@ namespace ProxySU { //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "TCPhttp"; + MainWindow.ReceiveConfigurationParameters[5] = "http"; } else if (RadioButtonMkcpNoCamouflage.IsChecked == true) { diff --git a/ProxySU/bin/Release/ProxySU.exe b/ProxySU/bin/Release/ProxySU.exe index 51bc6385c9ded31e0132d7a866ca4d90fc6281e2..5f058d3a18cfe2b5c20c23c36e123c6ac1330021 100644 GIT binary patch delta 13282 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 delta 12242 zcmcgyd7M-AwLiaKlAGjaCX<^$G8+)KAtYWZxuD-r}mR#l!)6W#jvV5u)v== z_><(LIhPToCJ_nH5h88VHXxf|sd~XAnHor>%ajDankY6-(g?Id)R5T#k+)V<%S0<< zCYYN_GjYi4QcET9UCr`4AS$Bh-Kg8MpnxX=v&3=t+P() z#Fb8{Z=K#MyOheS$XsU82j`1yP%g52ScP#*t1!Q#^zT>t$o}K#f8W)I`twSCtx^wv zJoR7Y)vXHiPfEW^>6d&w{WtUa6=sRxBEOElm01j&j}!f9R#BCxu*~U7|3Rg1oL|2@ zSH0QY`X=(;w6A8p%%Yg*^BvCVZddXb%WO=^Tm23qS7C=zD9Wif=QB^pEJnFEJqQ-k zg8`h3N@W%U_8fMZ%ns>;U2e(ju%3LGf}mbKIQNa&=Ap-V=BSa6iRg`|laO%SyErCV zo{wO>r8yaP>f+GK<3n?}#fCTnS7>-1PeBHgSfvxCt~g8ym1r9BdIo}eGBOJ5%lyMc zX)FkO$cZT`QX@ervD|X;2omu2m4KCxnu}@PhGHu{neCmCn<-~hh?`&O*5M4@HqOw+ zIYAfa1Rb0cwEEAmS}k;#seMPDH&_^`O5*F?0exgwSSYaD7yoKkIDw)rD$w(H8_Rkq z1z8`uBQxAOw-<9G3#(~&FUH3CXfBjAr39ULx$1FUc?(5F!SG1jHW?#jWPC{7*V0uG z)%F%SgWr4rg$blEWV**jO^>|<;<>$qG4mnF7wjeW%X%L$S%!~urkO< zPmczumfp=uh8J&{Rj^A7_ASG!wXxhkRj^+}yc#-dA`D?;?ki|s0iAWQe;M93oz2scv3eQ8)+<_hQR2Eo zShVsKU;!` zX}3C7W<@A3JQMRVVy<+HB|*rnf?XO$L|-xT6jj>rFIssy$p^{nNuIze2wMtvX_#TX zY^j=HRzXI=E)5f^hfJcCM}GBOY5Jr)_)|4puDKcXxMqw@V+3jGTCl2klc=-*7*1Ij z{x~$%LABt}B(oRvW=!eLmRum1XGoMj}LthAoKI~#EYX{3Ls^U!}TwTQmw~Gqh=3AA~7;-@d&Y7W4t2v_x zsb?I0Rn;l65jWp?^s$ckuOOC)<^JF|HRAiQU@>9q;jP6wz9KN(!dToVf)HqAO9`1FeiwdN76-w`55htIQ^3o@9B2cz17{A9AuUqN*`+lBvh0EfbhYF!? zipzR4&#H1+qp|TjQZbjsXMQL4Qe^7ON3)$#i&L#x?8@>PKQDWvTQ*;nn$fN(pY9#e zxMs$*yxF{{)}>+OXc-KBJ%ibyr?E`x)nif^;d*)+;}o-Sro!+iY_x{i1S^?~(V%-Z zZyIA(Ph%A7=}TGmYHu22M^DuQOz?XX4wuhlU=xlhM&>d!jWjpFN_r+xT}#ixS13`0 zb2YXyJ%B||xHnyy^K5tdQ?VH28&IEo1LLj&&tzADahH#><@t=ed=xOxXWZfA9H7qV zn=xu7O6MePC32Z^1>93VXYKNxY9v*aIBS>hRKwwO)-KJ@^ zr_rx)Jkxo-`4-Be<9LmOsFs-nX2_dvB>S@R`0%-)syrF&cY0AEjpbVpq_I@$wPVdA ztOY^4zC2N?BKG_L5?7%<=CewYWj^n8Hc*S+E(wk({0wYu46$WNO< znnUoNS^#0^2xvBecAZ=2*uM#_-S*WU8S@6rhx%aq0_L-Qu(g2smp<5j!)y3f8rn+3 zzpD09b6@~bjV(r4Rpu{&yAciQ718eodWp<`7DzZT2h7soIg!>bHoSGE0dun3R249< z$>WBP+xFz?fO#N~8ydI0mZt;e2L*Vwo^u6zx6Udc9(Hln8|oNj9%J4@Bvv=gd<(c! z_CR_OSc>7MIz*-VI|Dr*Fq0wIh531)u1xO^lAf?PtntMkWqu5TYA;RfHBSIX!(up5 z-G@kDahpr~Yz`FVw9EQz9N-z)8SHpkdI=BR-z9+uYN2&C$d_XQBar?i_j8~)HwbDg zT~-_{_5R`vh{-?1TH>~S>Rj=*ytsw6RIi$Rdx892dHFKe#B+IhC0=u_+wkXeWh3Dp zq10UD%1%Xt8oRZ5yH|yW_Y@A9x3aqOVtyH@I}F5Jd+?CU7lx3QC$khW$e2FN`n;v76)-p;{i%P= z?4;y{7H@?<^S|K7$vc3ZstLSmpIW8QVg9l&$+!Aq@(^;=6W9sarWd;ef0oTiU*ov= zrR@#^szEWWv+?mTo3Mj%+UogaDhc&MgW^Y2ZKwI3ZCpP*)h zBZe&~_X`#F_}r@^W9A3QxA0Z*-Ju6BSczI-3oV7K%qrmNW@e~&39u8)Ud`-l0r;_} z!hUU7)!K4+Xsv@y=Y0Z_l`M%Dl3s6-{LbK9I3Y9W92sbdRt#pyDA=Wy6(p`O>XAwj{E)y&D1zS~R7M;FpP2ImAFG%cKxBJI zlw1AOh)>6T)<~J>yjfuIee2=a1^icONuoDF+I6t=0ziErh!m zqEN6)i}#XAwDKtAr@OV>L*M;(On-0PVDqvP+H_3AMJ9C}kDu!SGB?;qMvfYSYdbEE z84L|A^=aUn{g7&FbgkH-s;MGrUtU!`JrE`u{_jMa@%_CR@I{-=bsMkGU@8!AEuSp` zZ^@DCNNQt*8(P@>bwqB9Yl zI{arM8ZB4+djH=7I?aro!A|i)_~+0qGA4y|S|4k$AhaLOqO@1L74WygN%$G~O6>zZ zN`C;tNwb$*HJL^MeZs)A5$#`G!W@VXmAWH5jifX1r73qrK*kLRig^)X9ccIfcCQ zjdF|r=)o5?_!tVXH1fc`MyK^rFumV%DvFH53?Bxr(_%!e(@Ma>B#qw$2GjH~!=**P z31~D9H7KY1Rp`gX(Lg!<81^+f>t&nsd{siDnh?XW3R;aS-b3Chq0_5~F-~#i%!qPk zixj>QP@@NYY$B-OwwPWVC6Bfq+X&G&8DNFx{~|P_=!>EuPyJj`LHwS@ZI2XxQMA)2 zDpAy>u`gN>9Ys;7N9d}OeI-}YY^sK>2)zpG2sP3e@_^z&dL@3hx&TA?`N(+bq4iOQ z<$_^VF+*Pw!!P?7{wO$J3OXSs0Y6bR1#q004){zl!=qk?mx5z?Xo+gLMm4Nccv3ar zKrCb_&K?DaN9(~^tQ=2|HUK|E%n7L=&JuGTRh$#VK^#$>M}jQF0ePr1$TG`A%-I?O z$D&V%nDw}q;ahq`E^32r^fZFAUpaGfo#SP-w90R}_e$Vj3UP=pD>zq~zEipRj~MeG zRVjU0rSUlh52^&VDR@j-wsxtnN0f=f3hoQD8&f&6l(U`6SzP5YHnfkgchS2igH4W z(GM|pkpywr1L?S;_Rx~hHaU>~=(MQ>2htg*%?j*@d=`y=bI8Dhk#%JNU}^!VQo1=ug<`kJa{6wLYV_PLE9pl$%7ElxieO`4y@NnzTm6IuehZ3UQ^j9l%lBUt;6xmK&5$VNrM~=E1)Ft#(jv7lX zat8fGQBLtMqjweM6#p{1r=E@8qzXKX?o*T<7#Z%Av*>3z>S^CIpnjdBp7mKrK%P|O zp1`M#pUMXMlcJn~*g$V8YIo_6!`sm2!Fj|Tqzx2O)J+t}E{P)ohUU|PpD&vX#!Iks zOWKAl_&hjH>>n-Ek4&Mn8_w^h9}6X6yzqWxjQuM2t-A*&dP&VbK5hIRxEFJs|Bb>A z0I@yeVO(GhV3`L3__+^DYyoR0ggkVs;;;#+OnB&Igw=cq*15l$fvJQoH8Vw?Xt%czf1?v@TRB(ZU%M@$|97rvITgiI^c_aTao1uh`yxq8-Q{>MvZbx_a*Rb4RN@&! z!>JUohDHKTP;i=pGZp_6R0IAZ#aW@?wKNl)&(M6p3^jRX&`tCJ;4YjJ@nQ^{s}yII z;;aJaMbA3LKMc-)dk(AC!(`nDwO7f3yQtLb5sZIBu(@vtHg`zjhjKU@dPQ+wQ5=%@ zK$0ZOlVtfBk}a%K@RXNv@~KuIwCpqZ7@$N2eSo#l5V+*{fnyQ^YBU7x zm4H542snpU2yYv%!{a9o772U7#F&+oztG`Dx#DmBB;*i0K=tNLI)|5(4`Z<+dc}_o zAom$9=VKq}shgCzDC9mYxfD07IcZ+ha8+9mB0#>5Hz%&uI@V0P#p_wzoas1yX+p~S zYdhYrALbdjXnSV!+6`kC-(aq7UW4o47)X4^u4uTu%(@dIg zcg`7Mzc**tCBco9#;ea-{KmF{KEX}65iUX@76YSThD_Q_n}|x>)-6tpe+%>N>5U`o zmbvA2bK`(Oa1B`NDPw0EhmPDz>!7-puBR>33~UWiXbx1_EDjim;tE>S@vXVn2oJi$ zu3uc+G5(4*MUjI=m8Wl6^^dtb-kml6^&8Jlv>#kLVPLb@FQQHUq!eMJ?I^lkR7RWZ zl4X~QU)l4PRU4p7wWJWyw$ncTYO-6GjlAL?VcaYNVIvt7VSKfH1u#4)+V)<64GoI6 zV-QIh4lB*}AbKg<*6xF+wy$}ULWX@winbffZZEUnUKX$25N+EXj<)R|6qfiz+nxvw zjJAEp6IFaAJz7u7XnS3>{Q~=fFJK~O`jJs-qi8bHGfzv#|P|ZuG!Tw`g=d|*x$W2VMh*>+Vuxk+m9Tmv|l{1 z#{T_tnmwa4ZhM}O+Ud^u_OqSC>~}g>+Z%tX*{hx!Z0~q#wf*)}Rd(gmtBbv!_On!n zhYlKHcv-VxT@^D= wO|x%)acT78(=6?Lu4X*BduUwFIc;k{JJu0C_P>qthAH1S%EjAa_c;Im0T{=V82|tP