diff --git a/ProxySU/MainWindow.xaml b/ProxySU/MainWindow.xaml index be9e36f..544ce0d 100644 --- a/ProxySU/MainWindow.xaml +++ b/ProxySU/MainWindow.xaml @@ -350,8 +350,8 @@ - - + + @@ -403,8 +403,8 @@ - - + + @@ -456,8 +456,8 @@ - - + + @@ -511,7 +511,7 @@ - + @@ -552,7 +552,7 @@ - + diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs index 62e669c..7b1d5a2 100644 --- a/ProxySU/MainWindow.xaml.cs +++ b/ProxySU/MainWindow.xaml.cs @@ -571,19 +571,19 @@ namespace ProxySU ConnectionInfo connectionInfo; #region 检测输入的内容是否有错,并读取内容 - if (string.IsNullOrEmpty(TextBoxHost.Text) == true || string.IsNullOrEmpty(TextBoxPort.Text) == true || string.IsNullOrEmpty(TextBoxUserName.Text) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxHost.Text)) == true || string.IsNullOrEmpty(PreTrim(TextBoxPort.Text)) == true || string.IsNullOrEmpty(PreTrim(TextBoxUserName.Text)) == true) { //******"主机地址、主机端口、用户名为必填项,不能为空"****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ErrorHostPortUserNotEmpty").ToString()); return connectionInfo = null; } - string sshHostName = TextBoxHost.Text.ToString(); + string sshHostName = PreTrim(TextBoxHost.Text); int sshPort = 22; - if (IsOnlyNumber(TextBoxPort.Text) == true) + if (IsOnlyNumber(PreTrim(TextBoxPort.Text)) == true) { - TextBoxPort.Text = TextBoxPort.Text.Trim(); + TextBoxPort.Text = PreTrim(TextBoxPort.Text); sshPort = int.Parse(TextBoxPort.Text); } else @@ -593,7 +593,7 @@ namespace ProxySU return connectionInfo = null; } - string sshUser = TextBoxUserName.Text.ToString(); + string sshUser = PreTrim(TextBoxUserName.Text); if (RadioButtonPasswordLogin.IsChecked == true && string.IsNullOrEmpty(PasswordBoxHostPassword.Password) == true) { @@ -630,18 +630,18 @@ namespace ProxySU } //MessageBox.Show(proxyTypes.ToString()); - if (RadioButtonNoProxy.IsChecked == false && (string.IsNullOrEmpty(TextBoxProxyHost.Text) == true || string.IsNullOrEmpty(TextBoxProxyPort.Text) == true)) + if (RadioButtonNoProxy.IsChecked == false && (string.IsNullOrEmpty(PreTrim(TextBoxProxyHost.Text)) == true || string.IsNullOrEmpty(PreTrim(TextBoxProxyPort.Text)) == true)) { //****** "如果选择了代理,则代理地址与端口不能为空!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ErrorProxyAddressPortNotEmpty").ToString()); return connectionInfo = null; } - string sshProxyHost = TextBoxProxyHost.Text.ToString(); + string sshProxyHost = PreTrim(TextBoxProxyHost.Text); int sshProxyPort = 1080; - if (IsOnlyNumber(TextBoxProxyPort.Text) == true) + if (IsOnlyNumber(PreTrim(TextBoxProxyPort.Text)) == true) { - TextBoxProxyPort.Text = TextBoxProxyPort.Text.Trim(); + TextBoxProxyPort.Text = PreTrim(TextBoxProxyPort.Text); sshProxyPort = int.Parse(TextBoxProxyPort.Text); } else @@ -651,14 +651,14 @@ namespace ProxySU return connectionInfo = null; } - if (RadioButtonNoProxy.IsChecked==false && RadiobuttonProxyYesLogin.IsChecked == true && (string.IsNullOrEmpty(TextBoxProxyUserName.Text) == true || string.IsNullOrEmpty(PasswordBoxProxyPassword.Password) == true)) + if (RadioButtonNoProxy.IsChecked==false && RadiobuttonProxyYesLogin.IsChecked == true && (string.IsNullOrEmpty(PreTrim(TextBoxProxyUserName.Text)) == true || string.IsNullOrEmpty(PasswordBoxProxyPassword.Password) == true)) { //****** "如果代理需要登录,则代理登录的用户名与密码不能为空!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ErrorProxyUserPasswordNotEmpty").ToString()); return connectionInfo = null; } - string sshProxyUser = TextBoxProxyUserName.Text.ToString(); - string sshProxyPassword = PasswordBoxProxyPassword.Password.ToString(); + string sshProxyUser = PreTrim(TextBoxProxyUserName.Text); + string sshProxyPassword = PasswordBoxProxyPassword.Password; #endregion @@ -971,11 +971,11 @@ namespace ProxySU TextBlockV2RayShowCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; TextBlockCurrentlySelectedPlanDomain.Visibility = Visibility.Hidden; } - //显示伪装网站(暂时不显示) + //显示伪装网站 private void ShowV2RayMaskSites() { - TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Hidden; + TextBlockV2RayShowCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanFakeWebsite.Visibility = Visibility.Visible; } //隐藏伪装网站 @@ -1002,7 +1002,7 @@ namespace ProxySU //生成客户端配置时,连接的服务主机的IP或者域名 if (String.IsNullOrEmpty(ReceiveConfigurationParameters[4])==true) { - ReceiveConfigurationParameters[4] = TextBoxHost.Text.ToString(); + ReceiveConfigurationParameters[4] = PreTrim(TextBoxHost.Text); testDomain = false; } //选择模板 @@ -1217,28 +1217,10 @@ namespace ProxySU client.RunCommand("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak"); UploadConfig(connectionInfo, serverConfig, upLoadPath); - //设置Caddyfile文件中的tls 邮箱,在caddy2中已经不需要设置。 + //设置Caddy配置文件 + functionResult = SetCaddyfile(client, upLoadPath); + if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } - //设置Caddy监听的随机端口 - string randomCaddyListenPortStr = randomCaddyListenPort.ToString(); - - sshShellCommand = $"sed -i 's/8800/{randomCaddyListenPortStr}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置域名 - sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/g' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置Path - sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[6]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置伪装网站 - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7]) == false) - { - sshShellCommand = $"sed -i 's/##sites##/proxy \\/ {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - } //****** "Caddy配置文件上传成功,OK!" ******32 SetUpProgressBarProcessing(70); currentStatus = Application.Current.FindResource("DisplayInstallInfo_UploadCaddyConfigOK").ToString(); @@ -2503,24 +2485,11 @@ namespace ProxySU upLoadPath = "/etc/caddy/Caddyfile"; UploadConfig(connectionInfo, caddyConfig, upLoadPath); - //设置Caddyfile文件中的tls 邮箱 + //设置Caddy配置文件 + functionResult = SetCaddyfile(client, upLoadPath); + if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } - //设置Caddy监听的随机端口 - string randomCaddyListenPortStr = randomCaddyListenPort.ToString(); - sshShellCommand = $"sed -i 's/8800/{randomCaddyListenPortStr}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置域名 - sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/g' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置伪装网站 - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7]) == false) - { - sshShellCommand = $"sed -i 's/##sites##/proxy \\/ {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - } //****** "Caddy配置文件上传成功,OK!" ****** SetUpProgressBarProcessing(70); currentStatus = Application.Current.FindResource("DisplayInstallInfo_UploadCaddyConfigOK").ToString(); @@ -2939,7 +2908,7 @@ namespace ProxySU { ReceiveConfigurationParameters[i] = ""; } - if (string.IsNullOrEmpty(TextBoxTrojanHostDomain.Text.ToString()) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxTrojanHostDomain.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); @@ -2949,23 +2918,10 @@ namespace ProxySU ReceiveConfigurationParameters[0] = "TrojanTLS2Web"; //传递域名 - ReceiveConfigurationParameters[4] = TextBoxTrojanHostDomain.Text.ToString(); + ReceiveConfigurationParameters[4] = PreTrim(TextBoxTrojanHostDomain.Text); //传递伪装网站 - ReceiveConfigurationParameters[7] = TextBoxTrojanSites.Text.ToString(); - //处理伪装网站域名中的前缀 - if (TextBoxTrojanSites.Text.ToString().Length >= 7) - { - string testDomain = TextBoxTrojanSites.Text.Substring(0, 7); - if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - { - //MessageBox.Show(testDomain); - ReceiveConfigurationParameters[7] = TextBoxTrojanSites.Text.Replace("/", "\\/"); - } - else - { - ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxTrojanSites.Text; - } - } + ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxTrojanSites.Text)); + //传递服务端口 ReceiveConfigurationParameters[1] = "443"; //传递密码(uuid) @@ -3171,23 +3127,10 @@ namespace ProxySU UploadConfig(connectionInfo, caddyConfig, upLoadPath); - //设置Caddy监听的随机端口 - string randomCaddyListenPortStr = randomCaddyListenPort.ToString(); + //设置Caddy配置文件 + functionResult = SetCaddyfile(client, upLoadPath); + if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } - sshShellCommand = $"sed -i 's/8800/{randomCaddyListenPortStr}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置域名 - - sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/g' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置伪装网站 - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7]) == false) - { - sshShellCommand = $"sed -i 's/##sites##/proxy \\/ {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - } //****** "Caddy配置文件上传成功,OK!" ****** SetUpProgressBarProcessing(70); currentStatus = Application.Current.FindResource("DisplayInstallInfo_UploadCaddyConfigOK").ToString(); @@ -3507,7 +3450,7 @@ namespace ProxySU //NaiveProxy一键安装开始传递参数 private void ButtonNavieSetUp_Click(object sender, RoutedEventArgs e) { - if (string.IsNullOrEmpty(TextBoxNaiveHostDomain.Text) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxNaiveHostDomain.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); @@ -3523,24 +3466,12 @@ namespace ProxySU } //传递参数 - ReceiveConfigurationParameters[4] = TextBoxNaiveHostDomain.Text;//传递域名 + ReceiveConfigurationParameters[4] = PreTrim(TextBoxNaiveHostDomain.Text);//传递域名 ReceiveConfigurationParameters[1] = "443";//传递端口 ReceiveConfigurationParameters[3] = TextBoxNaiveUser.Text;//传递用户名 ReceiveConfigurationParameters[2] = TextBoxNaivePassword.Text;//传递密码 - ReceiveConfigurationParameters[7] = TextBoxNaiveSites.Text;//传递伪装网站 - if (TextBoxNaiveSites.Text.ToString().Length >= 7) - { - string testDomain = TextBoxNaiveSites.Text.Substring(0, 7); - if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - { - //MessageBox.Show(testDomain); - ReceiveConfigurationParameters[7] = TextBoxNaiveSites.Text.Replace("/", "\\/"); - } - else - { - ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxNaiveSites.Text; - } - } + ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxNaiveSites.Text));//传递伪装网站 + //启动布署进程 installationDegree = 0; TextBoxMonitorCommandResults.Text = ""; @@ -3673,12 +3604,17 @@ namespace ProxySU UploadConfig(connectionInfo, caddyConfig, upLoadPath); //$"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/' {upLoadPath}" //$"sed -i 's/##basicauth##/basicauth {ReceiveConfigurationParameters[3]} {ReceiveConfigurationParameters[2]}/' {upLoadPath}" - sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + //设置Caddy配置文件 + functionResult = SetCaddyfile(client, upLoadPath); + if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } sshShellCommand = $"sed -i 's/##basicauth##/basic_auth {ReceiveConfigurationParameters[3]} {ReceiveConfigurationParameters[2]}/' {upLoadPath}"; currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + sshShellCommand = $"sed -i 's/file_server/#file_server/' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + //string caddyConfig = $"{pwdir}" + @"TemplateConfg\naive\naive_server_config.json"; //using (StreamReader reader = File.OpenText(caddyConfig)) //{ @@ -3901,7 +3837,7 @@ namespace ProxySU { ReceiveConfigurationParameters[i] = ""; } - if (string.IsNullOrEmpty(TextBoxSSRHostDomain.Text.ToString()) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxSSRHostDomain.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); @@ -3909,23 +3845,10 @@ namespace ProxySU } //传递域名 - ReceiveConfigurationParameters[4] = TextBoxSSRHostDomain.Text.ToString(); + ReceiveConfigurationParameters[4] = PreTrim(TextBoxSSRHostDomain.Text); //传递伪装网站 - ReceiveConfigurationParameters[7] = TextBoxSSRSites.Text.ToString(); - //处理伪装网站域名中的前缀 - if (TextBoxSSRSites.Text.ToString().Length >= 7) - { - string testDomain = TextBoxSSRSites.Text.Substring(0, 7); - if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - { - //MessageBox.Show(testDomain); - ReceiveConfigurationParameters[7] = TextBoxSSRSites.Text.Replace("/", "\\/"); - } - else - { - ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxSSRSites.Text; - } - } + ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxSSRSites.Text)); + //传递服务端口 ReceiveConfigurationParameters[1] = "443"; //传递密码(uuid) @@ -4072,21 +3995,9 @@ namespace ProxySU UploadConfig(connectionInfo, caddyConfig, upLoadPath); - //设置Caddy监听的随机端口 - string randomCaddyListenPortStr = randomCaddyListenPort.ToString(); - - sshShellCommand = $"sed -i 's/8800/{randomCaddyListenPortStr}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置域名 - sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/g' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - //设置伪装网站 - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7]) == false) - { - sshShellCommand = $"sed -i 's/##sites##/proxy \\/ {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - } + functionResult = SetCaddyfile(client, @"/etc/caddy/Caddyfile"); + if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } + //****** "Caddy配置文件上传成功,OK!" ****** SetUpProgressBarProcessing(70); currentStatus = Application.Current.FindResource("DisplayInstallInfo_UploadCaddyConfigOK").ToString(); @@ -4249,9 +4160,9 @@ namespace ProxySU //隐藏WebSocket路径 TextBlockShowPathSS.Visibility = Visibility.Hidden; TextBlockCurrentlySelectedPlanPathSS.Visibility = Visibility.Hidden; - //隐藏伪装网站 - TextBlockShowFakeWebsiteSS.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsiteSS.Visibility = Visibility.Hidden; + //显示伪装网站 + TextBlockShowFakeWebsiteSS.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanFakeWebsiteSS.Visibility = Visibility.Visible; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSWebFrontSS")) { @@ -4270,9 +4181,9 @@ namespace ProxySU //隐藏WebSocket路径 TextBlockShowPathSS.Visibility = Visibility.Visible; TextBlockCurrentlySelectedPlanPathSS.Visibility = Visibility.Visible; - //隐藏伪装网站 - TextBlockShowFakeWebsiteSS.Visibility = Visibility.Hidden; - TextBlockCurrentlySelectedPlanFakeWebsiteSS.Visibility = Visibility.Hidden; + //显示伪装网站 + TextBlockShowFakeWebsiteSS.Visibility = Visibility.Visible; + TextBlockCurrentlySelectedPlanFakeWebsiteSS.Visibility = Visibility.Visible; } } @@ -4294,7 +4205,7 @@ namespace ProxySU //生成客户端配置时,连接的服务主机的IP或者域名 if (String.IsNullOrEmpty(ReceiveConfigurationParameters[4]) == true) { - ReceiveConfigurationParameters[4] = TextBoxHost.Text.ToString(); + ReceiveConfigurationParameters[4] = PreTrim(TextBoxHost.Text); testDomain = false; } //选择模板 @@ -4734,28 +4645,10 @@ namespace ProxySU UploadConfig(connectionInfo, serverConfig, upLoadPath); - //设置Caddyfile文件中的tls 邮箱,在caddy2中已经不需要设置。 - - //设置Caddy监听的随机端口 - string randomCaddyListenPortStr = randomCaddyListenPort.ToString(); - - sshShellCommand = $"sed -i 's/8800/{randomCaddyListenPortStr}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置域名 - sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/g' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置Path - sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[3]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - - //设置伪装网站 - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7]) == false) - { - sshShellCommand = $"sed -i 's/##sites##/proxy \\/ {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - } + //设置Caddy配置文件 + functionResult = SetCaddyfile(client, @"/etc/caddy/Caddyfile"); + if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } + //****** "Caddy配置文件上传成功,OK!" ****** SetUpProgressBarProcessing(70); currentStatus = Application.Current.FindResource("DisplayInstallInfo_UploadCaddyConfigOK").ToString(); @@ -4840,17 +4733,17 @@ namespace ProxySU ReceiveConfigurationParameters[i] = ""; } //传递服务器地址 - ReceiveConfigurationParameters[4] = TextBoxHost.Text.ToString(); + ReceiveConfigurationParameters[4] = PreTrim(TextBoxHost.Text); ; //传递服务端口 - ReceiveConfigurationParameters[1] = TextBoxMtgHostDomain.Text; + ReceiveConfigurationParameters[1] = PreTrim(TextBoxMtgHostPort.Text); //传递伪装域名 - if (String.IsNullOrEmpty(TextBoxMtgSites.Text) == true) + if (String.IsNullOrEmpty(PreTrim(TextBoxMtgSites.Text)) == true) { ReceiveConfigurationParameters[7] = "azure.microsoft.com"; } else { - ReceiveConfigurationParameters[7] = TextBoxMtgSites.Text; + ReceiveConfigurationParameters[7] = PreTrim(TextBoxMtgSites.Text); } installationDegree = 0; TextBoxMonitorCommandResults.Text = ""; @@ -5059,6 +4952,11 @@ namespace ProxySU #endregion #region 其他功能函数及系统工具相关 + //TextBox输入内容做预处理 + private string PreTrim(string preString) + { + return preString.Trim(); + } //产生随机端口 private int GetRandomPort() { @@ -5157,6 +5055,25 @@ namespace ProxySU } } + //伪装网站处理 + private string DisguiseURLprocessing(string fakeUrl) + { + //处理伪装网站域名中的前缀 + if (fakeUrl.Length >= 7) + { + string testDomainMask = fakeUrl.Substring(0, 7); + if (String.Equals(testDomainMask, "https:/") || String.Equals(testDomainMask, "http://")) + { + //MessageBox.Show(testDomain); + string[] tmpUrl = fakeUrl.Split('/'); + //MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); + fakeUrl = tmpUrl[2]; + } + + } + return fakeUrl; + } + #region 检测系统内核是否符合安装要求 //private static bool DetectKernelVersion(string kernelVer) //{ @@ -6165,7 +6082,7 @@ namespace ProxySU return; } - ReceiveConfigurationParameters[4] = TextBoxHost.Text;//传递主机地址 + ReceiveConfigurationParameters[4] = PreTrim(TextBoxHost.Text); ;//传递主机地址 ReceiveConfigurationParameters[2] = PasswordBoxHostPassword.Password;//传递当前账户密码 installationDegree = 0; @@ -6358,7 +6275,7 @@ namespace ProxySU return; } - ReceiveConfigurationParameters[4] = TextBoxHost.Text;//传递主机地址 + ReceiveConfigurationParameters[4] = PreTrim(TextBoxHost.Text);//传递主机地址 ReceiveConfigurationParameters[2] = PasswordBoxHostPassword.Password; installationDegree = 0; @@ -6655,7 +6572,7 @@ namespace ProxySU return; } - ReceiveConfigurationParameters[4] = TextBoxHost.Text;//传递主机地址 + ReceiveConfigurationParameters[4] = PreTrim(TextBoxHost.Text);//传递主机地址 ReceiveConfigurationParameters[2] = PasswordBoxHostPassword.Password;//传递主机密码 installationDegree = 0; @@ -6837,7 +6754,7 @@ namespace ProxySU SaveFileDialog dlg = new SaveFileDialog(); dlg.Title = title; string localTime = DateTime.Now.ToLocalTime().ToString().Replace(' ', '-').Replace(':', '-').Replace('/', '-').Replace('\\', '-'); - dlg.FileName = $"{TextBoxHost.Text.Replace(':', '_')}_{localTime}.txt"; // Default file name + dlg.FileName = $"{PreTrim(TextBoxHost.Text).Replace(':', '_')}_{localTime}.txt"; // Default file name dlg.DefaultExt = ".txt"; // Default file extension dlg.Filter = "Text documents|*.txt"; // Filter files by extension dlg.InitialDirectory = initFolder; @@ -7913,11 +7830,11 @@ namespace ProxySU return false; } - sshShellCommand = @"cd ~/.acme.sh/"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + //sshShellCommand = @"cd ~/.acme.sh/"; + //currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); - sshShellCommand = @"alias acme.sh=~/.acme.sh/acme.sh"; - currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + //sshShellCommand = @"alias acme.sh=~/.acme.sh/acme.sh"; + //currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); //****** "申请域名证书......" ******24 SetUpProgressBarProcessing(55); @@ -8064,6 +7981,45 @@ namespace ProxySU return true; } + //设置Caddy配置文件 + //functionResult = SetCaddyfile(client, @"/etc/caddy/Caddyfile"); + //if (functionResult == false) { FunctionResultErr(); client.Disconnect(); return; } + private bool SetCaddyfile(SshClient client,string upLoadPath) + { + + //设置Caddyfile文件中的tls 邮箱,在caddy2中已经不需要设置。 + + //设置Caddy监听的随机端口 + string randomCaddyListenPortStr = randomCaddyListenPort.ToString(); + + sshShellCommand = $"sed -i 's/8800/{randomCaddyListenPortStr}/' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + //设置域名 + ReceiveConfigurationParameters[4] = ReceiveConfigurationParameters[4].TrimEnd(' '); + sshShellCommand = $"sed -i 's/##domain##/{ReceiveConfigurationParameters[4]}/g' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + //设置Path + sshShellCommand = $"sed -i 's/##path##/\\{ReceiveConfigurationParameters[6]}/' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + //设置伪装网站 + if (String.IsNullOrEmpty(ReceiveConfigurationParameters[7]) == false) + { + sshShellCommand = $"sed -i 's/##reverse_Proxy1##/reverse_proxy http:\\/\\/{ReceiveConfigurationParameters[7]} {{/ ' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + sshShellCommand = $"sed -i 's/##reverse_Proxy2##/header_up Host {ReceiveConfigurationParameters[7]}/' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + sshShellCommand = $"sed -i 's/##reverse_Proxy3##/}}/' {upLoadPath}"; + currentShellCommandResult = MainWindowsShowCmd(client, sshShellCommand); + + } + return true; + } + //程序启动检测 //soft--要检测的程序 //condition---成功启动的条件 diff --git a/ProxySU/SSpluginWindow.xaml b/ProxySU/SSpluginWindow.xaml index 509bd33..e750198 100644 --- a/ProxySU/SSpluginWindow.xaml +++ b/ProxySU/SSpluginWindow.xaml @@ -265,8 +265,8 @@ - - + + diff --git a/ProxySU/SSpluginWindow.xaml.cs b/ProxySU/SSpluginWindow.xaml.cs index 44b1131..a2f42f9 100644 --- a/ProxySU/SSpluginWindow.xaml.cs +++ b/ProxySU/SSpluginWindow.xaml.cs @@ -72,21 +72,20 @@ namespace ProxySU //伪装网站处理 - private void DisguiseURLprocessing() + private string DisguiseURLprocessing(string fakeUrl) { //处理伪装网站域名中的前缀 - if (TextBoxMaskSites.Text.ToString().Length >= 7) + if (fakeUrl.Length >= 7) { - string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) + string testDomainMask = fakeUrl.Substring(0, 7); + if (String.Equals(testDomainMask, "https:/") || String.Equals(testDomainMask, "http://")) { - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - } - else - { - MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; + string[] tmpUrl = fakeUrl.Split('/'); + fakeUrl = tmpUrl[2]; } + } + return fakeUrl; } private void ButtondDecide_Click(object sender, RoutedEventArgs e) @@ -114,19 +113,16 @@ namespace ProxySU //SS+obfs+TLS+web模式被选中 else if (RadioButtonObfsPluginHttpsWebSS.IsChecked == true) { - //if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true) - //{ - // //****** "域名不能为空,请检查相关参数设置!" ****** - // MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); - // return; - //} + testDomain = TestDomainIsEmpty(); //传递模板类型 MainWindow.ReceiveConfigurationParameters[0] = "ObfsPluginHttpsWebSS"; //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonObfsPluginHttpsWebSS.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomainSS.Text); + //传递伪装网站 + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } @@ -138,7 +134,7 @@ namespace ProxySU //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketSS.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxWebSocketPathSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxWebSocketPathSS.Text); } //V2Ray-Plugin SS+WebSocket+TLS+Web模式被选中 @@ -151,26 +147,12 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLSWebFrontSS.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxWebSocketPathSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxWebSocketPathSS.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomainSS.Text); //传递伪装网站 - //MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - //DisguiseURLprocessing(); - //if (TextBoxMaskSites.Text.ToString().Length >= 7) - //{ - // string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - // if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - // { - // //MessageBox.Show(testDomain); - // MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - // } - // else - // { - // MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; - // } - //} + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); + } //V2Ray-Plugin SS+QUIC模式被选中 else if (RadioButtonQuicSS.IsChecked == true) @@ -182,7 +164,7 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonQuicSS.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomainSS.Text); } //SS+kcptun-plugin模式被选中 @@ -203,7 +185,7 @@ namespace ProxySU //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonGoQuietPluginSS.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomainSS.Text); } //SS+Cloak-Plugin模式被选中 @@ -215,14 +197,14 @@ namespace ProxySU //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonCloakPluginSS.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomainSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomainSS.Text); } //传递服务端口 - MainWindow.ReceiveConfigurationParameters[1] = TextBoxServerListenPortSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[1] = PreTrim(TextBoxServerListenPortSS.Text); //传递uuid密码 - MainWindow.ReceiveConfigurationParameters[2] = TextBoxNewUUIDSS.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[2] = PreTrim(TextBoxNewUUIDSS.Text); //传递加密方式 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); @@ -278,9 +260,9 @@ namespace ProxySU TextBoxDomainSS.Visibility = Visibility.Visible; //检测域名按钮 ButtonDomain.Visibility = Visibility.Collapsed; - //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + //显示伪装网站 + TextBlockMaskSites.Visibility = Visibility.Visible; + TextBoxMaskSites.Visibility = Visibility.Visible; //初始化密码 TextBoxNewUUIDSS.Text = GenerateRandomUUID(); @@ -290,7 +272,6 @@ namespace ProxySU UncheckLayouts((TabItem)TabControlTemplate.SelectedItem); } - //使用V2ray-plugin 的Websocket over https (TLS) private void RadioButtonUseDomainWebsocketTls_Checked(object sender, RoutedEventArgs e) { @@ -306,9 +287,9 @@ namespace ProxySU TextBoxDomainSS.Visibility = Visibility.Visible; //检测域名按钮 ButtonDomain.Visibility = Visibility.Collapsed; - //隐藏伪装网站 - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + //显示伪装网站 + TextBlockMaskSites.Visibility = Visibility.Visible; + TextBoxMaskSites.Visibility = Visibility.Visible; //初始化密码 TextBoxNewUUIDSS.Text = GenerateRandomUUID(); @@ -386,10 +367,16 @@ namespace ProxySU #endregion + //TextBox输入内容做预处理 + private string PreTrim(string preString) + { + return preString.Trim(); + } + //域名检测是否为空 private bool TestDomainIsEmpty() { - if (string.IsNullOrEmpty(TextBoxDomainSS.Text.ToString()) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxDomainSS.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); diff --git a/ProxySU/TrojanGoTemplateWindow.xaml b/ProxySU/TrojanGoTemplateWindow.xaml index 9bcf057..e85fb44 100644 --- a/ProxySU/TrojanGoTemplateWindow.xaml +++ b/ProxySU/TrojanGoTemplateWindow.xaml @@ -109,8 +109,8 @@ - - + + diff --git a/ProxySU/TrojanGoTemplateWindow.xaml.cs b/ProxySU/TrojanGoTemplateWindow.xaml.cs index b0510ee..16dffb5 100644 --- a/ProxySU/TrojanGoTemplateWindow.xaml.cs +++ b/ProxySU/TrojanGoTemplateWindow.xaml.cs @@ -28,35 +28,21 @@ namespace ProxySU } private void ButtondDecide_Click(object sender, RoutedEventArgs e) { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxDomain.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); return; } //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); - //处理伪装网站域名中的前缀 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - - if (TextBoxMaskSites.Text.ToString().Length >= 7) - { - string testDomain = TextBoxMaskSites.Text.Substring(0, 7); - if (String.Equals(testDomain, "https:/") || String.Equals(testDomain, "http://")) - { - //MessageBox.Show(testDomain); - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - } - else - { - MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; - } - } + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); + //传递伪装网站 + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); //传递服务端口 MainWindow.ReceiveConfigurationParameters[1] = "443"; //传递密码(uuid) - MainWindow.ReceiveConfigurationParameters[2] = TextBoxNewUUID.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[2] = PreTrim(TextBoxNewUUID.Text); if (RadioButtonTrojanGoTLS2Web.IsChecked == true) { //传递模板类型 @@ -72,14 +58,14 @@ namespace ProxySU //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTrojanGoWebSocketTLS2Web.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); } //传递Mux的concurrency与idle_timeout if (CheckBoxMuxSelect.IsChecked == true) { MainWindow.ReceiveConfigurationParameters[9] = "true"; - MainWindow.ReceiveConfigurationParameters[3] = TextBoxConcurrency.Text; - MainWindow.ReceiveConfigurationParameters[5] = TextBoxIdle_timeout.Text; + MainWindow.ReceiveConfigurationParameters[3] = PreTrim(TextBoxConcurrency.Text); + MainWindow.ReceiveConfigurationParameters[5] = PreTrim(TextBoxIdle_timeout.Text); } this.Close(); } @@ -150,7 +136,7 @@ namespace ProxySU //域名检测是否为空 private bool TestDomainIsEmpty() { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxDomain.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); @@ -173,5 +159,28 @@ namespace ProxySU GridTrojanGoMuxSelected.Visibility = Visibility.Collapsed; TextBlockExplainCheckBoxMuxSelect.Visibility = Visibility.Collapsed; } + + //TextBox输入内容做预处理 + private string PreTrim(string preString) + { + return preString.Trim(); + } + + //处理伪装网站域名中的前缀 + private string DisguiseURLprocessing(string fakeUrl) + { + + if (fakeUrl.Length >= 7) + { + string testDomainMask = fakeUrl.Substring(0, 7); + if (String.Equals(testDomainMask, "https:/") || String.Equals(testDomainMask, "http://")) + { + string[] tmpUrl = fakeUrl.Split('/'); + fakeUrl = tmpUrl[2]; + } + + } + return fakeUrl; + } } } diff --git a/ProxySU/V2RayTemplateWindow.xaml b/ProxySU/V2RayTemplateWindow.xaml index d91612d..09724d2 100644 --- a/ProxySU/V2RayTemplateWindow.xaml +++ b/ProxySU/V2RayTemplateWindow.xaml @@ -372,8 +372,8 @@ - - + + diff --git a/ProxySU/V2RayTemplateWindow.xaml.cs b/ProxySU/V2RayTemplateWindow.xaml.cs index 2313de9..e82f85b 100644 --- a/ProxySU/V2RayTemplateWindow.xaml.cs +++ b/ProxySU/V2RayTemplateWindow.xaml.cs @@ -111,7 +111,7 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTCP2TLS.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); } @@ -124,7 +124,7 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonTcpTLS2SelfSigned.Content.ToString(); //传递域名 - // MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + // MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); } @@ -143,12 +143,10 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessXtlsTcp.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); - + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); + } //VLESS+TCP+TLS+Web模式选中 @@ -162,11 +160,9 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessTcpTlsWeb.Content.ToString(); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } @@ -181,13 +177,11 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessWebSocketTlsWeb.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } //VLESS+http2+TLS+Web模式选中 @@ -201,13 +195,11 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessHttp2Web.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } //VLESS+VMESS+XTLS+TCP+WebSocket+Web模式被选中 @@ -219,18 +211,16 @@ namespace ProxySU //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonVlessVmessXtlsTcpWebSocketHot.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[3] = TextBoxPathVlessWS.Text.ToString();//VLESS ws Path - MainWindow.ReceiveConfigurationParameters[9] = TextBoxPathVmessTcp.Text.ToString();//VMESS tcp Path - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPathVmessWS.Text.ToString();//VMESS ws Path + MainWindow.ReceiveConfigurationParameters[3] = PreTrim(TextBoxPathVlessWS.Text);//VLESS ws Path + MainWindow.ReceiveConfigurationParameters[9] = PreTrim(TextBoxPathVmessTcp.Text);//VMESS tcp Path + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPathVmessWS.Text);//VMESS ws Path //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递混淆方式(VMESS TCP Path方式所用) MainWindow.ReceiveConfigurationParameters[5] = "http"; //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } @@ -258,9 +248,9 @@ namespace ProxySU //传递方案名称 MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLS.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); } @@ -275,13 +265,11 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLS2Web.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } @@ -294,9 +282,9 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonWebSocketTLSselfSigned.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - //MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + //MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); } @@ -315,9 +303,9 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); } @@ -332,13 +320,11 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2Web.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); //传递伪装网站 - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.ToString(); - //处理伪装网站域名中的前缀 - DisguiseURLprocessing(); + MainWindow.ReceiveConfigurationParameters[7] = DisguiseURLprocessing(PreTrim(TextBoxMaskSites.Text)); } @@ -351,9 +337,9 @@ namespace ProxySU MainWindow.ReceiveConfigurationParameters[8] = RadioButtonHTTP2selfSigned.Content.ToString(); //传递路径 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxPath.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxPath.Text); //传递域名 - //MainWindow.ReceiveConfigurationParameters[4] = TextBoxDomain.Text.ToString(); + //MainWindow.ReceiveConfigurationParameters[4] = PreTrim(TextBoxDomain.Text); } @@ -371,9 +357,9 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "none"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text)==false) + if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) ==false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); } } @@ -387,9 +373,9 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "srtp"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) + if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); } } @@ -403,9 +389,9 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "utp"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) + if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); } } @@ -419,9 +405,9 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wechat-video"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) + if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); } } @@ -435,9 +421,9 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "dtls"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) + if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); } } @@ -451,9 +437,9 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wireguard"; //传递mKCP Seed - if (String.IsNullOrEmpty(TextBoxQuicAndMkcpSeedUUID.Text) == false) + if (String.IsNullOrEmpty(PreTrim(TextBoxQuicAndMkcpSeedUUID.Text)) == false) { - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); } } @@ -471,7 +457,7 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "none"; //QUIC 密钥 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); //QUIC加密方法 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } @@ -486,7 +472,7 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "srtp"; //QUIC 密钥 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); //QUIC加密方法 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } @@ -501,7 +487,7 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "utp"; //QUIC 密钥 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); //QUIC加密方法 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } @@ -516,7 +502,7 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wechat-video"; //QUIC 密钥 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); //QUIC加密方法 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } @@ -531,7 +517,7 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "dtls"; //QUIC 密钥 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); //QUIC加密方法 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } @@ -546,7 +532,7 @@ namespace ProxySU //传递伪装类型 MainWindow.ReceiveConfigurationParameters[5] = "wireguard"; //QUIC 密钥 - MainWindow.ReceiveConfigurationParameters[6] = TextBoxQuicAndMkcpSeedUUID.Text; + MainWindow.ReceiveConfigurationParameters[6] = PreTrim(TextBoxQuicAndMkcpSeedUUID.Text); //QUIC加密方法 MainWindow.ReceiveConfigurationParameters[3] = GetEncryptionMethodSS(); } @@ -554,9 +540,9 @@ namespace ProxySU #endregion //传递服务端口 - MainWindow.ReceiveConfigurationParameters[1] = TextBoxServerListenPort.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[1] = PreTrim(TextBoxServerListenPort.Text); //传递uuid - MainWindow.ReceiveConfigurationParameters[2] = TextBoxNewUUID.Text.ToString(); + MainWindow.ReceiveConfigurationParameters[2] = PreTrim(TextBoxNewUUID.Text); if (RadioButtonVLESSmKCP.IsChecked == true) { @@ -579,24 +565,23 @@ namespace ProxySU //伪装网站处理 - private void DisguiseURLprocessing() + //DisguiseURLprocessing(string fakeUrl); + private string DisguiseURLprocessing(string fakeUrl) { //处理伪装网站域名中的前缀 - if (TextBoxMaskSites.Text.ToString().Length >= 7) + if (fakeUrl.Length >= 7) { - string testDomainMask = TextBoxMaskSites.Text.Substring(0, 7); + string testDomainMask = fakeUrl.Substring(0, 7); if (String.Equals(testDomainMask, "https:/") || String.Equals(testDomainMask, "http://")) { - //MessageBox.Show(testDomain); - MainWindow.ReceiveConfigurationParameters[7] = TextBoxMaskSites.Text.Replace("/", "\\/"); - } - else - { - MainWindow.ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxMaskSites.Text; + string[] tmpUrl = fakeUrl.Split('/'); + fakeUrl = tmpUrl[2]; } + } + return fakeUrl; } - + #region 其他设置中的界面控制 private void RadioButtonTCP_Checked(object sender, RoutedEventArgs e) @@ -1022,8 +1007,8 @@ namespace ProxySU //显示伪装网站 private void ShowMaskSites() { - TextBlockMaskSites.Visibility = Visibility.Collapsed; - TextBoxMaskSites.Visibility = Visibility.Collapsed; + TextBlockMaskSites.Visibility = Visibility.Visible; + TextBoxMaskSites.Visibility = Visibility.Visible; } #endregion @@ -1065,7 +1050,11 @@ namespace ProxySU path = GenerateRandomPath(); TextBoxPathVmessWS.Text = $"/{path}"; } - + //TextBox输入内容做预处理 + private string PreTrim(string preString) + { + return preString.Trim(); + } //生成随机端口 private int GetRandomPort() { @@ -1094,7 +1083,7 @@ namespace ProxySU //域名检测是否为空 private bool TestDomainIsEmpty() { - if (string.IsNullOrEmpty(TextBoxDomain.Text.ToString()) == true) + if (string.IsNullOrEmpty(PreTrim(TextBoxDomain.Text)) == true) { //****** "域名不能为空,请检查相关参数设置!" ****** MessageBox.Show(Application.Current.FindResource("MessageBoxShow_DomainNotEmpty").ToString()); diff --git a/ProxySU/bin/Beta/Beta.zip b/ProxySU/bin/Beta/Beta.zip index 568c585..eefb63a 100644 Binary files a/ProxySU/bin/Beta/Beta.zip and b/ProxySU/bin/Beta/Beta.zip differ