mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-25 14:46:08 +03:00
添加Trojan一键安装3
This commit is contained in:
parent
194ecc78c1
commit
77b18dc2fe
@ -628,11 +628,46 @@ namespace ProxySU
|
||||
//MessageBox.Show(client.RunCommand(@"lsof -n -P -i :80 | grep LISTEN").Result);
|
||||
if (String.IsNullOrEmpty(client.RunCommand(@"lsof -n -P -i :80 | grep LISTEN").Result) == false || String.IsNullOrEmpty(client.RunCommand(@"lsof -n -P -i :443 | grep LISTEN").Result) == false)
|
||||
{
|
||||
MessageBox.Show("80/443端口之一,或全部被占用,请先用系统工具中的“释放80/443端口”工具,释放出,再重新安装");
|
||||
currentStatus = "端口被占用,安装失败......";
|
||||
//MessageBox.Show("80/443端口之一,或全部被占用,请先用系统工具中的“释放80/443端口”工具,释放出,再重新安装");
|
||||
MessageBoxResult dialogResult = MessageBox.Show("80/443端口之一,或全部被占用,将强制停止占用80/443端口的程序?", "Stop application", MessageBoxButton.YesNo);
|
||||
if (dialogResult == MessageBoxResult.No)
|
||||
{
|
||||
currentStatus = "端口被占用,安装失败......";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
return;
|
||||
}
|
||||
|
||||
currentStatus = "正在释放80/443端口......";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
return;
|
||||
|
||||
string cmdTestPort = @"lsof -n -P -i :443 | grep LISTEN";
|
||||
string cmdResult = client.RunCommand(cmdTestPort).Result;
|
||||
//MessageBox.Show(cmdTestPort);
|
||||
if (String.IsNullOrEmpty(cmdResult) == false)
|
||||
{
|
||||
//MessageBox.Show(cmdResult);
|
||||
string[] cmdResultArry443 = cmdResult.Split(' ');
|
||||
//MessageBox.Show(cmdResultArry443[3]);
|
||||
client.RunCommand($"systemctl stop {cmdResultArry443[0]}");
|
||||
client.RunCommand($"systemctl disable {cmdResultArry443[0]}");
|
||||
client.RunCommand($"kill -9 {cmdResultArry443[3]}");
|
||||
}
|
||||
|
||||
cmdTestPort = @"lsof -n -P -i :80 | grep LISTEN";
|
||||
cmdResult = client.RunCommand(cmdTestPort).Result;
|
||||
if (String.IsNullOrEmpty(cmdResult) == false)
|
||||
{
|
||||
string[] cmdResultArry80 = cmdResult.Split(' ');
|
||||
client.RunCommand($"systemctl stop {cmdResultArry80[0]}");
|
||||
client.RunCommand($"systemctl disable {cmdResultArry80[0]}");
|
||||
client.RunCommand($"kill -9 {cmdResultArry80[3]}");
|
||||
}
|
||||
currentStatus = "80/443端口释放完毕!";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
|
||||
}
|
||||
}
|
||||
currentStatus = "符合安装要求,布署中......";
|
||||
@ -1148,6 +1183,7 @@ namespace ProxySU
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ConnectionInfo testconnect = GenerateConnectionInfo();
|
||||
try
|
||||
{
|
||||
@ -1178,7 +1214,7 @@ namespace ProxySU
|
||||
client.RunCommand($"systemctl disable {cmdResultArry80[0]}");
|
||||
client.RunCommand($"kill -9 {cmdResultArry80[3]}");
|
||||
}
|
||||
MessageBox.Show("执行完毕!");
|
||||
MessageBox.Show("释放完毕!");
|
||||
client.Disconnect();
|
||||
}
|
||||
}
|
||||
@ -1472,11 +1508,45 @@ namespace ProxySU
|
||||
//MessageBox.Show(client.RunCommand(@"lsof -n -P -i :80 | grep LISTEN").Result);
|
||||
if (String.IsNullOrEmpty(client.RunCommand(@"lsof -n -P -i :80 | grep LISTEN").Result) == false || String.IsNullOrEmpty(client.RunCommand(@"lsof -n -P -i :443 | grep LISTEN").Result) == false)
|
||||
{
|
||||
MessageBox.Show("80/443端口之一,或全部被占用,请先用系统工具中的“释放80/443端口”工具,释放出,再重新安装");
|
||||
currentStatus = "端口被占用,安装失败......";
|
||||
MessageBoxResult dialogResult = MessageBox.Show("80/443端口之一,或全部被占用,将强制停止占用80/443端口的程序?", "Stop application", MessageBoxButton.YesNo);
|
||||
if (dialogResult == MessageBoxResult.No)
|
||||
{
|
||||
currentStatus = "端口被占用,安装失败......";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
return;
|
||||
}
|
||||
|
||||
currentStatus = "正在释放80/443端口......";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
return;
|
||||
|
||||
string cmdTestPort = @"lsof -n -P -i :443 | grep LISTEN";
|
||||
string cmdResult = client.RunCommand(cmdTestPort).Result;
|
||||
//MessageBox.Show(cmdTestPort);
|
||||
if (String.IsNullOrEmpty(cmdResult) == false)
|
||||
{
|
||||
//MessageBox.Show(cmdResult);
|
||||
string[] cmdResultArry443 = cmdResult.Split(' ');
|
||||
//MessageBox.Show(cmdResultArry443[3]);
|
||||
client.RunCommand($"systemctl stop {cmdResultArry443[0]}");
|
||||
client.RunCommand($"systemctl disable {cmdResultArry443[0]}");
|
||||
client.RunCommand($"kill -9 {cmdResultArry443[3]}");
|
||||
}
|
||||
|
||||
cmdTestPort = @"lsof -n -P -i :80 | grep LISTEN";
|
||||
cmdResult = client.RunCommand(cmdTestPort).Result;
|
||||
if (String.IsNullOrEmpty(cmdResult) == false)
|
||||
{
|
||||
string[] cmdResultArry80 = cmdResult.Split(' ');
|
||||
client.RunCommand($"systemctl stop {cmdResultArry80[0]}");
|
||||
client.RunCommand($"systemctl disable {cmdResultArry80[0]}");
|
||||
client.RunCommand($"kill -9 {cmdResultArry80[3]}");
|
||||
}
|
||||
currentStatus = "80/443端口释放完毕!";
|
||||
textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus);
|
||||
Thread.Sleep(1000);
|
||||
|
||||
}
|
||||
}
|
||||
currentStatus = "符合安装要求,布署中......";
|
||||
@ -1509,7 +1579,7 @@ namespace ProxySU
|
||||
|
||||
client.RunCommand("curl -o /tmp/trojan-quickstart.sh https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh");
|
||||
client.RunCommand("yes | bash /tmp/trojan-quickstart.sh");
|
||||
//client.RunCommand("bash /tmp/go.sh -f");
|
||||
|
||||
string installResult = client.RunCommand("find / -name trojan").Result.ToString();
|
||||
|
||||
if (!installResult.Contains("/usr/local/bin/trojan"))
|
||||
|
@ -167,6 +167,6 @@
|
||||
<PostBuildEvent>del "$(TargetDir)*.xml"
|
||||
del "$(TargetDir)*.pdb"
|
||||
del "$(TargetDir)*.zip"
|
||||
"D:\Program Files\7-Zip\7z.exe" a $(TargetDir)Release.zip $(TargetDir) -xr!config</PostBuildEvent>
|
||||
"D:\Program Files\7-Zip\7z.exe" a $(TargetDir)Release.zip $(TargetDir) -xr!*config</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -42,7 +42,20 @@
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Header="二维码/URL" Grid.Row="1">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.4*"></ColumnDefinition>
|
||||
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.2*"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="可用于ShadowRocket (ios) Trojan-QT5 (windows) 扫码和导入url" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" TextWrapping="Wrap"></TextBlock>
|
||||
<Image x:Name="ImageTrojanShareQRurl" Grid.Column="0" Grid.Row="1"></Image>
|
||||
<TextBox x:Name="TextBoxTrojanUrl" TextWrapping="Wrap" Grid.Column="1" Grid.Row="1"></TextBox>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<Grid Grid.Row="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
|
@ -54,15 +54,16 @@ namespace ProxySU
|
||||
num++;
|
||||
}
|
||||
CheckDir(@"trojan_config\" + saveFileFolder);
|
||||
string trojanUrl = $"trojan://{TextBoxTrojanServerPassword.Text}@{TextBoxTrojanServerHost.Text}:{TextBoxTrojanServerPort.Text}#{TextBoxTrojanServerHost.Text}";
|
||||
//MessageBox.Show(v2rayNjsonObject.ToString());
|
||||
// string vmessUrl = "vmess://" + ToBase64Encode(v2rayNjsonObject.ToString());
|
||||
//TextBoxvVmessUrl.Text = vmessUrl;
|
||||
//using (StreamWriter sw = new StreamWriter($"trojan_config\\{saveFileFolder}\\url.txt"))
|
||||
//{
|
||||
// sw.WriteLine(vmessUrl);
|
||||
//string trojanUrl = "trojan://" + ToBase64Encode(v2rayNjsonObject.ToString());
|
||||
TextBoxTrojanUrl.Text = trojanUrl;
|
||||
using (StreamWriter sw = new StreamWriter($"trojan_config\\{saveFileFolder}\\url.txt"))
|
||||
{
|
||||
sw.WriteLine(trojanUrl);
|
||||
|
||||
//}
|
||||
//CreateQRCode(vmessUrl);
|
||||
}
|
||||
CreateQRCode(trojanUrl);
|
||||
|
||||
//移动Trojan官方程序配置文件到相应目录
|
||||
if (File.Exists(@"trojan_config\config.json"))
|
||||
@ -78,46 +79,38 @@ namespace ProxySU
|
||||
sw.WriteLine("Trojan官方网站:https://trojan-gfw.github.io/trojan/");
|
||||
sw.WriteLine("Trojan官方程序下载地址:https://github.com/trojan-gfw/trojan/releases");
|
||||
sw.WriteLine("下载相应版本,Windows选择Trojan-x.xx-win.zip,解压后提取trojan.exe。与config.json放在同一目录,运行trojan.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("-----------------------------------------\n");
|
||||
sw.WriteLine("QR.bmp");
|
||||
sw.WriteLine("此文件为Trojan-QT5 (windows)、Shadowrocket(ios)扫码导入节点");
|
||||
sw.WriteLine("Trojan-QT5 (windows)下载网址:https://github.com/TheWanderingCoel/Trojan-Qt5/releases");
|
||||
sw.WriteLine("Shadowrocket(ios)下载,需要使用国外区的AppleID。请自行谷歌方法。");
|
||||
|
||||
//sw.WriteLine("-----------------------------------------");
|
||||
//sw.WriteLine("url.txt");
|
||||
//sw.WriteLine("此文件为v2rayN、v2rayNG(Android)、Shadowrocket(ios)复制粘贴导入节点的vmess网址");
|
||||
//sw.WriteLine("-----------------------------------------\n");
|
||||
sw.WriteLine("-----------------------------------------\n");
|
||||
sw.WriteLine("url.txt");
|
||||
sw.WriteLine("此文件为Trojan-QT5 (windows)、Shadowrocket(ios)复制粘贴导入节点的网址");
|
||||
sw.WriteLine("-----------------------------------------\n");
|
||||
sw.WriteLine("服务器通用连接配置参数");
|
||||
sw.WriteLine($"地址(address):{TextBoxTrojanServerHost.Text}");
|
||||
sw.WriteLine($"端口(Port):{TextBoxTrojanServerPort.Text}");
|
||||
sw.WriteLine($"密钥:{TextBoxTrojanServerPassword.Text}");
|
||||
//sw.WriteLine($"额外ID:{TextBoxUUIDextra.Text}");
|
||||
//sw.WriteLine($"加密方式:{TextBoxEncryption.Text}");
|
||||
//sw.WriteLine($"传输协议:{TextBoxTransmission.Text}");
|
||||
//sw.WriteLine($"伪装类型:{TextBoxCamouflageType.Text}");
|
||||
//sw.WriteLine($"是否使用TLS:{TextBoxTLS.Text}");
|
||||
//sw.WriteLine($"host:{TextBoxHostAddress.Text}");
|
||||
//sw.WriteLine($"路径(Path):{TextBoxPath.Text}");
|
||||
//sw.WriteLine($"QUIC密钥:{TextBoxQuicKey.Text}");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
//生成base64
|
||||
private string ToBase64Encode(string text)
|
||||
{
|
||||
if (String.IsNullOrEmpty(text))
|
||||
{
|
||||
return text;
|
||||
}
|
||||
//private string ToBase64Encode(string text)
|
||||
//{
|
||||
// if (String.IsNullOrEmpty(text))
|
||||
// {
|
||||
// return text;
|
||||
// }
|
||||
|
||||
// byte[] textBytes = Encoding.UTF8.GetBytes(text);
|
||||
// return Convert.ToBase64String(textBytes);
|
||||
//}
|
||||
|
||||
byte[] textBytes = Encoding.UTF8.GetBytes(text);
|
||||
return Convert.ToBase64String(textBytes);
|
||||
}
|
||||
//生成QRcoder图片
|
||||
private void CreateQRCode(string varBase64)
|
||||
{
|
||||
@ -128,10 +121,10 @@ namespace ProxySU
|
||||
Bitmap qrCodeImage = qrCode.GetGraphic(20);
|
||||
IntPtr myImagePtr = qrCodeImage.GetHbitmap();
|
||||
BitmapSource imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(myImagePtr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
|
||||
//ImageShareQRcode.Source = imgsource;
|
||||
ImageTrojanShareQRurl.Source = imgsource;
|
||||
//DeleteObject(myImagePtr);
|
||||
qrCodeImage.Save($"trojan_config\\{saveFileFolder}\\QR.bmp");
|
||||
//ImageShareQRcode.Source = @"config\v2rayN.bmp";
|
||||
|
||||
}
|
||||
//判断目录是否存在,不存在则创建
|
||||
private static bool CheckDir(string folder)
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
##domain## {
|
||||
log stdout
|
||||
errors stderr
|
||||
log stdout
|
||||
errors stderr
|
||||
root /var/www
|
||||
tls off
|
||||
##sites##
|
||||
|
@ -0,0 +1,7 @@
|
||||
##domain## {
|
||||
log stdout
|
||||
errors stderr
|
||||
root /var/www
|
||||
tls off
|
||||
##sites##
|
||||
}
|
31
ProxySU/bin/Release/TemplateConfg/trojan_client_config.json
Normal file
31
ProxySU/bin/Release/TemplateConfg/trojan_client_config.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"run_type": "client",
|
||||
"local_addr": "127.0.0.1",
|
||||
"local_port": 1080,
|
||||
"remote_addr": null,
|
||||
"remote_port": 443,
|
||||
"password": [
|
||||
""
|
||||
],
|
||||
"log_level": 1,
|
||||
"ssl": {
|
||||
"verify": true,
|
||||
"verify_hostname": true,
|
||||
"cert": "",
|
||||
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RSA-AES128-GCM-SHA256:RSA-AES256-GCM-SHA384:RSA-AES128-SHA:RSA-AES256-SHA:RSA-3DES-EDE-SHA",
|
||||
"sni": "",
|
||||
"alpn": [
|
||||
"h2",
|
||||
"http/1.1"
|
||||
],
|
||||
"reuse_session": true,
|
||||
"session_ticket": false,
|
||||
"curves": ""
|
||||
},
|
||||
"tcp": {
|
||||
"no_delay": true,
|
||||
"keep_alive": true,
|
||||
"fast_open": false,
|
||||
"fast_open_qlen": 20
|
||||
}
|
||||
}
|
11
ProxySU/bin/Release/TemplateConfg/trojan_nginx_config.nginx
Normal file
11
ProxySU/bin/Release/TemplateConfg/trojan_nginx_config.nginx
Normal file
@ -0,0 +1,11 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name ##domain##;
|
||||
root /var/www/html;
|
||||
index index.html index.htm;
|
||||
location / {
|
||||
proxy_pass ##sites##;
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
}
|
42
ProxySU/bin/Release/TemplateConfg/trojan_server_config.json
Normal file
42
ProxySU/bin/Release/TemplateConfg/trojan_server_config.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"run_type": "server",
|
||||
"local_addr": "0.0.0.0",
|
||||
"local_port": 443,
|
||||
"remote_addr": "127.0.0.1",
|
||||
"remote_port": 80,
|
||||
"password": [
|
||||
""
|
||||
],
|
||||
"log_level": 1,
|
||||
"ssl": {
|
||||
"cert": "/usr/local/etc/trojan/trojan_ssl.crt",
|
||||
"key": "/usr/local/etc/trojan/trojan_ssl.key",
|
||||
"key_password": "",
|
||||
"cipher": "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256",
|
||||
"prefer_server_cipher": true,
|
||||
"alpn": [
|
||||
"http/1.1"
|
||||
],
|
||||
"reuse_session": true,
|
||||
"session_ticket": false,
|
||||
"session_timeout": 600,
|
||||
"plain_http_response": "",
|
||||
"curves": "",
|
||||
"dhparam": ""
|
||||
},
|
||||
"tcp": {
|
||||
"prefer_ipv4": false,
|
||||
"no_delay": true,
|
||||
"keep_alive": true,
|
||||
"fast_open": false,
|
||||
"fast_open_qlen": 20
|
||||
},
|
||||
"mysql": {
|
||||
"enabled": false,
|
||||
"server_addr": "127.0.0.1",
|
||||
"server_port": 3306,
|
||||
"database": "trojan",
|
||||
"username": "trojan",
|
||||
"password": ""
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user