mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-25 14:46:08 +03:00
修改v2ray客户端配置文件生成方式
This commit is contained in:
parent
6b4fed0592
commit
02b6b478ac
@ -115,6 +115,7 @@
|
||||
<Button Content="测试结果窗口" Grid.Column="0" Grid.Row="1" Margin="10" Click="Button_Click_1"></Button>
|
||||
<Button Content="测试ssh命令" Grid.Column="1" Grid.Row="0" Margin="10" Click="Button_Click_2"></Button>
|
||||
<Button Content="测试生成v2rayN导入格式" Grid.Column="2" Grid.Row="0" Margin="10" Click="Button_Click_3"></Button>
|
||||
<Button Content="测试生成config.json文件" Grid.Column="1" Grid.Row="1" Margin="10" Click="Button_Click_4"></Button>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
@ -585,15 +585,46 @@ namespace ProxySU
|
||||
currentStatus = "生成客户端配置......";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
upLoadPath = "/tmp/config.json";
|
||||
UploadConfig(connectionInfo, clientConfig, upLoadPath);
|
||||
if (!Directory.Exists("config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
Directory.CreateDirectory("config");//创建该文件夹
|
||||
}
|
||||
//string clientConfig = "TemplateConfg\\tcp_client_config.json";
|
||||
using (StreamReader reader = File.OpenText(clientConfig))
|
||||
{
|
||||
JObject clientJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
|
||||
// do stuff
|
||||
//MessageBox.Show(clientJson.ToString());
|
||||
clientJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
clientJson["outbounds"][0]["settings"]["vnext"][0]["port"] = ReceiveConfigurationParameters[1];
|
||||
clientJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
if (clientJson.Property("path") != null)
|
||||
{
|
||||
//成员path存在
|
||||
clientJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
|
||||
client.RunCommand("sed -i 's/##port##/" + ReceiveConfigurationParameters[1] + "/' " + upLoadPath);
|
||||
client.RunCommand("sed -i 's/##uuid##/" + ReceiveConfigurationParameters[2] + "/' " + upLoadPath);
|
||||
client.RunCommand("sed -i 's/##path##/\\" + ReceiveConfigurationParameters[3] + "/' " + upLoadPath);
|
||||
client.RunCommand("sed -i 's/##domain##/" + ReceiveConfigurationParameters[4] + "/' " + upLoadPath);
|
||||
client.RunCommand("sed -i 's/##mkcpHeaderType##/" + ReceiveConfigurationParameters[5] + "/' " + upLoadPath);
|
||||
DownloadConfig(connectionInfo, "config\\config.json", upLoadPath);
|
||||
}
|
||||
if (clientJson.Property("type") != null)
|
||||
{
|
||||
//成员type存在
|
||||
clientJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5];
|
||||
|
||||
}
|
||||
|
||||
using (StreamWriter sw = new StreamWriter(@"config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
//upLoadPath = "/tmp/config.json";
|
||||
//UploadConfig(connectionInfo, clientConfig, upLoadPath);
|
||||
|
||||
//client.RunCommand("sed -i 's/##port##/" + ReceiveConfigurationParameters[1] + "/' " + upLoadPath);
|
||||
//client.RunCommand("sed -i 's/##uuid##/" + ReceiveConfigurationParameters[2] + "/' " + upLoadPath);
|
||||
//client.RunCommand("sed -i 's/##path##/\\" + ReceiveConfigurationParameters[3] + "/' " + upLoadPath);
|
||||
//client.RunCommand("sed -i 's/##domain##/" + ReceiveConfigurationParameters[4] + "/' " + upLoadPath);
|
||||
//client.RunCommand("sed -i 's/##mkcpHeaderType##/" + ReceiveConfigurationParameters[5] + "/' " + upLoadPath);
|
||||
//DownloadConfig(connectionInfo, "config.json", upLoadPath);
|
||||
|
||||
client.Disconnect();
|
||||
|
||||
@ -870,6 +901,41 @@ namespace ProxySU
|
||||
//MessageBox.Show(v2rayNjsonObject["v"].ToString());
|
||||
|
||||
}
|
||||
|
||||
private void Button_Click_4(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!Directory.Exists("config"))//如果不存在就创建file文件夹
|
||||
{
|
||||
Directory.CreateDirectory("config");//创建该文件夹
|
||||
}
|
||||
string clientConfig= "TemplateConfg\\tcp_client_config.json";
|
||||
using (StreamReader reader = File.OpenText(clientConfig))
|
||||
{
|
||||
JObject clientJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
|
||||
// do stuff
|
||||
MessageBox.Show(clientJson.ToString());
|
||||
clientJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4];
|
||||
clientJson["outbounds"][0]["settings"]["vnext"][0]["port"] = ReceiveConfigurationParameters[1];
|
||||
clientJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2];
|
||||
if (clientJson.Property("path") != null)
|
||||
{
|
||||
//成员path存在
|
||||
clientJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3];
|
||||
|
||||
}
|
||||
if (clientJson.Property("type") != null)
|
||||
{
|
||||
//成员type存在
|
||||
clientJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5];
|
||||
|
||||
}
|
||||
|
||||
using (StreamWriter sw = new StreamWriter(@"config\config.json"))
|
||||
{
|
||||
sw.Write(clientJson.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ProxySU"
|
||||
mc:Ignorable="d"
|
||||
Title="ResultClientInformation" Height="400" Width="600">
|
||||
Title="ResultClientInformation" Height="650" Width="600">
|
||||
<Grid>
|
||||
<GroupBox Header="服务器连接配置">
|
||||
<Grid>
|
||||
@ -26,6 +26,13 @@
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="地址(address)" Grid.Column="0" Grid.Row="0" Margin="8"></TextBlock>
|
||||
<TextBox x:Name="TextBoxHostAddress" IsReadOnly="True" Grid.Column="1" Grid.Row="0" Margin="8"></TextBox>
|
||||
@ -48,14 +55,26 @@
|
||||
<TextBlock Text="伪装类型" Grid.Column="0" Grid.Row="6" Margin="8"></TextBlock>
|
||||
<TextBox x:Name="TextBoxCamouflageType" IsReadOnly="True" Grid.Column="1" Grid.Row="6" Margin="8"></TextBox>
|
||||
<TextBlock Text="说明" Grid.Column="2" Grid.Row="6"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockPath" Text="路径(Path)" Grid.Column="0" Grid.Row="7" Margin="8"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPath" IsReadOnly="True" Grid.Column="1" Grid.Row="7" Margin="8"></TextBox>
|
||||
<TextBlock x:Name="TextBlockPathExplain" Text="说明" Grid.Column="2" Grid.Row="7"></TextBlock>
|
||||
<TextBlock x:Name="TextBlocTLSonOrNo" Text="是否使用TLS" Grid.Column="0" Grid.Row="8" Margin="8"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTLS" IsReadOnly="True" Grid.Column="1" Grid.Row="8" Margin="8"></TextBox>
|
||||
<TextBlock x:Name="TextBlocTLSonOrNoExplain" Text="说明" Grid.Column="2" Grid.Row="8"></TextBlock>
|
||||
<TextBlock x:Name="TextBlocTLSonOrNo" Text="是否使用TLS" Grid.Column="0" Grid.Row="7" Margin="8"></TextBlock>
|
||||
<TextBox x:Name="TextBoxTLS" IsReadOnly="True" Grid.Column="1" Grid.Row="7" Margin="8"></TextBox>
|
||||
<TextBlock x:Name="TextBlocTLSonOrNoExplain" Text="说明" Grid.Column="2" Grid.Row="7"></TextBlock>
|
||||
<TextBlock x:Name="TextBlockPath" Text="路径(Path)" Grid.Column="0" Grid.Row="8" Margin="8"></TextBlock>
|
||||
<TextBox x:Name="TextBoxPath" IsReadOnly="True" Grid.Column="1" Grid.Row="8" Margin="8"></TextBox>
|
||||
<TextBlock x:Name="TextBlockPathExplain" Text="说明" Grid.Column="2" Grid.Row="8"></TextBlock>
|
||||
|
||||
<TextBlock Text="以上参数可以手动输入客户端,用于V2ray官方客户端的配置文件已经存放入config目录下,点击确定可打开" Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="2" TextWrapping="Wrap"></TextBlock>
|
||||
<Button Content="确定" Grid.Column="2" Grid.Row="9" Grid.RowSpan="2" Margin="20" Click="Button_Click"></Button>
|
||||
<Grid Grid.Column="0" Grid.Row="11" Grid.ColumnSpan="2" Grid.RowSpan="7">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="85"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="二维码和vmess链接可用于

v2rayN(windows)

Shadowrocket(ios)

v2rayNG(Android)

导入v2ray节点" TextWrapping="Wrap" Grid.Column="0"></TextBlock>
|
||||
<Image x:Name="ImageShareQRcode" Grid.Column="1"></Image>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<TextBox x:Name="TextBoxvVmessUrl" TextWrapping="Wrap" Grid.Column="2" Grid.Row="11" Grid.RowSpan="7"></TextBox>
|
||||
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
@ -26,6 +26,7 @@ namespace ProxySU
|
||||
/// </summary>
|
||||
public partial class ResultClientInformation : Window
|
||||
{
|
||||
private string saveFileFolder = "";
|
||||
public ResultClientInformation()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -121,8 +122,12 @@ namespace ProxySU
|
||||
TextBoxTLS.Text = "none";
|
||||
HidePathAndTLS();
|
||||
}
|
||||
|
||||
GenerateV2rayNshareQRcodeAndBase64Url();
|
||||
CheckDir("config");
|
||||
//if (!Directory.Exists("config"))//如果不存在就创建file文件夹
|
||||
//{
|
||||
// Directory.CreateDirectory("config");//创建该文件夹
|
||||
//}
|
||||
GenerateV2rayShareQRcodeAndBase64Url();
|
||||
|
||||
}
|
||||
private void HidePathAndTLS()
|
||||
@ -144,7 +149,7 @@ namespace ProxySU
|
||||
//TextBlocTLSonOrNoExplain.Visibility = Visibility.Visible;
|
||||
}
|
||||
//生成v2rayN客户端导入文件
|
||||
private void GenerateV2rayNshareQRcodeAndBase64Url()
|
||||
private void GenerateV2rayShareQRcodeAndBase64Url()
|
||||
{
|
||||
//生成v2rayN的json文件
|
||||
string v2rayNjsonFile = @"
|
||||
@ -176,16 +181,45 @@ namespace ProxySU
|
||||
v2rayNjsonObject["ps"] = v2rayNjsonObject["add"]; //设置备注
|
||||
//MessageBox.Show(v2rayNjsonObject["v"].ToString());
|
||||
|
||||
|
||||
MessageBox.Show(v2rayNjsonObject.ToString());
|
||||
saveFileFolder = v2rayNjsonObject["ps"].ToString();
|
||||
CheckDir(@"config\" + saveFileFolder);
|
||||
//MessageBox.Show(v2rayNjsonObject.ToString());
|
||||
string vmessUrl = "vmess://" + ToBase64Encode(v2rayNjsonObject.ToString());
|
||||
using (StreamWriter sw = new StreamWriter(@"config\v2rayNvmessUrl.txt"))
|
||||
TextBoxvVmessUrl.Text = vmessUrl;
|
||||
using (StreamWriter sw = new StreamWriter($"config\\{saveFileFolder}\\url.txt"))
|
||||
{
|
||||
sw.WriteLine(vmessUrl);
|
||||
|
||||
}
|
||||
CreateQRCode(vmessUrl);
|
||||
|
||||
if (File.Exists(@"config\config.json"))
|
||||
{
|
||||
File.Move(@"config\config.json", @"config\" + saveFileFolder + @"\config.json");
|
||||
//File.Delete(@"config\config.json");//删除该文件
|
||||
}
|
||||
|
||||
using (StreamWriter sw = new StreamWriter($"config\\{saveFileFolder}\\说明.txt"))
|
||||
{
|
||||
sw.WriteLine("config.json");
|
||||
sw.WriteLine("此文件为v2ray官方程序所使用的客户端配置文件,配置为全局模式,socks5地址:127.0.0.1:1080,http代理地址:127.0.0.1:1081");
|
||||
sw.WriteLine("v2ray官方网站:https://www.v2ray.com/");
|
||||
sw.WriteLine("v2ray官方程序下载地址:https://github.com/v2ray/v2ray-core/releases");
|
||||
sw.WriteLine("下载相应版本,Windows选择v2ray-windows-64.zip或者v2ray-windows-32.zip,解压后提取v2ctl.exe和v2ray.exe。与config.json放在同一目录,运行v2ray.exe即可。");
|
||||
sw.WriteLine("-----------------------------------------");
|
||||
sw.WriteLine("QR.bmp");
|
||||
sw.WriteLine("此文件为v2rayN、v2rayNG(Android)、Shadowrocket(ios)扫码导入节点");
|
||||
sw.WriteLine("v2rayN下载网址:https://github.com/2dust/v2rayN/releases");
|
||||
sw.WriteLine("v2rayNG(Android)下载网址:https://github.com/2dust/v2rayNG/releases");
|
||||
sw.WriteLine("v2rayNG(Android)在Google Play下载网址:https://play.google.com/store/apps/details?id=com.v2ray.ang");
|
||||
sw.WriteLine("Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。");
|
||||
|
||||
sw.WriteLine("-----------------------------------------");
|
||||
sw.WriteLine("url.txt");
|
||||
sw.WriteLine("此文件为v2rayN、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
//生成base64
|
||||
@ -207,8 +241,28 @@ namespace ProxySU
|
||||
QRCodeData qrCodeData = qrGenerator.CreateQrCode(varBase64, QRCodeGenerator.ECCLevel.Q);
|
||||
QRCode qrCode = new QRCode(qrCodeData);
|
||||
Bitmap qrCodeImage = qrCode.GetGraphic(20);
|
||||
qrCodeImage.Save(@"config\v2rayN.bmp");
|
||||
IntPtr myImagePtr = qrCodeImage.GetHbitmap();
|
||||
BitmapSource imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(myImagePtr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
|
||||
ImageShareQRcode.Source = imgsource;
|
||||
//DeleteObject(myImagePtr);
|
||||
qrCodeImage.Save($"config\\{saveFileFolder}\\QR.bmp");
|
||||
//ImageShareQRcode.Source = @"config\v2rayN.bmp";
|
||||
}
|
||||
//判断目录是否存在,不存在则创建
|
||||
public static bool CheckDir(string folder)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(folder))//如果不存在就创建file文件夹
|
||||
Directory.CreateDirectory(folder);//创建该文件夹
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string openFolderPath = @"config";
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user