Compare commits
72 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
235f20813d | ||
|
|
55ce8a3e97 | ||
|
|
b7ac15ad55 | ||
|
|
038b64a416 | ||
|
|
ec2fbca979 | ||
|
|
7f28b1d2c9 | ||
|
|
6a0ec7d294 | ||
|
|
217215b035 | ||
|
|
a6fefcacc9 | ||
|
|
03023c04fc | ||
|
|
8dadfe6579 | ||
|
|
6c06de63e4 | ||
|
|
54a122ae34 | ||
|
|
7a0daee443 | ||
|
|
88b5e29092 | ||
|
|
b3ea08dd99 | ||
|
|
95794bc5b2 | ||
|
|
3275454bd6 | ||
|
|
7f5bb86127 | ||
|
|
cf1ae8f240 | ||
|
|
9b2261918f | ||
|
|
f74071691f | ||
|
|
6d5e02860e | ||
|
|
ffa2acb2f5 | ||
|
|
25b4ff771e | ||
|
|
7a48617fea | ||
|
|
800807b47a | ||
|
|
eaf11c6998 | ||
|
|
e2053d5a77 | ||
|
|
ae6b3ef7fb | ||
|
|
359c6e0f02 | ||
|
|
9a8b4593e1 | ||
|
|
02fc631e3c | ||
|
|
19e03a1fdd | ||
|
|
5ea6279711 | ||
|
|
c44578c341 | ||
|
|
ab34d3fe30 | ||
|
|
5aa27c14c6 | ||
|
|
a5e9edb2e5 | ||
|
|
bbd8ef1f26 | ||
|
|
ad8afa0d3d | ||
|
|
5198f30363 | ||
|
|
50e55761ab | ||
|
|
7cb67aa49c | ||
|
|
1d4993180a | ||
|
|
73a36d5556 | ||
|
|
368e489190 | ||
|
|
d582d4846e | ||
|
|
87ffad398e | ||
|
|
439e7eaca0 | ||
|
|
90d703ae91 | ||
|
|
2d80c90f78 | ||
|
|
b54c8e97bd | ||
|
|
58e69a6644 | ||
|
|
f09a13259f | ||
|
|
8775c5e1f2 | ||
|
|
61b7997ae9 | ||
|
|
99fa98844c | ||
|
|
6e5781c633 | ||
|
|
b58e524d78 | ||
|
|
0d669af44e | ||
|
|
a331c70233 | ||
|
|
fd7d688e6b | ||
|
|
069d47f01b | ||
|
|
3079f1c651 | ||
|
|
f5ecda9255 | ||
|
|
d83ae315ed | ||
|
|
2b40e87eb9 | ||
|
|
f7e3eb180b | ||
|
|
209786cdb6 | ||
|
|
d418f79d8f | ||
|
|
eddd38ff03 |
58
.github/ISSUE_TEMPLATE/01_bug_report.yml
vendored
Normal file
58
.github/ISSUE_TEMPLATE/01_bug_report.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
name: Bug 报告
|
||||||
|
description: 在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
||||||
|
title: "[Bug]: "
|
||||||
|
labels: ["bug"]
|
||||||
|
body:
|
||||||
|
- type: input
|
||||||
|
id: "expectation"
|
||||||
|
attributes:
|
||||||
|
label: "预期情况"
|
||||||
|
description: "描述你认为应该发生什么"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "describe-the-bug"
|
||||||
|
attributes:
|
||||||
|
label: "实际情况"
|
||||||
|
description: "描述实际发生了什么"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "reproduction-method"
|
||||||
|
attributes:
|
||||||
|
label: "复现方法"
|
||||||
|
description: "在BUG出现前执行了哪些操作"
|
||||||
|
placeholder: 标序号
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "log"
|
||||||
|
attributes:
|
||||||
|
label: "日志信息"
|
||||||
|
description: "位置在软件当前目录下的guiLogs"
|
||||||
|
placeholder: 在日志开始和结束位置粘贴冒号后的内容:```
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "more"
|
||||||
|
attributes:
|
||||||
|
label: "额外信息"
|
||||||
|
description: "可选"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: "latest-version"
|
||||||
|
attributes:
|
||||||
|
label: "我确认已更新至最新版本"
|
||||||
|
description: "否则请更新后尝试"
|
||||||
|
options:
|
||||||
|
- label: 是
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: "issues"
|
||||||
|
attributes:
|
||||||
|
label: "我确认已查询历史issues"
|
||||||
|
description: "否则请查询后提出"
|
||||||
|
options:
|
||||||
|
- label: 是
|
||||||
|
required: true
|
||||||
34
.github/ISSUE_TEMPLATE/02_feature_request.yml
vendored
Normal file
34
.github/ISSUE_TEMPLATE/02_feature_request.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Feature 请求
|
||||||
|
description: "为这个项目提出一个建议"
|
||||||
|
title: "[Feature request]: "
|
||||||
|
labels: ['enhancement']
|
||||||
|
body:
|
||||||
|
- type: input
|
||||||
|
id: problem
|
||||||
|
attributes:
|
||||||
|
label: 相关问题
|
||||||
|
description: "清楚而简洁地描述问题是什么。"
|
||||||
|
placeholder: "当我想要……时,软件不能……"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: way-to-solve
|
||||||
|
attributes:
|
||||||
|
label: 描述你希望的解决方案
|
||||||
|
description: "你希望发生什么"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: instead
|
||||||
|
attributes:
|
||||||
|
label: 描述你所考虑的替代方案
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: "issues"
|
||||||
|
attributes:
|
||||||
|
label: "我确认已查询历史issues"
|
||||||
|
description: "否则请查询后提出"
|
||||||
|
options:
|
||||||
|
- label: 是
|
||||||
|
required: true
|
||||||
33
.github/ISSUE_TEMPLATE/bug---.md
vendored
33
.github/ISSUE_TEMPLATE/bug---.md
vendored
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug 报告
|
|
||||||
about: 在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
|
||||||
title: "[BUG]"
|
|
||||||
labels: bug
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
|
||||||
|
|
||||||
### 预期行为
|
|
||||||
描述你认为应该发生什么
|
|
||||||
|
|
||||||
### 实际行为
|
|
||||||
描述实际发生了什么
|
|
||||||
|
|
||||||
### 复现方法
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
|
|
||||||
### 日志信息,位置在当前目录下的guiLogs
|
|
||||||
<details>
|
|
||||||
|
|
||||||
```
|
|
||||||
在这里粘贴日志
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### 环境信息(客户端请升级至最新正式版)
|
|
||||||
|
|
||||||
### 额外信息(可选)
|
|
||||||
20
.github/ISSUE_TEMPLATE/feature---.md
vendored
20
.github/ISSUE_TEMPLATE/feature---.md
vendored
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature 请求
|
|
||||||
about: 为这个项目提出一个建议
|
|
||||||
title: "[Feature request]"
|
|
||||||
labels: enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**你的功能请求是否与一个问题有关?请描述。**
|
|
||||||
清楚而简洁地描述问题是什么。例如。我总是感到沮丧,当 [...]
|
|
||||||
|
|
||||||
**描述你希望的解决方案**
|
|
||||||
对你希望发生的事情进行清晰、简明的描述。
|
|
||||||
|
|
||||||
**描述你所考虑的替代方案**
|
|
||||||
对你考虑过的任何替代解决方案或功能进行清晰、简洁的描述。
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -13,6 +13,6 @@
|
|||||||
.vs/slnx.sqlite
|
.vs/slnx.sqlite
|
||||||
.vs/VSWorkspaceState.json
|
.vs/VSWorkspaceState.json
|
||||||
/v2rayN/v2rayUpgrade/bin/Debug
|
/v2rayN/v2rayUpgrade/bin/Debug
|
||||||
/v2rayN/v2rayUpgrade/obj/Debug
|
|
||||||
/v2rayN/v2rayUpgrade/bin/Release
|
/v2rayN/v2rayUpgrade/bin/Release
|
||||||
/v2rayN/v2rayUpgrade/obj/Release
|
/v2rayN/v2rayUpgrade/obj/
|
||||||
|
*.user
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ A V2Ray client for Windows, support [Xray core](https://github.com/XTLS/Xray-cor
|
|||||||
[](https://t.me/v2rayn)
|
[](https://t.me/v2rayn)
|
||||||
|
|
||||||
### How to use
|
### How to use
|
||||||
- If you are newbie please download v2rayN-Core.zip from releases
|
- If you are new to this, please download v2rayN-Core.zip from [releases](https://github.com/2dust/v2rayN/releases)
|
||||||
- Otherwise please download v2rayN.zip (Also need to download v2ray core in the same folder)
|
- Otherwise please download v2rayN.zip (you will also need to download v2ray core into the same folder with v2rayN.exe)
|
||||||
- Run v2rayN.exe
|
- Run v2rayN.exe
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
- Microsoft [.NET Framework 4.8](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/thank-you/net48-web-installer)
|
- Microsoft [.NET Framework 4.8 Runtime](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/thank-you/net48-offline-installer)
|
||||||
- v2fly core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
- v2fly core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
||||||
- Xray core [https://github.com/XTLS/Xray-core/releases](https://github.com/XTLS/Xray-core/releases)
|
- Xray core [https://github.com/XTLS/Xray-core/releases](https://github.com/XTLS/Xray-core/releases)
|
||||||
|
|||||||
@@ -45,16 +45,9 @@ namespace v2rayN.Base
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try
|
HttpResponseMessage response = await httpClient.GetAsync(url);
|
||||||
{
|
|
||||||
HttpResponseMessage response = await httpClient.GetAsync(url);
|
|
||||||
|
|
||||||
return await response.Content.ReadAsStringAsync();
|
return await response.Content.ReadAsStringAsync();
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
public async Task<string> GetAsync(HttpClient client, string url, CancellationToken token)
|
public async Task<string> GetAsync(HttpClient client, string url, CancellationToken token)
|
||||||
{
|
{
|
||||||
@@ -62,16 +55,12 @@ namespace v2rayN.Base
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try
|
HttpResponseMessage response = await client.GetAsync(url, token);
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
HttpResponseMessage response = await client.GetAsync(url, token);
|
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
||||||
return await response.Content.ReadAsStringAsync();
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
return await response.Content.ReadAsStringAsync();
|
||||||
{
|
|
||||||
Utils.SaveLog("GetAsync", ex);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PutAsync(string url, Dictionary<string, string> headers)
|
public async Task PutAsync(string url, Dictionary<string, string> headers)
|
||||||
|
|||||||
@@ -93,5 +93,20 @@ namespace v2rayN.Base
|
|||||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
DoDragDrop(e.Item, DragDropEffects.Move);
|
||||||
InsertionMark.Index = -1;
|
InsertionMark.Index = -1;
|
||||||
}
|
}
|
||||||
|
public void SetScrollPosition(int pos)
|
||||||
|
{
|
||||||
|
pos = Math.Min(Items.Count - 1, pos);
|
||||||
|
|
||||||
|
if (pos < 0 || pos >= Items.Count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
EnsureVisible(pos);
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
if (TopItem != null && TopItem.Index != pos)
|
||||||
|
TopItem = Items[pos];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
32
v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
generated
32
v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
generated
@@ -31,6 +31,9 @@
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.txtPreSocksPort = new System.Windows.Forms.TextBox();
|
||||||
this.btnEdit = new System.Windows.Forms.Button();
|
this.btnEdit = new System.Windows.Forms.Button();
|
||||||
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
||||||
this.labCoreType = new System.Windows.Forms.Label();
|
this.labCoreType = new System.Windows.Forms.Label();
|
||||||
@@ -49,14 +52,18 @@
|
|||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Controls.Add(this.label3);
|
||||||
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
|
this.groupBox1.Controls.Add(this.txtPreSocksPort);
|
||||||
this.groupBox1.Controls.Add(this.btnEdit);
|
this.groupBox1.Controls.Add(this.btnEdit);
|
||||||
this.groupBox1.Controls.Add(this.cmbCoreType);
|
this.groupBox1.Controls.Add(this.cmbCoreType);
|
||||||
this.groupBox1.Controls.Add(this.labCoreType);
|
this.groupBox1.Controls.Add(this.labCoreType);
|
||||||
@@ -66,10 +73,24 @@
|
|||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
this.groupBox1.Controls.Add(this.txtRemarks);
|
||||||
this.groupBox1.Controls.Add(this.label6);
|
this.groupBox1.Controls.Add(this.label6);
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label2, "label2");
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
//
|
||||||
|
// txtPreSocksPort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtPreSocksPort, "txtPreSocksPort");
|
||||||
|
this.txtPreSocksPort.Name = "txtPreSocksPort";
|
||||||
|
//
|
||||||
// btnEdit
|
// btnEdit
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnEdit, "btnEdit");
|
resources.ApplyResources(this.btnEdit, "btnEdit");
|
||||||
@@ -79,9 +100,9 @@
|
|||||||
//
|
//
|
||||||
// cmbCoreType
|
// cmbCoreType
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
||||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType.FormattingEnabled = true;
|
this.cmbCoreType.FormattingEnabled = true;
|
||||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
|
||||||
this.cmbCoreType.Name = "cmbCoreType";
|
this.cmbCoreType.Name = "cmbCoreType";
|
||||||
//
|
//
|
||||||
// labCoreType
|
// labCoreType
|
||||||
@@ -123,9 +144,9 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
@@ -174,5 +195,8 @@
|
|||||||
private System.Windows.Forms.ComboBox cmbCoreType;
|
private System.Windows.Forms.ComboBox cmbCoreType;
|
||||||
private System.Windows.Forms.Label labCoreType;
|
private System.Windows.Forms.Label labCoreType;
|
||||||
private System.Windows.Forms.Button btnEdit;
|
private System.Windows.Forms.Button btnEdit;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.TextBox txtPreSocksPort;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
@@ -18,11 +19,15 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void AddServer2Form_Load(object sender, EventArgs e)
|
private void AddServer2Form_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
List<string> coreTypes = new List<string>();
|
||||||
cmbCoreType.Items.Add("clash");
|
foreach (ECoreType it in Enum.GetValues(typeof(ECoreType)))
|
||||||
cmbCoreType.Items.Add("clash_meta");
|
{
|
||||||
cmbCoreType.Items.Add("hysteria");
|
if (it == ECoreType.v2rayN)
|
||||||
cmbCoreType.Items.Add("naiveproxy");
|
continue;
|
||||||
|
coreTypes.Add(it.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
cmbCoreType.Items.AddRange(coreTypes.ToArray());
|
||||||
cmbCoreType.Items.Add(string.Empty);
|
cmbCoreType.Items.Add(string.Empty);
|
||||||
|
|
||||||
txtAddress.ReadOnly = true;
|
txtAddress.ReadOnly = true;
|
||||||
@@ -47,6 +52,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
txtAddress.Text = vmessItem.address;
|
txtAddress.Text = vmessItem.address;
|
||||||
|
txtPreSocksPort.Text = vmessItem.preSocksPort.ToString();
|
||||||
|
|
||||||
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
|
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
|
||||||
}
|
}
|
||||||
@@ -74,6 +80,8 @@ namespace v2rayN.Forms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vmessItem.remarks = remarks;
|
vmessItem.remarks = remarks;
|
||||||
|
vmessItem.preSocksPort = Utils.ToInt(txtPreSocksPort.Text);
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
||||||
{
|
{
|
||||||
vmessItem.coreType = null;
|
vmessItem.coreType = null;
|
||||||
|
|||||||
@@ -118,390 +118,456 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>113, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>370, 41</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.Name" xml:space="preserve">
|
||||||
|
<value>label6</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.Name" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>11</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>59, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbCoreType.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Name" xml:space="preserve">
|
||||||
|
<value>panel1</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>* After setting this value, an socks service will be started using V2ray to provide functions such as speed display</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labCoreType.ZOrder" xml:space="preserve">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 157</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>Custom configuration server</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 110</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
|
<value>11</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>357, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>46</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnBrowse.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>432, 37</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labCoreType.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPreSocksPort.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>450, 17</value>
|
<value>450, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnEdit.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>43</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPreSocksPort.Name" xml:space="preserve">
|
||||||
|
<value>txtPreSocksPort</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.Name" xml:space="preserve">
|
||||||
|
<value>label1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>611, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPreSocksPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>45</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>22</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
<value>208, 110</value>
|
||||||
<value>4</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnEdit.Text" xml:space="preserve">
|
||||||
<value>&Cancel</value>
|
<value>&Edit</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
<value>btnClose</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
<data name=">>btnOK.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Text" xml:space="preserve">
|
||||||
|
<value>Alias (remarks)</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>313, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbCoreType.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>41</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>AddServer2Form</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>446, 26</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnBrowse.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labCoreType.Name" xml:space="preserve">
|
||||||
|
<value>labCoreType</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.Name" xml:space="preserve">
|
||||||
|
<value>btnOK</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>42</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnEdit.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
<data name=">>btnClose.Parent" xml:space="preserve">
|
||||||
<value>panel2</value>
|
<value>panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
<data name="txtPreSocksPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>0</value>
|
<value>89, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<data name="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<value>611, 10</value>
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>208, 110</value>
|
<value>0, 10</value>
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>43</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Text" xml:space="preserve">
|
|
||||||
<value>&Edit</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Name" xml:space="preserve">
|
|
||||||
<value>btnEdit</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Name" xml:space="preserve">
|
|
||||||
<value>cmbCoreType</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 161</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>59, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>42</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
<data name="labCoreType.Text" xml:space="preserve">
|
||||||
<value>Core Type</value>
|
<value>Core Type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>labCoreType.Name" xml:space="preserve">
|
<data name="txtPreSocksPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>labCoreType</value>
|
<value>127, 195</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>labCoreType.Type" xml:space="preserve">
|
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 110</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
|
<data name=">>cmbCoreType.Parent" xml:space="preserve">
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>&Browse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Name" xml:space="preserve">
|
|
||||||
<value>btnBrowse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>432, 37</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>446, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>313, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
<value>6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
<data name=">>btnEdit.Name" xml:space="preserve">
|
||||||
<value>True</value>
|
<value>btnEdit</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>12, 27</value>
|
<value>&OK</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>btnClose.Name" xml:space="preserve">
|
||||||
<value>95, 12</value>
|
<value>btnClose</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
<data name=">>panel2.Parent" xml:space="preserve">
|
||||||
<value>10</value>
|
<value>$this</value>
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Alias (remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>Address</value>
|
<value>229, 189</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>label1</value>
|
<value>44</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 161</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbCoreType.Name" xml:space="preserve">
|
||||||
|
<value>cmbCoreType</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnBrowse.Text" xml:space="preserve">
|
||||||
|
<value>&Browse</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
<data name=">>label1.Parent" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
<value>8</value>
|
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name=">>label3.Name" xml:space="preserve">
|
||||||
<value>Fill</value>
|
<value>label3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>0, 10</value>
|
<value>Pre-Socks Port</value>
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 189</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 199</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
<data name=">>panel2.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>357, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Top</value>
|
<value>Top</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 0</value>
|
<value>0, 259</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
||||||
<value>611, 10</value>
|
<value>7</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>6</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
<data name=">>labCoreType.Parent" xml:space="preserve">
|
||||||
<value>panel1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>47, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>$this</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
<data name=">>txtPreSocksPort.Type" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>Address</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnEdit.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbCoreType.ZOrder" xml:space="preserve">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>* Fill in manually</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
|
<value>label2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPreSocksPort.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 199</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>611, 319</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnBrowse.Name" xml:space="preserve">
|
||||||
|
<value>btnBrowse</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>611, 249</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>40</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Name" xml:space="preserve">
|
||||||
|
<value>label13</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>&Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
|
<value>9</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnEdit.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Name" xml:space="preserve">
|
||||||
|
<value>txtAddress</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Name" xml:space="preserve">
|
||||||
|
<value>txtRemarks</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 27</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 259</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Custom configuration server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer2Form</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
@@ -117,34 +117,56 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>自定义配置</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>浏览(&B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnEdit.Text" xml:space="preserve">
|
|
||||||
<value>编辑(&E)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>337, 41</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>* 自定义配置的Socks端口值,可不设置;当设置此值后,将使用V2ray-core额外启动一个前置Socks服务,提供分流和速度显示等功能</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>59, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Socks端口</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnEdit.Text" xml:space="preserve">
|
||||||
|
<value>编辑(&E)</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
<data name="labCoreType.Text" xml:space="preserve">
|
||||||
<value>Core类型</value>
|
<value>Core类型</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="btnBrowse.Text" xml:space="preserve">
|
||||||
<value>地址(address)</value>
|
<value>浏览(&B)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>*手填,方便识别管理</value>
|
<value>*手填,方便识别管理</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</data>
|
||||||
<data name="label6.Text" xml:space="preserve">
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<value>别名(remarks)</value>
|
<value>别名(remarks)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>地址(address)</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>自定义配置</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -23,7 +23,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
switch (eConfigType)
|
switch (eConfigType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
panVmess.Dock = DockStyle.Fill;
|
panVmess.Dock = DockStyle.Fill;
|
||||||
panVmess.Visible = true;
|
panVmess.Visible = true;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ namespace v2rayN.Forms
|
|||||||
//panTran.Visible = false;
|
//panTran.Visible = false;
|
||||||
//this.Height = this.Height - panTran.Height;
|
//this.Height = this.Height - panTran.Height;
|
||||||
|
|
||||||
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys().ToArray());
|
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).ToArray());
|
||||||
break;
|
break;
|
||||||
case EConfigType.Socks:
|
case EConfigType.Socks:
|
||||||
panSocks.Dock = DockStyle.Fill;
|
panSocks.Dock = DockStyle.Fill;
|
||||||
@@ -84,7 +84,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
switch (eConfigType)
|
switch (eConfigType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
txtId.Text = vmessItem.id;
|
txtId.Text = vmessItem.id;
|
||||||
txtAlterId.Text = vmessItem.alterId.ToString();
|
txtAlterId.Text = vmessItem.alterId.ToString();
|
||||||
cmbSecurity.Text = vmessItem.security;
|
cmbSecurity.Text = vmessItem.security;
|
||||||
@@ -124,7 +124,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
switch (eConfigType)
|
switch (eConfigType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
txtId.Text = "";
|
txtId.Text = "";
|
||||||
txtAlterId.Text = "0";
|
txtAlterId.Text = "0";
|
||||||
cmbSecurity.Text = Global.DefaultSecurity;
|
cmbSecurity.Text = Global.DefaultSecurity;
|
||||||
@@ -164,7 +164,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
switch (eConfigType)
|
switch (eConfigType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
id = txtId.Text;
|
id = txtId.Text;
|
||||||
alterId = txtAlterId.Text;
|
alterId = txtAlterId.Text;
|
||||||
security = cmbSecurity.Text;
|
security = cmbSecurity.Text;
|
||||||
@@ -241,7 +241,7 @@ namespace v2rayN.Forms
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
switch (eConfigType)
|
switch (eConfigType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
ret = ConfigHandler.AddServer(ref config, vmessItem);
|
ret = ConfigHandler.AddServer(ref config, vmessItem);
|
||||||
break;
|
break;
|
||||||
case EConfigType.Shadowsocks:
|
case EConfigType.Shadowsocks:
|
||||||
|
|||||||
72
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
72
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -42,11 +42,11 @@
|
|||||||
this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.menuServerFilter = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuRemoveServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRemoveServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuRemoveDuplicateServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRemoveDuplicateServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuServerFilter = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuMoveToGroup = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuMoveToGroup = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuMoveEvent = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuMoveEvent = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -68,9 +68,9 @@
|
|||||||
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.tabGroup = new System.Windows.Forms.TabControl();
|
this.tabGroup = new System.Windows.Forms.TabControl();
|
||||||
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
||||||
|
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.scBig = new System.Windows.Forms.SplitContainer();
|
this.scBig = new System.Windows.Forms.SplitContainer();
|
||||||
this.gbServers = new System.Windows.Forms.GroupBox();
|
this.gbServers = new System.Windows.Forms.GroupBox();
|
||||||
this.mainMsgControl = new v2rayN.Forms.MainMsgControl();
|
this.mainMsgControl = new v2rayN.Forms.MainMsgControl();
|
||||||
@@ -96,6 +96,8 @@
|
|||||||
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbSubUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbSubGroupUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbSubGroupUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton();
|
this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
@@ -111,6 +113,7 @@
|
|||||||
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbCheckUpdateSagerNetCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbCheckUpdateClashCore = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateClashCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -127,6 +130,7 @@
|
|||||||
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbRestoreGuiNConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.scServers)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.scServers)).BeginInit();
|
||||||
this.scServers.Panel1.SuspendLayout();
|
this.scServers.Panel1.SuspendLayout();
|
||||||
this.scServers.Panel2.SuspendLayout();
|
this.scServers.Panel2.SuspendLayout();
|
||||||
@@ -190,11 +194,11 @@
|
|||||||
this.menuAddServers,
|
this.menuAddServers,
|
||||||
this.menuScanScreen,
|
this.menuScanScreen,
|
||||||
this.toolStripSeparator1,
|
this.toolStripSeparator1,
|
||||||
|
this.menuServerFilter,
|
||||||
this.menuRemoveServer,
|
this.menuRemoveServer,
|
||||||
this.menuRemoveDuplicateServer,
|
this.menuRemoveDuplicateServer,
|
||||||
this.menuCopyServer,
|
this.menuCopyServer,
|
||||||
this.menuSetDefaultServer,
|
this.menuSetDefaultServer,
|
||||||
this.menuServerFilter,
|
|
||||||
this.toolStripSeparator3,
|
this.toolStripSeparator3,
|
||||||
this.menuMoveToGroup,
|
this.menuMoveToGroup,
|
||||||
this.menuMoveEvent,
|
this.menuMoveEvent,
|
||||||
@@ -269,6 +273,12 @@
|
|||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||||
//
|
//
|
||||||
|
// menuServerFilter
|
||||||
|
//
|
||||||
|
this.menuServerFilter.Name = "menuServerFilter";
|
||||||
|
resources.ApplyResources(this.menuServerFilter, "menuServerFilter");
|
||||||
|
this.menuServerFilter.Click += new System.EventHandler(this.menuServerFilter_Click);
|
||||||
|
//
|
||||||
// menuRemoveServer
|
// menuRemoveServer
|
||||||
//
|
//
|
||||||
this.menuRemoveServer.Name = "menuRemoveServer";
|
this.menuRemoveServer.Name = "menuRemoveServer";
|
||||||
@@ -293,12 +303,6 @@
|
|||||||
resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
|
resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
|
||||||
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
|
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
|
||||||
//
|
//
|
||||||
// menuServerFilter
|
|
||||||
//
|
|
||||||
this.menuServerFilter.Name = "menuServerFilter";
|
|
||||||
resources.ApplyResources(this.menuServerFilter, "menuServerFilter");
|
|
||||||
this.menuServerFilter.Click += new System.EventHandler(this.menuServerFilter_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator3
|
// toolStripSeparator3
|
||||||
//
|
//
|
||||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
@@ -426,13 +430,6 @@
|
|||||||
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
||||||
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
||||||
//
|
//
|
||||||
// tsbServer
|
|
||||||
//
|
|
||||||
this.tsbServer.DropDown = this.cmsLv;
|
|
||||||
this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
|
|
||||||
resources.ApplyResources(this.tsbServer, "tsbServer");
|
|
||||||
this.tsbServer.Name = "tsbServer";
|
|
||||||
//
|
|
||||||
// tabGroup
|
// tabGroup
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabGroup, "tabGroup");
|
resources.ApplyResources(this.tabGroup, "tabGroup");
|
||||||
@@ -445,6 +442,13 @@
|
|||||||
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
||||||
this.qrCodeControl.Name = "qrCodeControl";
|
this.qrCodeControl.Name = "qrCodeControl";
|
||||||
//
|
//
|
||||||
|
// tsbServer
|
||||||
|
//
|
||||||
|
this.tsbServer.DropDown = this.cmsLv;
|
||||||
|
this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
|
||||||
|
resources.ApplyResources(this.tsbServer, "tsbServer");
|
||||||
|
this.tsbServer.Name = "tsbServer";
|
||||||
|
//
|
||||||
// scBig
|
// scBig
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.scBig, "scBig");
|
resources.ApplyResources(this.scBig, "scBig");
|
||||||
@@ -611,7 +615,9 @@
|
|||||||
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsbSubSetting,
|
this.tsbSubSetting,
|
||||||
this.tsbSubUpdate,
|
this.tsbSubUpdate,
|
||||||
this.tsbSubUpdateViaProxy});
|
this.tsbSubUpdateViaProxy,
|
||||||
|
this.tsbSubGroupUpdate,
|
||||||
|
this.tsbSubGroupUpdateViaProxy});
|
||||||
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
|
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
|
||||||
resources.ApplyResources(this.tsbSub, "tsbSub");
|
resources.ApplyResources(this.tsbSub, "tsbSub");
|
||||||
this.tsbSub.Name = "tsbSub";
|
this.tsbSub.Name = "tsbSub";
|
||||||
@@ -634,6 +640,18 @@
|
|||||||
resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy");
|
resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy");
|
||||||
this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click);
|
this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click);
|
||||||
//
|
//
|
||||||
|
// tsbSubGroupUpdate
|
||||||
|
//
|
||||||
|
this.tsbSubGroupUpdate.Name = "tsbSubGroupUpdate";
|
||||||
|
resources.ApplyResources(this.tsbSubGroupUpdate, "tsbSubGroupUpdate");
|
||||||
|
this.tsbSubGroupUpdate.Click += new System.EventHandler(this.tsbSubGroupUpdate_Click);
|
||||||
|
//
|
||||||
|
// tsbSubGroupUpdateViaProxy
|
||||||
|
//
|
||||||
|
this.tsbSubGroupUpdateViaProxy.Name = "tsbSubGroupUpdateViaProxy";
|
||||||
|
resources.ApplyResources(this.tsbSubGroupUpdateViaProxy, "tsbSubGroupUpdateViaProxy");
|
||||||
|
this.tsbSubGroupUpdateViaProxy.Click += new System.EventHandler(this.tsbSubGroupUpdateViaProxy_Click);
|
||||||
|
//
|
||||||
// tsbQRCodeSwitch
|
// tsbQRCodeSwitch
|
||||||
//
|
//
|
||||||
this.tsbQRCodeSwitch.CheckOnClick = true;
|
this.tsbQRCodeSwitch.CheckOnClick = true;
|
||||||
@@ -656,7 +674,8 @@
|
|||||||
this.tsbGlobalHotkeySetting,
|
this.tsbGlobalHotkeySetting,
|
||||||
this.tsbGroupSetting,
|
this.tsbGroupSetting,
|
||||||
this.toolStripSeparator14,
|
this.toolStripSeparator14,
|
||||||
this.tsbBackupGuiNConfig});
|
this.tsbBackupGuiNConfig,
|
||||||
|
this.tsbRestoreGuiNConfig});
|
||||||
this.tsbSetting.Image = global::v2rayN.Properties.Resources.option;
|
this.tsbSetting.Image = global::v2rayN.Properties.Resources.option;
|
||||||
resources.ApplyResources(this.tsbSetting, "tsbSetting");
|
resources.ApplyResources(this.tsbSetting, "tsbSetting");
|
||||||
this.tsbSetting.Name = "tsbSetting";
|
this.tsbSetting.Name = "tsbSetting";
|
||||||
@@ -718,6 +737,7 @@
|
|||||||
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsbCheckUpdateN,
|
this.tsbCheckUpdateN,
|
||||||
this.tsbCheckUpdateCore,
|
this.tsbCheckUpdateCore,
|
||||||
|
this.tsbCheckUpdateSagerNetCore,
|
||||||
this.tsbCheckUpdateXrayCore,
|
this.tsbCheckUpdateXrayCore,
|
||||||
this.toolStripSeparator16,
|
this.toolStripSeparator16,
|
||||||
this.tsbCheckUpdateClashCore,
|
this.tsbCheckUpdateClashCore,
|
||||||
@@ -740,6 +760,12 @@
|
|||||||
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
|
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
|
||||||
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
|
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
|
||||||
//
|
//
|
||||||
|
// tsbCheckUpdateSagerNetCore
|
||||||
|
//
|
||||||
|
this.tsbCheckUpdateSagerNetCore.Name = "tsbCheckUpdateSagerNetCore";
|
||||||
|
resources.ApplyResources(this.tsbCheckUpdateSagerNetCore, "tsbCheckUpdateSagerNetCore");
|
||||||
|
this.tsbCheckUpdateSagerNetCore.Click += new System.EventHandler(this.tsbCheckUpdateSagerNetCore_Click);
|
||||||
|
//
|
||||||
// tsbCheckUpdateXrayCore
|
// tsbCheckUpdateXrayCore
|
||||||
//
|
//
|
||||||
this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore";
|
this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore";
|
||||||
@@ -840,6 +866,12 @@
|
|||||||
this.tsbClose.Name = "tsbClose";
|
this.tsbClose.Name = "tsbClose";
|
||||||
this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click);
|
this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click);
|
||||||
//
|
//
|
||||||
|
// tsbRestoreGuiNConfig
|
||||||
|
//
|
||||||
|
this.tsbRestoreGuiNConfig.Name = "tsbRestoreGuiNConfig";
|
||||||
|
resources.ApplyResources(this.tsbRestoreGuiNConfig, "tsbRestoreGuiNConfig");
|
||||||
|
this.tsbRestoreGuiNConfig.Click += new System.EventHandler(this.tsbRestoreGuiNConfig_Click);
|
||||||
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
@@ -972,6 +1004,10 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashMetaCore;
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashMetaCore;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSortServerResult;
|
private System.Windows.Forms.ToolStripMenuItem menuSortServerResult;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateSagerNetCore;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbSubGroupUpdate;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbSubGroupUpdateViaProxy;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbRestoreGuiNConfig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace v2rayN.Forms
|
|||||||
private List<VmessItem> lstSelecteds = new List<VmessItem>();
|
private List<VmessItem> lstSelecteds = new List<VmessItem>();
|
||||||
private StatisticsHandler statistics;
|
private StatisticsHandler statistics;
|
||||||
private List<VmessItem> lstVmess;
|
private List<VmessItem> lstVmess;
|
||||||
private string groupId = string.Empty;
|
private string _groupId = string.Empty;
|
||||||
private string serverFilter = string.Empty;
|
private string serverFilter = string.Empty;
|
||||||
|
|
||||||
#region Window 事件
|
#region Window 事件
|
||||||
@@ -87,6 +87,12 @@ namespace v2rayN.Forms
|
|||||||
MainFormHandler.Instance.RegisterGlobalHotkey(config, OnHotkeyHandler, UpdateTaskHandler);
|
MainFormHandler.Instance.RegisterGlobalHotkey(config, OnHotkeyHandler, UpdateTaskHandler);
|
||||||
|
|
||||||
_ = LoadV2ray();
|
_ = LoadV2ray();
|
||||||
|
|
||||||
|
if (!Utils.CheckForDotNetVersion())
|
||||||
|
{
|
||||||
|
UI.ShowWarning(ResUI.NetFrameworkRequirementsTip);
|
||||||
|
AppendText(false, ResUI.NetFrameworkRequirementsTip);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
@@ -152,10 +158,18 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
scServers.Panel2Collapsed = true;
|
scServers.Panel2Collapsed = true;
|
||||||
|
|
||||||
if (!config.uiItem.mainLocation.IsEmpty)
|
//if (!config.uiItem.mainLocation.IsEmpty)
|
||||||
{
|
//{
|
||||||
Location = config.uiItem.mainLocation;
|
// if (config.uiItem.mainLocation.X >= SystemInformation.WorkingArea.Width
|
||||||
}
|
// || config.uiItem.mainLocation.Y >= SystemInformation.WorkingArea.Height)
|
||||||
|
// {
|
||||||
|
// Location = new Point(0, 0);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// Location = config.uiItem.mainLocation;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
if (!config.uiItem.mainSize.IsEmpty)
|
if (!config.uiItem.mainSize.IsEmpty)
|
||||||
{
|
{
|
||||||
Width = config.uiItem.mainSize.Width;
|
Width = config.uiItem.mainSize.Width;
|
||||||
@@ -212,13 +226,17 @@ namespace v2rayN.Forms
|
|||||||
private void RefreshServers()
|
private void RefreshServers()
|
||||||
{
|
{
|
||||||
lstVmess = config.vmess
|
lstVmess = config.vmess
|
||||||
.Where(it => Utils.IsNullOrEmpty(groupId) || it.groupId == groupId)
|
.Where(it => Utils.IsNullOrEmpty(_groupId) || it.groupId == _groupId)
|
||||||
.Where(it => Utils.IsNullOrEmpty(serverFilter) || it.remarks.Contains(serverFilter))
|
.Where(it => Utils.IsNullOrEmpty(serverFilter) || it.remarks.Contains(serverFilter))
|
||||||
.OrderBy(it => it.sort)
|
.OrderBy(it => it.sort)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
ConfigHandler.SetDefaultServer(config, lstVmess);
|
ConfigHandler.SetDefaultServer(config, lstVmess);
|
||||||
RefreshServersView();
|
BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
RefreshServersView();
|
||||||
|
}));
|
||||||
|
|
||||||
RefreshServersMenu();
|
RefreshServersMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,11 +301,11 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
for (int k = 0; k < lstVmess.Count; k++)
|
for (int k = 0; k < lstVmess.Count; k++)
|
||||||
{
|
{
|
||||||
string def = string.Empty;
|
string def = (k + 1).ToString();
|
||||||
VmessItem item = lstVmess[k];
|
VmessItem item = lstVmess[k];
|
||||||
if (config.IsActiveNode(item))
|
if (config.IsActiveNode(item))
|
||||||
{
|
{
|
||||||
def = "√";
|
def = Global.CheckMark;
|
||||||
}
|
}
|
||||||
|
|
||||||
ListViewItem lvItem = new ListViewItem(def);
|
ListViewItem lvItem = new ListViewItem(def);
|
||||||
@@ -340,7 +358,7 @@ namespace v2rayN.Forms
|
|||||||
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
||||||
{
|
{
|
||||||
lvServers.Items[index].Selected = true;
|
lvServers.Items[index].Selected = true;
|
||||||
lvServers.EnsureVisible(index); // workaround
|
lvServers.SetScrollPosition(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -477,9 +495,9 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
groupId = string.Empty;
|
_groupId = string.Empty;
|
||||||
//groupId = tabGroup.TabPages[tabGroup.SelectedIndex].Name;
|
//groupId = tabGroup.TabPages[tabGroup.SelectedIndex].Name;
|
||||||
groupId = tabGroup.SelectedTab.Name;
|
_groupId = tabGroup.SelectedTab.Name;
|
||||||
|
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
|
|
||||||
@@ -590,7 +608,7 @@ namespace v2rayN.Forms
|
|||||||
fm = new AddServerForm();
|
fm = new AddServerForm();
|
||||||
}
|
}
|
||||||
fm.vmessItem = index >= 0 ? lstVmess[index] : null;
|
fm.vmessItem = index >= 0 ? lstVmess[index] : null;
|
||||||
fm.groupId = groupId;
|
fm.groupId = _groupId;
|
||||||
fm.eConfigType = configType;
|
fm.eConfigType = configType;
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
@@ -666,7 +684,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuAddVmessServer_Click(object sender, EventArgs e)
|
private void menuAddVmessServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ShowServerForm(EConfigType.Vmess, -1);
|
ShowServerForm(EConfigType.VMess, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuAddVlessServer_Click(object sender, EventArgs e)
|
private void menuAddVlessServer_Click(object sender, EventArgs e)
|
||||||
@@ -793,18 +811,27 @@ namespace v2rayN.Forms
|
|||||||
if (statistics != null)
|
if (statistics != null)
|
||||||
{
|
{
|
||||||
statistics.ClearAllServerStatistics();
|
statistics.ClearAllServerStatistics();
|
||||||
|
RefreshServers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetLvSelectedIndex();
|
int index = GetLvSelectedIndex();
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
MainFormHandler.Instance.Export2ClientConfig(lstVmess[index], config);
|
MainFormHandler.Instance.Export2ClientConfig(lstVmess[index], config);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ServerConfig_Click(object sender, EventArgs e)
|
private void menuExport2ServerConfig_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetLvSelectedIndex();
|
int index = GetLvSelectedIndex();
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
MainFormHandler.Instance.Export2ServerConfig(lstVmess[index], config);
|
MainFormHandler.Instance.Export2ServerConfig(lstVmess[index], config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -924,7 +951,23 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
if (ConfigHandler.SetDefaultServer(ref config, lstVmess[index]) == 0)
|
if (ConfigHandler.SetDefaultServer(ref config, lstVmess[index]) == 0)
|
||||||
{
|
{
|
||||||
RefreshServers();
|
//RefreshServers();
|
||||||
|
for (int k = 0; k < lstVmess.Count; k++)
|
||||||
|
{
|
||||||
|
if (config.IsActiveNode(lstVmess[k]))
|
||||||
|
{
|
||||||
|
lvServers.Items[k].SubItems[0].Text = Global.CheckMark;
|
||||||
|
lvServers.Items[k].ForeColor = Color.DodgerBlue;
|
||||||
|
lvServers.Items[k].Font = new Font(lvServers.Font, FontStyle.Bold);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lvServers.Items[k].SubItems[0].Text = (k + 1).ToString();
|
||||||
|
lvServers.Items[k].ForeColor = lvServers.ForeColor;
|
||||||
|
lvServers.Items[k].Font = new Font(lvServers.Font, FontStyle.Regular);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RefreshServersMenu();
|
||||||
_ = LoadV2ray();
|
_ = LoadV2ray();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -988,7 +1031,7 @@ namespace v2rayN.Forms
|
|||||||
private void menuAddServers_Click(object sender, EventArgs e)
|
private void menuAddServers_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string clipboardData = Utils.GetClipboardData();
|
string clipboardData = Utils.GetClipboardData();
|
||||||
int ret = ConfigHandler.AddBatchServers(ref config, clipboardData, "", groupId);
|
int ret = ConfigHandler.AddBatchServers(ref config, clipboardData, "", _groupId);
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
@@ -1018,7 +1061,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int ret = ConfigHandler.AddBatchServers(ref config, result, "", groupId);
|
int ret = ConfigHandler.AddBatchServers(ref config, result, "", _groupId);
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
@@ -1029,17 +1072,25 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuUpdateSubscriptions_Click(object sender, EventArgs e)
|
private void menuUpdateSubscriptions_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateSubscriptionProcess(false);
|
UpdateSubscriptionProcess("", false);
|
||||||
}
|
}
|
||||||
private void menuUpdateSubViaProxy_Click(object sender, EventArgs e)
|
private void menuUpdateSubViaProxy_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateSubscriptionProcess(true);
|
UpdateSubscriptionProcess("", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbBackupGuiNConfig_Click(object sender, EventArgs e)
|
private void tsbBackupGuiNConfig_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
MainFormHandler.Instance.BackupGuiNConfig(config);
|
MainFormHandler.Instance.BackupGuiNConfig(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbRestoreGuiNConfig_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (MainFormHandler.Instance.RestoreGuiNConfig(ref config))
|
||||||
|
{
|
||||||
|
RefreshServers();
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -1074,7 +1125,7 @@ namespace v2rayN.Forms
|
|||||||
/// <param name="msg"></param>
|
/// <param name="msg"></param>
|
||||||
private void notifyMsg(string msg)
|
private void notifyMsg(string msg)
|
||||||
{
|
{
|
||||||
notifyMain.Text = msg;
|
notifyMain.Text = (msg.Length <= 63 ? msg : msg.Substring(1, 63));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -1115,7 +1166,7 @@ namespace v2rayN.Forms
|
|||||||
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
||||||
{
|
{
|
||||||
lvServers.Items[index].Selected = true;
|
lvServers.Items[index].Selected = true;
|
||||||
lvServers.EnsureVisible(index); // workaround
|
lvServers.SetScrollPosition(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetVisibleCore(true);
|
SetVisibleCore(true);
|
||||||
@@ -1130,6 +1181,12 @@ namespace v2rayN.Forms
|
|||||||
ShowInTaskbar = false;
|
ShowInTaskbar = false;
|
||||||
|
|
||||||
SetVisibleCore(false);
|
SetVisibleCore(false);
|
||||||
|
|
||||||
|
//write Handle to reg
|
||||||
|
if (IsHandleCreated)
|
||||||
|
{
|
||||||
|
Utils.RegWriteValue(Global.MyRegPath, Utils.WindowHwndKey, Convert.ToString((long)Handle));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -1175,8 +1232,8 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
up /= (ulong)(config.statisticsFreshRate / 1000f);
|
up /= (ulong)(config.statisticsFreshRate);
|
||||||
down /= (ulong)(config.statisticsFreshRate / 1000f);
|
down /= (ulong)(config.statisticsFreshRate);
|
||||||
mainMsgControl.SetToolSslInfo("speed", string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down)));
|
mainMsgControl.SetToolSslInfo("speed", string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down)));
|
||||||
|
|
||||||
foreach (var it in statistics)
|
foreach (var it in statistics)
|
||||||
@@ -1244,7 +1301,6 @@ namespace v2rayN.Forms
|
|||||||
int index = GetLvSelectedIndex();
|
int index = GetLvSelectedIndex();
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
UI.Show(ResUI.PleaseSelectServer);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ConfigHandler.MoveServer(ref config, ref lstVmess, index, eMove) == 0)
|
if (ConfigHandler.MoveServer(ref config, ref lstVmess, index, eMove) == 0)
|
||||||
@@ -1321,7 +1377,7 @@ namespace v2rayN.Forms
|
|||||||
menuExit_Click(null, null);
|
menuExit_Click(null, null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
(new UpdateHandle()).CheckUpdateGuiN(config, _updateUI);
|
(new UpdateHandle()).CheckUpdateGuiN(config, _updateUI, config.checkPreReleaseUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
||||||
@@ -1329,6 +1385,11 @@ namespace v2rayN.Forms
|
|||||||
CheckUpdateCore(ECoreType.v2fly);
|
CheckUpdateCore(ECoreType.v2fly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbCheckUpdateSagerNetCore_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CheckUpdateCore(ECoreType.SagerNet);
|
||||||
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
CheckUpdateCore(ECoreType.Xray);
|
CheckUpdateCore(ECoreType.Xray);
|
||||||
@@ -1364,7 +1425,7 @@ namespace v2rayN.Forms
|
|||||||
AppendText(false, ResUI.MsgUpdateV2rayCoreSuccessfully);
|
AppendText(false, ResUI.MsgUpdateV2rayCoreSuccessfully);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
(new UpdateHandle()).CheckUpdateCore(type, config, _updateUI);
|
(new UpdateHandle()).CheckUpdateCore(type, config, _updateUI, config.checkPreReleaseUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateGeo_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateGeo_Click(object sender, EventArgs e)
|
||||||
@@ -1410,18 +1471,27 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateSubscriptionProcess(false);
|
UpdateSubscriptionProcess("", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbSubUpdateViaProxy_Click(object sender, EventArgs e)
|
private void tsbSubUpdateViaProxy_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateSubscriptionProcess(true);
|
UpdateSubscriptionProcess("", true);
|
||||||
|
}
|
||||||
|
private void tsbSubGroupUpdate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateSubscriptionProcess(_groupId, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tsbSubGroupUpdateViaProxy_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateSubscriptionProcess(_groupId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the subscription update process
|
/// the subscription update process
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void UpdateSubscriptionProcess(bool blProxy)
|
private void UpdateSubscriptionProcess(string groupId, bool blProxy)
|
||||||
{
|
{
|
||||||
void _updateUI(bool success, string msg)
|
void _updateUI(bool success, string msg)
|
||||||
{
|
{
|
||||||
@@ -1439,7 +1509,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
(new UpdateHandle()).UpdateSubscriptionProcess(config, blProxy, _updateUI);
|
(new UpdateHandle()).UpdateSubscriptionProcess(config, groupId, blProxy, _updateUI);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e)
|
private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e)
|
||||||
@@ -1530,4 +1600,4 @@ namespace v2rayN.Forms
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -179,6 +179,12 @@
|
|||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>352, 6</value>
|
<value>352, 6</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuServerFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>355, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServerFilter.Text" xml:space="preserve">
|
||||||
|
<value>Set server filter (Ctrl+F)</value>
|
||||||
|
</data>
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>355, 22</value>
|
<value>355, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -203,12 +209,6 @@
|
|||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
||||||
<value>Set as active server (Enter)</value>
|
<value>Set as active server (Enter)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServerFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>355, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServerFilter.Text" xml:space="preserve">
|
|
||||||
<value>Set server filter (Ctrl+F)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>352, 6</value>
|
<value>352, 6</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -218,30 +218,6 @@
|
|||||||
<data name="menuMoveToGroup.Text" xml:space="preserve">
|
<data name="menuMoveToGroup.Text" xml:space="preserve">
|
||||||
<value>Move to Group</value>
|
<value>Move to Group</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>192, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>Move to top (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>192, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>Up (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>192, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>Down (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>192, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>Move to bottom (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveEvent.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveEvent.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>355, 22</value>
|
<value>355, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -339,7 +315,7 @@
|
|||||||
<value>ImageAboveText</value>
|
<value>ImageAboveText</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>356, 644</value>
|
<value>356, 622</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmsLv.Name" xml:space="preserve">
|
<data name=">>cmsLv.Name" xml:space="preserve">
|
||||||
<value>cmsLv</value>
|
<value>cmsLv</value>
|
||||||
@@ -488,6 +464,30 @@
|
|||||||
<data name=">>scServers.ZOrder" xml:space="preserve">
|
<data name=">>scServers.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>192, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Text" xml:space="preserve">
|
||||||
|
<value>Move to top (T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>192, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Text" xml:space="preserve">
|
||||||
|
<value>Up (U)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>192, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Text" xml:space="preserve">
|
||||||
|
<value>Down (D)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>192, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
|
<value>Move to bottom (B)</value>
|
||||||
|
</data>
|
||||||
<data name="scBig.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="scBig.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -599,6 +599,27 @@
|
|||||||
<data name="cmsMain.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="cmsMain.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>278, 192</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsMain.Name" xml:space="preserve">
|
||||||
|
<value>cmsMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsMain.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="notifyMain.Text" xml:space="preserve">
|
||||||
|
<value>v2rayN</value>
|
||||||
|
</data>
|
||||||
|
<data name="notifyMain.Visible" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>277, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||||
|
<value>System proxy</value>
|
||||||
|
</data>
|
||||||
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>243, 22</value>
|
<value>243, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -617,12 +638,6 @@
|
|||||||
<data name="menuKeepNothing.Text" xml:space="preserve">
|
<data name="menuKeepNothing.Text" xml:space="preserve">
|
||||||
<value>Do not change system proxy</value>
|
<value>Do not change system proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>277, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
|
||||||
<value>System proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>277, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -671,21 +686,6 @@
|
|||||||
<data name="menuExit.Text" xml:space="preserve">
|
<data name="menuExit.Text" xml:space="preserve">
|
||||||
<value>Exit</value>
|
<value>Exit</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 192</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMain.Name" xml:space="preserve">
|
|
||||||
<value>cmsMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="notifyMain.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN</value>
|
|
||||||
</data>
|
|
||||||
<data name="notifyMain.Visible" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Top</value>
|
<value>Top</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -716,24 +716,6 @@
|
|||||||
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>6, 56</value>
|
<value>6, 56</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>277, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
|
||||||
<value>Settings</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>277, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
|
||||||
<value>Update subscription without proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>277, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
|
||||||
<value>Update subscription with proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
<value>Magenta</value>
|
<value>Magenta</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -797,6 +779,12 @@
|
|||||||
<data name="tsbBackupGuiNConfig.Text" xml:space="preserve">
|
<data name="tsbBackupGuiNConfig.Text" xml:space="preserve">
|
||||||
<value>BackupGuiConfig</value>
|
<value>BackupGuiConfig</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbRestoreGuiNConfig.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>195, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbRestoreGuiNConfig.Text" xml:space="preserve">
|
||||||
|
<value>RestoreGuiNConfig</value>
|
||||||
|
</data>
|
||||||
<data name="tsbSetting.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
<data name="tsbSetting.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
<value>Magenta</value>
|
<value>Magenta</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -830,48 +818,6 @@
|
|||||||
<data name="toolStripSeparator7.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>6, 56</value>
|
<value>6, 56</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>219, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN (this software)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>219, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>Update v2fly Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>219, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateXrayCore.Text" xml:space="preserve">
|
|
||||||
<value>Update Xray Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator16.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>216, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>219, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashCore.Text" xml:space="preserve">
|
|
||||||
<value>Update clash Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashMetaCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>219, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashMetaCore.Text" xml:space="preserve">
|
|
||||||
<value>Update Clash.Meta Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>216, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeo.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>219, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeo.Text" xml:space="preserve">
|
|
||||||
<value>Update Geo files</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
<data name="tsbCheckUpdate.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
<value>Magenta</value>
|
<value>Magenta</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -887,33 +833,6 @@
|
|||||||
<data name="toolStripSeparator10.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator10.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>6, 56</value>
|
<value>6, 56</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbAbout.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>187, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN Project</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbV2rayWebsite.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>187, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
|
||||||
<value>V2Ray Website</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator12.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>184, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbLanguageDef.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>187, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbLanguageDef.Text" xml:space="preserve">
|
|
||||||
<value>Language-[English]</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbLanguageZhHans.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>187, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbLanguageZhHans.Text" xml:space="preserve">
|
|
||||||
<value>语言-[中文简体]</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
<data name="tsbHelp.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
<value>Magenta</value>
|
<value>Magenta</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -974,6 +893,111 @@
|
|||||||
<data name=">>tsMain.ZOrder" xml:space="preserve">
|
<data name=">>tsMain.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>317, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubSetting.Text" xml:space="preserve">
|
||||||
|
<value>Settings</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>317, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||||
|
<value>Update subscription without proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>317, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
||||||
|
<value>Update subscription with proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubGroupUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>317, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubGroupUpdate.Text" xml:space="preserve">
|
||||||
|
<value>Update group subscription without proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubGroupUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>317, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubGroupUpdateViaProxy.Text" xml:space="preserve">
|
||||||
|
<value>Update group subscription with proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
||||||
|
<value>v2rayN (this software)</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
||||||
|
<value>Update v2fly Core</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateSagerNetCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
|
||||||
|
<value>Update SagerNet Core</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateXrayCore.Text" xml:space="preserve">
|
||||||
|
<value>Update Xray Core</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator16.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>216, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateClashCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateClashCore.Text" xml:space="preserve">
|
||||||
|
<value>Update clash Core</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateClashMetaCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateClashMetaCore.Text" xml:space="preserve">
|
||||||
|
<value>Update Clash.Meta Core</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>216, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateGeo.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>219, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateGeo.Text" xml:space="preserve">
|
||||||
|
<value>Update Geo files</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbAbout.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>187, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbAbout.Text" xml:space="preserve">
|
||||||
|
<value>v2rayN Project</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbV2rayWebsite.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>187, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
||||||
|
<value>V2Ray Website</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator12.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>184, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbLanguageDef.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>187, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbLanguageDef.Text" xml:space="preserve">
|
||||||
|
<value>Language-[English]</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbLanguageZhHans.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>187, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbLanguageZhHans.Text" xml:space="preserve">
|
||||||
|
<value>语言-[中文简体]</value>
|
||||||
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
@@ -1046,6 +1070,12 @@
|
|||||||
<data name=">>toolStripSeparator1.Type" xml:space="preserve">
|
<data name=">>toolStripSeparator1.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>menuServerFilter.Name" xml:space="preserve">
|
||||||
|
<value>menuServerFilter</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServerFilter.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>menuRemoveServer.Name" xml:space="preserve">
|
<data name=">>menuRemoveServer.Name" xml:space="preserve">
|
||||||
<value>menuRemoveServer</value>
|
<value>menuRemoveServer</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1070,12 +1100,6 @@
|
|||||||
<data name=">>menuSetDefaultServer.Type" xml:space="preserve">
|
<data name=">>menuSetDefaultServer.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServerFilter.Name" xml:space="preserve">
|
|
||||||
<value>menuServerFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServerFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripSeparator3.Name" xml:space="preserve">
|
<data name=">>toolStripSeparator3.Name" xml:space="preserve">
|
||||||
<value>toolStripSeparator3</value>
|
<value>toolStripSeparator3</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1322,6 +1346,18 @@
|
|||||||
<data name=">>tsbSubUpdateViaProxy.Type" xml:space="preserve">
|
<data name=">>tsbSubUpdateViaProxy.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>tsbSubGroupUpdate.Name" xml:space="preserve">
|
||||||
|
<value>tsbSubGroupUpdate</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tsbSubGroupUpdate.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tsbSubGroupUpdateViaProxy.Name" xml:space="preserve">
|
||||||
|
<value>tsbSubGroupUpdateViaProxy</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tsbSubGroupUpdateViaProxy.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>tsbQRCodeSwitch.Name" xml:space="preserve">
|
<data name=">>tsbQRCodeSwitch.Name" xml:space="preserve">
|
||||||
<value>tsbQRCodeSwitch</value>
|
<value>tsbQRCodeSwitch</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1412,6 +1448,12 @@
|
|||||||
<data name=">>tsbCheckUpdateCore.Type" xml:space="preserve">
|
<data name=">>tsbCheckUpdateCore.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>tsbCheckUpdateSagerNetCore.Name" xml:space="preserve">
|
||||||
|
<value>tsbCheckUpdateSagerNetCore</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tsbCheckUpdateSagerNetCore.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>tsbCheckUpdateXrayCore.Name" xml:space="preserve">
|
<data name=">>tsbCheckUpdateXrayCore.Name" xml:space="preserve">
|
||||||
<value>tsbCheckUpdateXrayCore</value>
|
<value>tsbCheckUpdateXrayCore</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1508,6 +1550,12 @@
|
|||||||
<data name=">>tsbClose.Type" xml:space="preserve">
|
<data name=">>tsbClose.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>tsbRestoreGuiNConfig.Name" xml:space="preserve">
|
||||||
|
<value>tsbRestoreGuiNConfig</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tsbRestoreGuiNConfig.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>MainForm</value>
|
<value>MainForm</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -570,4 +570,16 @@
|
|||||||
<data name="menuSortServerResult.Text" xml:space="preserve">
|
<data name="menuSortServerResult.Text" xml:space="preserve">
|
||||||
<value>按测试结果排序 (Ctrl+E)</value>
|
<value>按测试结果排序 (Ctrl+E)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
|
||||||
|
<value>SagerNet-Core</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubGroupUpdate.Text" xml:space="preserve">
|
||||||
|
<value>更新当前分组订阅(不通过代理)</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSubGroupUpdateViaProxy.Text" xml:space="preserve">
|
||||||
|
<value>更新当前分组订阅(通过代理)</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbRestoreGuiNConfig.Text" xml:space="preserve">
|
||||||
|
<value>恢复v2rayN配置文件</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -26,7 +26,11 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void MainMsgControl_Load(object sender, EventArgs e)
|
private void MainMsgControl_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
_msgFilter = Utils.RegReadValue(Global.MyRegPath, Utils.MainMsgFilterKey, "");
|
||||||
|
if (!Utils.IsNullOrEmpty(_msgFilter))
|
||||||
|
{
|
||||||
|
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 提示信息
|
#region 提示信息
|
||||||
@@ -188,6 +192,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
_msgFilter = fm.MsgFilter;
|
_msgFilter = fm.MsgFilter;
|
||||||
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
|
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
|
||||||
|
Utils.RegWriteValue(Global.MyRegPath, Utils.MainMsgFilterKey, _msgFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
52
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
52
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -50,6 +50,8 @@
|
|||||||
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||||
|
this.cmbdomainStrategy4Freedom = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label19 = new System.Windows.Forms.Label();
|
||||||
this.linkDnsObjectDoc = new System.Windows.Forms.LinkLabel();
|
this.linkDnsObjectDoc = new System.Windows.Forms.LinkLabel();
|
||||||
this.txtremoteDNS = new System.Windows.Forms.TextBox();
|
this.txtremoteDNS = new System.Windows.Forms.TextBox();
|
||||||
this.label14 = new System.Windows.Forms.Label();
|
this.label14 = new System.Windows.Forms.Label();
|
||||||
@@ -68,6 +70,7 @@
|
|||||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||||
|
this.numStatisticsFreshRate = new System.Windows.Forms.NumericUpDown();
|
||||||
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
|
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
|
||||||
this.label17 = new System.Windows.Forms.Label();
|
this.label17 = new System.Windows.Forms.Label();
|
||||||
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
|
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
|
||||||
@@ -79,7 +82,6 @@
|
|||||||
this.label15 = new System.Windows.Forms.Label();
|
this.label15 = new System.Windows.Forms.Label();
|
||||||
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
||||||
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
||||||
this.cbFreshrate = new System.Windows.Forms.ComboBox();
|
|
||||||
this.lbFreshrate = new System.Windows.Forms.Label();
|
this.lbFreshrate = new System.Windows.Forms.Label();
|
||||||
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
|
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
|
||||||
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
||||||
@@ -106,12 +108,14 @@
|
|||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.chkEnableCheckPreReleaseUpdate = new System.Windows.Forms.CheckBox();
|
||||||
this.tabControl1.SuspendLayout();
|
this.tabControl1.SuspendLayout();
|
||||||
this.tabPage1.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.tabPage2.SuspendLayout();
|
this.tabPage2.SuspendLayout();
|
||||||
this.tabPage6.SuspendLayout();
|
this.tabPage6.SuspendLayout();
|
||||||
this.tabPage7.SuspendLayout();
|
this.tabPage7.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).BeginInit();
|
||||||
this.tabPageCoreType.SuspendLayout();
|
this.tabPageCoreType.SuspendLayout();
|
||||||
this.tabPage3.SuspendLayout();
|
this.tabPage3.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
@@ -268,6 +272,8 @@
|
|||||||
//
|
//
|
||||||
// tabPage2
|
// tabPage2
|
||||||
//
|
//
|
||||||
|
this.tabPage2.Controls.Add(this.cmbdomainStrategy4Freedom);
|
||||||
|
this.tabPage2.Controls.Add(this.label19);
|
||||||
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
||||||
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
||||||
this.tabPage2.Controls.Add(this.label14);
|
this.tabPage2.Controls.Add(this.label14);
|
||||||
@@ -275,6 +281,23 @@
|
|||||||
this.tabPage2.Name = "tabPage2";
|
this.tabPage2.Name = "tabPage2";
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// cmbdomainStrategy4Freedom
|
||||||
|
//
|
||||||
|
this.cmbdomainStrategy4Freedom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbdomainStrategy4Freedom.FormattingEnabled = true;
|
||||||
|
this.cmbdomainStrategy4Freedom.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbdomainStrategy4Freedom.Items"),
|
||||||
|
resources.GetString("cmbdomainStrategy4Freedom.Items1"),
|
||||||
|
resources.GetString("cmbdomainStrategy4Freedom.Items2"),
|
||||||
|
resources.GetString("cmbdomainStrategy4Freedom.Items3")});
|
||||||
|
resources.ApplyResources(this.cmbdomainStrategy4Freedom, "cmbdomainStrategy4Freedom");
|
||||||
|
this.cmbdomainStrategy4Freedom.Name = "cmbdomainStrategy4Freedom";
|
||||||
|
//
|
||||||
|
// label19
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label19, "label19");
|
||||||
|
this.label19.Name = "label19";
|
||||||
|
//
|
||||||
// linkDnsObjectDoc
|
// linkDnsObjectDoc
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc");
|
resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc");
|
||||||
@@ -379,6 +402,8 @@
|
|||||||
//
|
//
|
||||||
// tabPage7
|
// tabPage7
|
||||||
//
|
//
|
||||||
|
this.tabPage7.Controls.Add(this.chkEnableCheckPreReleaseUpdate);
|
||||||
|
this.tabPage7.Controls.Add(this.numStatisticsFreshRate);
|
||||||
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
|
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
|
||||||
this.tabPage7.Controls.Add(this.label17);
|
this.tabPage7.Controls.Add(this.label17);
|
||||||
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
|
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
|
||||||
@@ -390,7 +415,6 @@
|
|||||||
this.tabPage7.Controls.Add(this.label15);
|
this.tabPage7.Controls.Add(this.label15);
|
||||||
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
||||||
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
|
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
|
||||||
this.tabPage7.Controls.Add(this.cbFreshrate);
|
|
||||||
this.tabPage7.Controls.Add(this.lbFreshrate);
|
this.tabPage7.Controls.Add(this.lbFreshrate);
|
||||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
||||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
this.tabPage7.Controls.Add(this.chkAutoRun);
|
||||||
@@ -398,6 +422,11 @@
|
|||||||
this.tabPage7.Name = "tabPage7";
|
this.tabPage7.Name = "tabPage7";
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
this.tabPage7.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// numStatisticsFreshRate
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.numStatisticsFreshRate, "numStatisticsFreshRate");
|
||||||
|
this.numStatisticsFreshRate.Name = "numStatisticsFreshRate";
|
||||||
|
//
|
||||||
// txttrayMenuServersLimit
|
// txttrayMenuServersLimit
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
|
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
|
||||||
@@ -459,13 +488,6 @@
|
|||||||
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
|
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
|
||||||
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
|
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// cbFreshrate
|
|
||||||
//
|
|
||||||
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cbFreshrate.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
|
||||||
this.cbFreshrate.Name = "cbFreshrate";
|
|
||||||
//
|
|
||||||
// lbFreshrate
|
// lbFreshrate
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.lbFreshrate, "lbFreshrate");
|
resources.ApplyResources(this.lbFreshrate, "lbFreshrate");
|
||||||
@@ -636,6 +658,12 @@
|
|||||||
resources.ApplyResources(this.panel1, "panel1");
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
this.panel1.Name = "panel1";
|
this.panel1.Name = "panel1";
|
||||||
//
|
//
|
||||||
|
// chkEnableCheckPreReleaseUpdate
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkEnableCheckPreReleaseUpdate, "chkEnableCheckPreReleaseUpdate");
|
||||||
|
this.chkEnableCheckPreReleaseUpdate.Name = "chkEnableCheckPreReleaseUpdate";
|
||||||
|
this.chkEnableCheckPreReleaseUpdate.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// OptionSettingForm
|
// OptionSettingForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
@@ -657,6 +685,7 @@
|
|||||||
this.tabPage6.PerformLayout();
|
this.tabPage6.PerformLayout();
|
||||||
this.tabPage7.ResumeLayout(false);
|
this.tabPage7.ResumeLayout(false);
|
||||||
this.tabPage7.PerformLayout();
|
this.tabPage7.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).EndInit();
|
||||||
this.tabPageCoreType.ResumeLayout(false);
|
this.tabPageCoreType.ResumeLayout(false);
|
||||||
this.tabPageCoreType.PerformLayout();
|
this.tabPageCoreType.PerformLayout();
|
||||||
this.tabPage3.ResumeLayout(false);
|
this.tabPage3.ResumeLayout(false);
|
||||||
@@ -704,7 +733,6 @@
|
|||||||
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
||||||
private System.Windows.Forms.CheckBox chkEnableStatistics;
|
private System.Windows.Forms.CheckBox chkEnableStatistics;
|
||||||
private System.Windows.Forms.ComboBox cbFreshrate;
|
|
||||||
private System.Windows.Forms.Label lbFreshrate;
|
private System.Windows.Forms.Label lbFreshrate;
|
||||||
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
||||||
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
|
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
|
||||||
@@ -746,5 +774,9 @@
|
|||||||
private System.Windows.Forms.Label label17;
|
private System.Windows.Forms.Label label17;
|
||||||
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
|
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
|
||||||
private System.Windows.Forms.Label label18;
|
private System.Windows.Forms.Label label18;
|
||||||
|
private System.Windows.Forms.NumericUpDown numStatisticsFreshRate;
|
||||||
|
private System.Windows.Forms.ComboBox cmbdomainStrategy4Freedom;
|
||||||
|
private System.Windows.Forms.Label label19;
|
||||||
|
private System.Windows.Forms.CheckBox chkEnableCheckPreReleaseUpdate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ namespace v2rayN.Forms
|
|||||||
private void OptionSettingForm_Load(object sender, EventArgs e)
|
private void OptionSettingForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
|
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
|
||||||
|
|
||||||
InitBase();
|
InitBase();
|
||||||
|
|
||||||
InitKCP();
|
InitKCP();
|
||||||
@@ -56,6 +56,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
//remoteDNS
|
//remoteDNS
|
||||||
txtremoteDNS.Text = config.remoteDNS;
|
txtremoteDNS.Text = config.remoteDNS;
|
||||||
|
cmbdomainStrategy4Freedom.Text = config.domainStrategy4Freedom;
|
||||||
|
|
||||||
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
||||||
|
|
||||||
@@ -88,38 +89,16 @@ namespace v2rayN.Forms
|
|||||||
chkAutoRun.Checked = Utils.IsAutoRun();
|
chkAutoRun.Checked = Utils.IsAutoRun();
|
||||||
|
|
||||||
chkEnableStatistics.Checked = config.enableStatistics;
|
chkEnableStatistics.Checked = config.enableStatistics;
|
||||||
|
numStatisticsFreshRate.Value = config.statisticsFreshRate;
|
||||||
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
||||||
|
|
||||||
ComboItem[] cbSource = new ComboItem[]
|
|
||||||
{
|
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = ResUI.QuickFresh},
|
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = ResUI.MediumFresh},
|
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.slow, Text = ResUI.SlowFresh},
|
|
||||||
};
|
|
||||||
cbFreshrate.DataSource = cbSource;
|
|
||||||
|
|
||||||
cbFreshrate.DisplayMember = "Text";
|
|
||||||
cbFreshrate.ValueMember = "ID";
|
|
||||||
|
|
||||||
switch (config.statisticsFreshRate)
|
|
||||||
{
|
|
||||||
case (int)Global.StatisticsFreshRate.quick:
|
|
||||||
cbFreshrate.SelectedItem = cbSource[0];
|
|
||||||
break;
|
|
||||||
case (int)Global.StatisticsFreshRate.medium:
|
|
||||||
cbFreshrate.SelectedItem = cbSource[1];
|
|
||||||
break;
|
|
||||||
case (int)Global.StatisticsFreshRate.slow:
|
|
||||||
cbFreshrate.SelectedItem = cbSource[2];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
||||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
||||||
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
||||||
|
|
||||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
||||||
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
||||||
|
chkEnableCheckPreReleaseUpdate.Checked = config.checkPreReleaseUpdate;
|
||||||
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,6 +231,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
//remoteDNS
|
//remoteDNS
|
||||||
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
||||||
|
config.domainStrategy4Freedom = cmbdomainStrategy4Freedom.Text;
|
||||||
|
|
||||||
config.defAllowInsecure = chkdefAllowInsecure.Checked;
|
config.defAllowInsecure = chkdefAllowInsecure.Checked;
|
||||||
|
|
||||||
@@ -309,7 +289,8 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
bool lastEnableStatistics = config.enableStatistics;
|
bool lastEnableStatistics = config.enableStatistics;
|
||||||
config.enableStatistics = chkEnableStatistics.Checked;
|
config.enableStatistics = chkEnableStatistics.Checked;
|
||||||
config.statisticsFreshRate = (int)cbFreshrate.SelectedValue;
|
config.statisticsFreshRate = Convert.ToInt32(numStatisticsFreshRate.Value);
|
||||||
|
|
||||||
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
||||||
|
|
||||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
||||||
@@ -318,6 +299,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
||||||
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
||||||
|
config.checkPreReleaseUpdate = chkEnableCheckPreReleaseUpdate.Checked;
|
||||||
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
|
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -121,120 +121,15 @@
|
|||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>662, 469</value>
|
||||||
|
</data>
|
||||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value> Core:基础设置 </value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value> Core:DNS设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Text" xml:space="preserve">
|
|
||||||
<value> Core:KCP设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 211</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>185, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Text" xml:space="preserve">
|
|
||||||
<value>托盘右键菜单服务器展示数量限制</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 184</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>173, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>自动更新订阅的间隔(单位小时)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
|
||||||
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>204, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
|
||||||
<value>自动调整服务器列宽在更新订阅后</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnSetLoopback.Text" xml:space="preserve">
|
|
||||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>自动更新Geo文件的间隔(单位小时)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>150, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>更新Core时忽略Geo文件</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
|
||||||
<value>去重时保留序号较小的项</value>
|
|
||||||
</data>
|
|
||||||
<data name="cbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>431, 37</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>339, 41</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
|
||||||
<value>统计刷新频率</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
|
||||||
<value>开机自动启动(可能会不成功)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage7.Text" xml:space="preserve">
|
|
||||||
<value> v2rayN设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageCoreType.Text" xml:space="preserve">
|
|
||||||
<value> Core类型设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
|
||||||
<value> 系统代理设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 469</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>648, 437</value>
|
<value>648, 437</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -325,24 +220,144 @@
|
|||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>本地监听端口</value>
|
<value>本地监听端口</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
|
<value> Core:DNS设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy4Freedom.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>223, 413</value>
|
||||||
|
</data>
|
||||||
|
<data name="label19.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>8, 417</value>
|
||||||
|
</data>
|
||||||
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>161, 12</value>
|
<value>161, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
||||||
<value>支持填写DnsObject,JSON格式</value>
|
<value>支持填写DnsObject,JSON格式</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="txtremoteDNS.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>638, 366</value>
|
||||||
|
</data>
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>191, 12</value>
|
<value>191, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label14.Text" xml:space="preserve">
|
<data name="label14.Text" xml:space="preserve">
|
||||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage6.Text" xml:space="preserve">
|
||||||
|
<value> Core:KCP设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage7.Text" xml:space="preserve">
|
||||||
|
<value> v2rayN设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="numStatisticsFreshRate.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>472, 37</value>
|
||||||
|
</data>
|
||||||
|
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>248, 211</value>
|
||||||
|
</data>
|
||||||
|
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>185, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label17.Text" xml:space="preserve">
|
||||||
|
<value>托盘右键菜单服务器展示数量限制</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>248, 184</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>173, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>自动更新订阅的间隔(单位小时)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
||||||
|
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>204, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
||||||
|
<value>自动调整服务器列宽在更新订阅后</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSetLoopback.Text" xml:space="preserve">
|
||||||
|
<value>解除Windows10 UWP应用回环代理限制</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>248, 157</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>191, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Text" xml:space="preserve">
|
||||||
|
<value>自动更新Geo文件的间隔(单位小时)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>150, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
||||||
|
<value>更新Core时忽略Geo文件</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>156, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||||
|
<value>去重时保留序号较小的项</value>
|
||||||
|
</data>
|
||||||
|
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>339, 41</value>
|
||||||
|
</data>
|
||||||
|
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>125, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="lbFreshrate.Text" xml:space="preserve">
|
||||||
|
<value>统计刷新频率(单位秒)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||||
|
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>180, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAutoRun.Text" xml:space="preserve">
|
||||||
|
<value>开机自动启动(可能会不成功)</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPageCoreType.Text" xml:space="preserve">
|
||||||
|
<value> Core类型设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage3.Text" xml:space="preserve">
|
||||||
|
<value> 系统代理设置 </value>
|
||||||
|
</data>
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>例外</value>
|
<value>例外</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>173, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label18.Text" xml:space="preserve">
|
||||||
|
<value>高级代理设置, 协议选择(可选)</value>
|
||||||
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>95, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -373,7 +388,7 @@
|
|||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>参数设置</value>
|
<value>参数设置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label18.Text" xml:space="preserve">
|
<data name="chkEnableCheckPreReleaseUpdate.Text" xml:space="preserve">
|
||||||
<value>高级代理设置, 协议选择(可选)</value>
|
<value>检查Pre-Release更新(请谨慎启用)</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -31,6 +31,7 @@
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingDetailsForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingDetailsForm));
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
|
this.linkRuleobjectDoc = new System.Windows.Forms.LinkLabel();
|
||||||
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
||||||
this.clbInboundTag = new System.Windows.Forms.CheckedListBox();
|
this.clbInboundTag = new System.Windows.Forms.CheckedListBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
@@ -50,7 +51,6 @@
|
|||||||
this.txtIP = new System.Windows.Forms.TextBox();
|
this.txtIP = new System.Windows.Forms.TextBox();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.txtDomain = new System.Windows.Forms.TextBox();
|
this.txtDomain = new System.Windows.Forms.TextBox();
|
||||||
this.linkRuleobjectDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.panel3.SuspendLayout();
|
this.panel3.SuspendLayout();
|
||||||
this.panel4.SuspendLayout();
|
this.panel4.SuspendLayout();
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
@@ -65,6 +65,7 @@
|
|||||||
//
|
//
|
||||||
// panel3
|
// panel3
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel3, "panel3");
|
||||||
this.panel3.Controls.Add(this.linkRuleobjectDoc);
|
this.panel3.Controls.Add(this.linkRuleobjectDoc);
|
||||||
this.panel3.Controls.Add(this.chkEnabled);
|
this.panel3.Controls.Add(this.chkEnabled);
|
||||||
this.panel3.Controls.Add(this.clbInboundTag);
|
this.panel3.Controls.Add(this.clbInboundTag);
|
||||||
@@ -76,9 +77,15 @@
|
|||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
this.panel3.Controls.Add(this.labRoutingTips);
|
||||||
this.panel3.Controls.Add(this.label4);
|
this.panel3.Controls.Add(this.label4);
|
||||||
this.panel3.Controls.Add(this.cmbOutboundTag);
|
this.panel3.Controls.Add(this.cmbOutboundTag);
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
this.panel3.Name = "panel3";
|
||||||
//
|
//
|
||||||
|
// linkRuleobjectDoc
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.linkRuleobjectDoc, "linkRuleobjectDoc");
|
||||||
|
this.linkRuleobjectDoc.Name = "linkRuleobjectDoc";
|
||||||
|
this.linkRuleobjectDoc.TabStop = true;
|
||||||
|
this.linkRuleobjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRuleobjectDoc_LinkClicked);
|
||||||
|
//
|
||||||
// chkEnabled
|
// chkEnabled
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkEnabled, "chkEnabled");
|
resources.ApplyResources(this.chkEnabled, "chkEnabled");
|
||||||
@@ -87,8 +94,8 @@
|
|||||||
//
|
//
|
||||||
// clbInboundTag
|
// clbInboundTag
|
||||||
//
|
//
|
||||||
this.clbInboundTag.CheckOnClick = true;
|
|
||||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
||||||
|
this.clbInboundTag.CheckOnClick = true;
|
||||||
this.clbInboundTag.FormattingEnabled = true;
|
this.clbInboundTag.FormattingEnabled = true;
|
||||||
this.clbInboundTag.Items.AddRange(new object[] {
|
this.clbInboundTag.Items.AddRange(new object[] {
|
||||||
resources.GetString("clbInboundTag.Items"),
|
resources.GetString("clbInboundTag.Items"),
|
||||||
@@ -105,8 +112,8 @@
|
|||||||
//
|
//
|
||||||
// clbProtocol
|
// clbProtocol
|
||||||
//
|
//
|
||||||
this.clbProtocol.CheckOnClick = true;
|
|
||||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
||||||
|
this.clbProtocol.CheckOnClick = true;
|
||||||
this.clbProtocol.FormattingEnabled = true;
|
this.clbProtocol.FormattingEnabled = true;
|
||||||
this.clbProtocol.Items.AddRange(new object[] {
|
this.clbProtocol.Items.AddRange(new object[] {
|
||||||
resources.GetString("clbProtocol.Items"),
|
resources.GetString("clbProtocol.Items"),
|
||||||
@@ -132,8 +139,8 @@
|
|||||||
//
|
//
|
||||||
// labRoutingTips
|
// labRoutingTips
|
||||||
//
|
//
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
||||||
|
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
this.labRoutingTips.Name = "labRoutingTips";
|
||||||
//
|
//
|
||||||
// label4
|
// label4
|
||||||
@@ -143,21 +150,21 @@
|
|||||||
//
|
//
|
||||||
// cmbOutboundTag
|
// cmbOutboundTag
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
||||||
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbOutboundTag.FormattingEnabled = true;
|
this.cmbOutboundTag.FormattingEnabled = true;
|
||||||
this.cmbOutboundTag.Items.AddRange(new object[] {
|
this.cmbOutboundTag.Items.AddRange(new object[] {
|
||||||
resources.GetString("cmbOutboundTag.Items"),
|
resources.GetString("cmbOutboundTag.Items"),
|
||||||
resources.GetString("cmbOutboundTag.Items1"),
|
resources.GetString("cmbOutboundTag.Items1"),
|
||||||
resources.GetString("cmbOutboundTag.Items2")});
|
resources.GetString("cmbOutboundTag.Items2")});
|
||||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
|
||||||
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
||||||
//
|
//
|
||||||
// panel4
|
// panel4
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel4, "panel4");
|
||||||
this.panel4.Controls.Add(this.chkAutoSort);
|
this.panel4.Controls.Add(this.chkAutoSort);
|
||||||
this.panel4.Controls.Add(this.btnClose);
|
this.panel4.Controls.Add(this.btnClose);
|
||||||
this.panel4.Controls.Add(this.btnOK);
|
this.panel4.Controls.Add(this.btnOK);
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
|
||||||
this.panel4.Name = "panel4";
|
this.panel4.Name = "panel4";
|
||||||
//
|
//
|
||||||
// chkAutoSort
|
// chkAutoSort
|
||||||
@@ -168,8 +175,8 @@
|
|||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
@@ -183,15 +190,15 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Controls.Add(this.groupBox2);
|
this.panel2.Controls.Add(this.groupBox2);
|
||||||
this.panel2.Controls.Add(this.groupBox1);
|
this.panel2.Controls.Add(this.groupBox1);
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
this.groupBox2.Controls.Add(this.txtIP);
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
|
this.groupBox2.Controls.Add(this.txtIP);
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -202,8 +209,8 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
this.groupBox1.Controls.Add(this.txtDomain);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Controls.Add(this.txtDomain);
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -212,13 +219,6 @@
|
|||||||
resources.ApplyResources(this.txtDomain, "txtDomain");
|
resources.ApplyResources(this.txtDomain, "txtDomain");
|
||||||
this.txtDomain.Name = "txtDomain";
|
this.txtDomain.Name = "txtDomain";
|
||||||
//
|
//
|
||||||
// linkRuleobjectDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkRuleobjectDoc, "linkRuleobjectDoc");
|
|
||||||
this.linkRuleobjectDoc.Name = "linkRuleobjectDoc";
|
|
||||||
this.linkRuleobjectDoc.TabStop = true;
|
|
||||||
this.linkRuleobjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRuleobjectDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// RoutingRuleSettingDetailsForm
|
// RoutingRuleSettingDetailsForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -118,14 +118,20 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="linkRuleobjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>101, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
|
||||||
|
<value>规则详细说明文档</value>
|
||||||
|
</data>
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>670, 18</value>
|
<value>670, 48</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>372, 16</value>
|
<value>372, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>272, 20</value>
|
<value>347, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>279, 20</value>
|
<value>279, 20</value>
|
||||||
@@ -154,6 +160,12 @@
|
|||||||
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>120, 16</value>
|
<value>120, 16</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkAutoSort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>168, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAutoSort.Text" xml:space="preserve">
|
||||||
|
<value>保存时Domain和IP自动排序</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -170,10 +182,4 @@
|
|||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>路由规则详情设置</value>
|
<value>路由规则详情设置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAutoSort.Text" xml:space="preserve">
|
|
||||||
<value>保存时Domain和IP自动排序</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>规则详细说明文档</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
15
v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
generated
15
v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
generated
@@ -45,6 +45,7 @@
|
|||||||
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSetDefaultRouting = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSetDefaultRouting = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuImportAdvancedRules = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuImportAdvancedRules = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem();
|
this.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuServer = new System.Windows.Forms.MenuStrip();
|
this.menuServer = new System.Windows.Forms.MenuStrip();
|
||||||
@@ -71,7 +72,6 @@
|
|||||||
this.txtBlockDomain = new System.Windows.Forms.TextBox();
|
this.txtBlockDomain = new System.Windows.Forms.TextBox();
|
||||||
this.tabPageRuleList = new System.Windows.Forms.TabPage();
|
this.tabPageRuleList = new System.Windows.Forms.TabPage();
|
||||||
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
this.panel1.SuspendLayout();
|
this.panel1.SuspendLayout();
|
||||||
this.cmsLv.SuspendLayout();
|
this.cmsLv.SuspendLayout();
|
||||||
@@ -135,9 +135,6 @@
|
|||||||
//
|
//
|
||||||
this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbdomainMatcher.FormattingEnabled = true;
|
this.cmbdomainMatcher.FormattingEnabled = true;
|
||||||
this.cmbdomainMatcher.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbdomainMatcher.Items"),
|
|
||||||
resources.GetString("cmbdomainMatcher.Items1")});
|
|
||||||
resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher");
|
resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher");
|
||||||
this.cmbdomainMatcher.Name = "cmbdomainMatcher";
|
this.cmbdomainMatcher.Name = "cmbdomainMatcher";
|
||||||
//
|
//
|
||||||
@@ -209,6 +206,11 @@
|
|||||||
resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting");
|
resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting");
|
||||||
this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click);
|
this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click);
|
||||||
//
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||||
|
//
|
||||||
// menuImportAdvancedRules
|
// menuImportAdvancedRules
|
||||||
//
|
//
|
||||||
this.menuImportAdvancedRules.Name = "menuImportAdvancedRules";
|
this.menuImportAdvancedRules.Name = "menuImportAdvancedRules";
|
||||||
@@ -390,11 +392,6 @@
|
|||||||
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
||||||
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
||||||
//
|
//
|
||||||
// toolStripSeparator1
|
|
||||||
//
|
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
|
||||||
//
|
|
||||||
// RoutingSettingForm
|
// RoutingSettingForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ namespace v2rayN.Forms
|
|||||||
private void RoutingSettingForm_Load(object sender, EventArgs e)
|
private void RoutingSettingForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ConfigHandler.InitBuiltinRouting(ref config);
|
ConfigHandler.InitBuiltinRouting(ref config);
|
||||||
|
cmbdomainMatcher.Items.AddRange(Global.domainMatchers.ToArray());
|
||||||
|
|
||||||
cmbdomainStrategy.Text = config.domainStrategy;
|
cmbdomainStrategy.Text = config.domainStrategy;
|
||||||
chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced;
|
chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced;
|
||||||
@@ -169,7 +170,7 @@ namespace v2rayN.Forms
|
|||||||
string def = string.Empty;
|
string def = string.Empty;
|
||||||
if (config.routingIndex.Equals(k))
|
if (config.routingIndex.Equals(k))
|
||||||
{
|
{
|
||||||
def = "√";
|
def = Global.CheckMark;
|
||||||
}
|
}
|
||||||
|
|
||||||
ListViewItem lvItem = new ListViewItem(def);
|
ListViewItem lvItem = new ListViewItem(def);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -13,11 +13,13 @@ namespace v2rayN
|
|||||||
public const string UpdateUrl = AboutUrl + @"/releases";
|
public const string UpdateUrl = AboutUrl + @"/releases";
|
||||||
public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases";
|
public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases";
|
||||||
public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
|
public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
|
||||||
|
public const string SagerNetCoreUrl = "https://github.com/SagerNet/v2ray-core/releases";
|
||||||
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
||||||
public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases";
|
public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases";
|
||||||
public const string clashMetaCoreUrl = "https://github.com/MetaCubeX/Clash.Meta/releases";
|
public const string clashMetaCoreUrl = "https://github.com/MetaCubeX/Clash.Meta/releases";
|
||||||
public const string hysteriaCoreUrl = "https://github.com/HyNetwork/hysteria/releases";
|
public const string hysteriaCoreUrl = "https://github.com/HyNetwork/hysteria/releases";
|
||||||
public const string naiveproxyCoreUrl = "https://github.com/klzgrad/naiveproxy/releases";
|
public const string naiveproxyCoreUrl = "https://github.com/klzgrad/naiveproxy/releases";
|
||||||
|
public const string tuicCoreUrl = "https://github.com/EAimTY/tuic/releases";
|
||||||
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
|
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
|
||||||
|
|
||||||
|
|
||||||
@@ -191,12 +193,6 @@ namespace v2rayN
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string CustomIconName = "v2rayN.ico";
|
public const string CustomIconName = "v2rayN.ico";
|
||||||
|
|
||||||
public enum StatisticsFreshRate
|
|
||||||
{
|
|
||||||
quick = 1000,
|
|
||||||
medium = 2000,
|
|
||||||
slow = 3000
|
|
||||||
}
|
|
||||||
public const string StatisticLogOverall = "StatisticLogOverall.json";
|
public const string StatisticLogOverall = "StatisticLogOverall.json";
|
||||||
|
|
||||||
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
|
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
|
||||||
@@ -212,13 +208,16 @@ namespace v2rayN
|
|||||||
|
|
||||||
public static readonly List<string> vmessSecuritys = new List<string> { "aes-128-gcm", "chacha20-poly1305", "auto", "none", "zero" };
|
public static readonly List<string> vmessSecuritys = new List<string> { "aes-128-gcm", "chacha20-poly1305", "auto", "none", "zero" };
|
||||||
public static readonly List<string> ssSecuritys = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
public static readonly List<string> ssSecuritys = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
||||||
|
public static readonly List<string> ssSecuritysInSagerNet = new List<string> { "none", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "rc4", "rc4-md5", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-cfb8", "aes-192-cfb8", "aes-256-cfb8", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "bf-cfb", "cast5-cfb", "des-cfb", "idea-cfb", "rc2-cfb", "seed-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", "camellia-128-cfb8", "camellia-192-cfb8", "camellia-256-cfb8", "salsa20", "chacha20", "chacha20-ietf", "xchacha20" };
|
||||||
public static readonly List<string> ssSecuritysInXray = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "none", "plain", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" };
|
public static readonly List<string> ssSecuritysInXray = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "none", "plain", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" };
|
||||||
public static readonly List<string> xtlsFlows = new List<string> { "", "xtls-rprx-origin", "xtls-rprx-origin-udp443", "xtls-rprx-direct", "xtls-rprx-direct-udp443" };
|
public static readonly List<string> xtlsFlows = new List<string> { "", "xtls-rprx-origin", "xtls-rprx-origin-udp443", "xtls-rprx-direct", "xtls-rprx-direct-udp443" };
|
||||||
public static readonly List<string> networks = new List<string> { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
public static readonly List<string> networks = new List<string> { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
||||||
public static readonly List<string> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
public static readonly List<string> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
||||||
public static readonly List<string> coreTypes = new List<string> { "v2fly", "Xray" };
|
public static readonly List<string> coreTypes = new List<string> { "v2fly", "SagerNet", "Xray" };
|
||||||
|
public static readonly List<string> domainMatchers = new List<string> { "linear", "mph", "" };
|
||||||
public const string GrpcgunMode = "gun";
|
public const string GrpcgunMode = "gun";
|
||||||
public const string GrpcmultiMode = "multi";
|
public const string GrpcmultiMode = "multi";
|
||||||
|
public const string CheckMark = "√";
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -54,11 +54,9 @@ namespace v2rayN.Handler
|
|||||||
//Mux
|
//Mux
|
||||||
muxEnabled = false,
|
muxEnabled = false,
|
||||||
|
|
||||||
// 默认不开启统计
|
|
||||||
enableStatistics = false,
|
enableStatistics = false,
|
||||||
|
|
||||||
// 默认中等刷新率
|
statisticsFreshRate = 1,
|
||||||
statisticsFreshRate = (int)Global.StatisticsFreshRate.medium,
|
|
||||||
|
|
||||||
enableRoutingAdvanced = true
|
enableRoutingAdvanced = true
|
||||||
};
|
};
|
||||||
@@ -97,10 +95,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.domainStrategy = "IPIfNonMatch";
|
config.domainStrategy = "IPIfNonMatch";
|
||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(config.domainMatcher))
|
//if (Utils.IsNullOrEmpty(config.domainMatcher))
|
||||||
{
|
//{
|
||||||
config.domainMatcher = "linear";
|
// config.domainMatcher = "linear";
|
||||||
}
|
//}
|
||||||
|
|
||||||
//kcp
|
//kcp
|
||||||
if (config.kcpItem == null)
|
if (config.kcpItem == null)
|
||||||
@@ -158,7 +156,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.groupItem = new List<GroupItem>();
|
config.groupItem = new List<GroupItem>();
|
||||||
}
|
}
|
||||||
|
if (config.statisticsFreshRate > 100)
|
||||||
|
{
|
||||||
|
config.statisticsFreshRate = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (config == null
|
if (config == null
|
||||||
|| config.vmess.Count <= 0
|
|| config.vmess.Count <= 0
|
||||||
@@ -245,7 +246,7 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
public static int AddServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
||||||
{
|
{
|
||||||
vmessItem.configType = EConfigType.Vmess;
|
vmessItem.configType = EConfigType.VMess;
|
||||||
|
|
||||||
vmessItem.address = vmessItem.address.TrimEx();
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
vmessItem.id = vmessItem.id.TrimEx();
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
@@ -480,8 +481,9 @@ namespace v2rayN.Handler
|
|||||||
File.Delete(fileName);
|
File.Delete(fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,7 +529,7 @@ namespace v2rayN.Handler
|
|||||||
vmessItem.id = vmessItem.id.TrimEx();
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
vmessItem.security = vmessItem.security.TrimEx();
|
vmessItem.security = vmessItem.security.TrimEx();
|
||||||
|
|
||||||
if (!LazyConfig.Instance.GetShadowsocksSecuritys().Contains(vmessItem.security))
|
if (!LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).Contains(vmessItem.security))
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -609,7 +611,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (vmessItem.configType == EConfigType.Vmess)
|
if (vmessItem.configType == EConfigType.VMess)
|
||||||
{
|
{
|
||||||
string path = "";
|
string path = "";
|
||||||
string host = "";
|
string host = "";
|
||||||
@@ -812,8 +814,9 @@ namespace v2rayN.Handler
|
|||||||
&& o.headerType == n.headerType
|
&& o.headerType == n.headerType
|
||||||
&& o.requestHost == n.requestHost
|
&& o.requestHost == n.requestHost
|
||||||
&& o.path == n.path
|
&& o.path == n.path
|
||||||
&& o.streamSecurity == n.streamSecurity
|
&& (o.configType == EConfigType.Trojan || o.streamSecurity == n.streamSecurity)
|
||||||
&& o.flow == n.flow
|
&& o.flow == n.flow
|
||||||
|
&& o.sni == n.sni
|
||||||
&& (!remarks || o.remarks == n.remarks);
|
&& (!remarks || o.remarks == n.remarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -896,7 +899,7 @@ namespace v2rayN.Handler
|
|||||||
//groupId
|
//groupId
|
||||||
vmessItem.groupId = groupId;
|
vmessItem.groupId = groupId;
|
||||||
|
|
||||||
if (vmessItem.configType == EConfigType.Vmess)
|
if (vmessItem.configType == EConfigType.VMess)
|
||||||
{
|
{
|
||||||
if (AddServer(ref config, vmessItem, false) == 0)
|
if (AddServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
@@ -976,7 +979,9 @@ namespace v2rayN.Handler
|
|||||||
else if (clipboardData.IndexOf("server") >= 0
|
else if (clipboardData.IndexOf("server") >= 0
|
||||||
&& clipboardData.IndexOf("up") >= 0
|
&& clipboardData.IndexOf("up") >= 0
|
||||||
&& clipboardData.IndexOf("down") >= 0
|
&& clipboardData.IndexOf("down") >= 0
|
||||||
&& clipboardData.IndexOf("listen") >= 0)
|
&& clipboardData.IndexOf("listen") >= 0
|
||||||
|
&& clipboardData.IndexOf("<html>") < 0
|
||||||
|
&& clipboardData.IndexOf("<body>") < 0)
|
||||||
{
|
{
|
||||||
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||||
File.WriteAllText(fileName, clipboardData);
|
File.WriteAllText(fileName, clipboardData);
|
||||||
@@ -987,7 +992,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
//Is naiveproxy configuration
|
//Is naiveproxy configuration
|
||||||
else if (clipboardData.IndexOf("listen") >= 0
|
else if (clipboardData.IndexOf("listen") >= 0
|
||||||
&& clipboardData.IndexOf("proxy") >= 0)
|
&& clipboardData.IndexOf("proxy") >= 0
|
||||||
|
&& clipboardData.IndexOf("<html>") < 0
|
||||||
|
&& clipboardData.IndexOf("<body>") < 0)
|
||||||
{
|
{
|
||||||
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||||
File.WriteAllText(fileName, clipboardData);
|
File.WriteAllText(fileName, clipboardData);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.IO;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
|
using System.Net.Sockets;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -66,7 +67,11 @@ namespace v2rayN.Handler
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
//Utils.SaveLog(ex.Message, ex);
|
//Utils.SaveLog(ex.Message, ex);
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
|
if (ex.InnerException != null)
|
||||||
|
{
|
||||||
|
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -104,7 +109,11 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
|
if (ex.InnerException != null)
|
||||||
|
{
|
||||||
|
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,6 +175,11 @@ namespace v2rayN.Handler
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
|
if (ex.InnerException != null)
|
||||||
|
{
|
||||||
|
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -238,13 +252,35 @@ namespace v2rayN.Handler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
var webProxy = new WebProxy(Global.Loopback, httpPort);
|
if (!SocketCheck(Global.Loopback, httpPort))
|
||||||
if (RunAvailabilityCheck(webProxy) > 0)
|
|
||||||
{
|
{
|
||||||
return webProxy;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return new WebProxy(Global.Loopback, httpPort);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool SocketCheck(string ip, int port)
|
||||||
|
{
|
||||||
|
Socket sock = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IPAddress ipa = IPAddress.Parse(ip);
|
||||||
|
IPEndPoint point = new IPEndPoint(ipa, port);
|
||||||
|
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
sock.Connect(point);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (sock != null)
|
||||||
|
{
|
||||||
|
sock.Close();
|
||||||
|
sock.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,14 +22,18 @@ namespace v2rayN.Handler
|
|||||||
return _config;
|
return _config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> GetShadowsocksSecuritys()
|
public List<string> GetShadowsocksSecuritys(VmessItem vmessItem)
|
||||||
{
|
{
|
||||||
if (GetCoreType(null, EConfigType.Shadowsocks) == ECoreType.v2fly)
|
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.v2fly)
|
||||||
{
|
{
|
||||||
return Global.ssSecuritys;
|
return Global.ssSecuritys;
|
||||||
}
|
}
|
||||||
|
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.Xray)
|
||||||
|
{
|
||||||
|
return Global.ssSecuritysInXray;
|
||||||
|
}
|
||||||
|
|
||||||
return Global.ssSecuritysInXray;
|
return Global.ssSecuritysInSagerNet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ECoreType GetCoreType(VmessItem vmessItem, EConfigType eConfigType)
|
public ECoreType GetCoreType(VmessItem vmessItem, EConfigType eConfigType)
|
||||||
@@ -68,7 +72,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
coreType = ECoreType.v2rayN,
|
coreType = ECoreType.v2rayN,
|
||||||
coreUrl = Global.NUrl,
|
coreUrl = Global.NUrl,
|
||||||
coreLatestUrl = Global.NUrl + "/latest",
|
coreReleaseApiUrl = Global.NUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
coreDownloadUrl32 = Global.NUrl + "/download/{0}/v2rayN.zip",
|
coreDownloadUrl32 = Global.NUrl + "/download/{0}/v2rayN.zip",
|
||||||
coreDownloadUrl64 = Global.NUrl + "/download/{0}/v2rayN.zip",
|
coreDownloadUrl64 = Global.NUrl + "/download/{0}/v2rayN.zip",
|
||||||
});
|
});
|
||||||
@@ -79,10 +83,24 @@ namespace v2rayN.Handler
|
|||||||
coreExes = new List<string> { "wv2ray", "v2ray" },
|
coreExes = new List<string> { "wv2ray", "v2ray" },
|
||||||
arguments = "",
|
arguments = "",
|
||||||
coreUrl = Global.v2flyCoreUrl,
|
coreUrl = Global.v2flyCoreUrl,
|
||||||
coreLatestUrl = Global.v2flyCoreUrl + "/latest",
|
coreReleaseApiUrl = Global.v2flyCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
coreDownloadUrl32 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
|
coreDownloadUrl32 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
|
||||||
coreDownloadUrl64 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
|
coreDownloadUrl64 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
|
||||||
match = "V2Ray"
|
match = "V2Ray",
|
||||||
|
versionArg = "-version"
|
||||||
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.SagerNet,
|
||||||
|
coreExes = new List<string> { "v2ray" },
|
||||||
|
arguments = "run",
|
||||||
|
coreUrl = Global.SagerNetCoreUrl,
|
||||||
|
coreReleaseApiUrl = Global.SagerNetCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
|
coreDownloadUrl32 = Global.SagerNetCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
|
||||||
|
coreDownloadUrl64 = Global.SagerNetCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
|
||||||
|
match = "V2Ray",
|
||||||
|
versionArg = "version"
|
||||||
});
|
});
|
||||||
|
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
@@ -91,10 +109,11 @@ namespace v2rayN.Handler
|
|||||||
coreExes = new List<string> { "xray" },
|
coreExes = new List<string> { "xray" },
|
||||||
arguments = "",
|
arguments = "",
|
||||||
coreUrl = Global.xrayCoreUrl,
|
coreUrl = Global.xrayCoreUrl,
|
||||||
coreLatestUrl = Global.xrayCoreUrl + "/latest",
|
coreReleaseApiUrl = Global.xrayCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
coreDownloadUrl32 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
|
coreDownloadUrl32 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
|
||||||
coreDownloadUrl64 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
|
coreDownloadUrl64 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
|
||||||
match = "Xray"
|
match = "Xray",
|
||||||
|
versionArg = "-version"
|
||||||
});
|
});
|
||||||
|
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
@@ -103,32 +122,35 @@ namespace v2rayN.Handler
|
|||||||
coreExes = new List<string> { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" },
|
coreExes = new List<string> { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" },
|
||||||
arguments = "-f config.json",
|
arguments = "-f config.json",
|
||||||
coreUrl = Global.clashCoreUrl,
|
coreUrl = Global.clashCoreUrl,
|
||||||
coreLatestUrl = Global.clashCoreUrl + "/latest",
|
coreReleaseApiUrl = Global.clashCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
coreDownloadUrl32 = Global.clashCoreUrl + "/download/{0}/clash-windows-386-{0}.zip",
|
coreDownloadUrl32 = Global.clashCoreUrl + "/download/{0}/clash-windows-386-{0}.zip",
|
||||||
coreDownloadUrl64 = Global.clashCoreUrl + "/download/{0}/clash-windows-amd64-{0}.zip",
|
coreDownloadUrl64 = Global.clashCoreUrl + "/download/{0}/clash-windows-amd64-{0}.zip",
|
||||||
match = "v"
|
match = "v",
|
||||||
|
versionArg = "-v"
|
||||||
});
|
});
|
||||||
|
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
{
|
{
|
||||||
coreType = ECoreType.clash_meta,
|
coreType = ECoreType.clash_meta,
|
||||||
coreExes = new List<string> { "Clash.Meta-windows-amd64v1", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
|
coreExes = new List<string> { "Clash.Meta-windows-amd64-compatible", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
|
||||||
arguments = "-f config.json",
|
arguments = "-f config.json",
|
||||||
coreUrl = Global.clashMetaCoreUrl,
|
coreUrl = Global.clashMetaCoreUrl,
|
||||||
coreLatestUrl = Global.clashMetaCoreUrl + "/latest",
|
coreReleaseApiUrl = Global.clashMetaCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
coreDownloadUrl32 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-386-{0}.zip",
|
coreDownloadUrl32 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-386-{0}.zip",
|
||||||
coreDownloadUrl64 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-amd64-compatible-{0}.zip",
|
coreDownloadUrl64 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-amd64-compatible-{0}.zip",
|
||||||
|
match = "v",
|
||||||
|
versionArg = "-v"
|
||||||
});
|
});
|
||||||
|
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
{
|
{
|
||||||
coreType = ECoreType.hysteria,
|
coreType = ECoreType.hysteria,
|
||||||
coreExes = new List<string> { "hysteria-tun-windows-6.0-amd64", "hysteria-tun-windows-6.0-386", "hysteria" },
|
coreExes = new List<string> { "hysteria-windows-amd64", "hysteria-windows-386", "hysteria" },
|
||||||
arguments = "",
|
arguments = "",
|
||||||
coreUrl = Global.hysteriaCoreUrl,
|
coreUrl = Global.hysteriaCoreUrl,
|
||||||
coreLatestUrl = Global.hysteriaCoreUrl + "/latest",
|
coreReleaseApiUrl = Global.hysteriaCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
coreDownloadUrl32 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-386.exe",
|
coreDownloadUrl32 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-windows-386.exe",
|
||||||
coreDownloadUrl64 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-amd64.exe",
|
coreDownloadUrl64 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-windows-amd64.exe",
|
||||||
});
|
});
|
||||||
|
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
@@ -138,6 +160,14 @@ namespace v2rayN.Handler
|
|||||||
arguments = "config.json",
|
arguments = "config.json",
|
||||||
coreUrl = Global.naiveproxyCoreUrl
|
coreUrl = Global.naiveproxyCoreUrl
|
||||||
});
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.tuic,
|
||||||
|
coreExes = new List<string> { "tuic-client", "tuic" },
|
||||||
|
arguments = "-c config.json",
|
||||||
|
coreUrl = Global.tuicCoreUrl
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ namespace v2rayN.Handler
|
|||||||
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||||
//graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
//graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
||||||
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
|
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
|
||||||
graphics.FillEllipse(drawBrush, width/2, width/2, width/2, width/2);
|
graphics.FillEllipse(drawBrush, width / 2, width / 2, width / 2, width / 2);
|
||||||
|
|
||||||
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
||||||
|
|
||||||
@@ -118,8 +118,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (item.configType != EConfigType.Vmess
|
if (item.configType == EConfigType.Custom)
|
||||||
&& item.configType != EConfigType.VLESS)
|
|
||||||
{
|
{
|
||||||
UI.Show(ResUI.NonVmessService);
|
UI.Show(ResUI.NonVmessService);
|
||||||
return;
|
return;
|
||||||
@@ -158,7 +157,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (item.configType != EConfigType.Vmess
|
if (item.configType != EConfigType.VMess
|
||||||
&& item.configType != EConfigType.VLESS)
|
&& item.configType != EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
UI.Show(ResUI.NonVmessService);
|
UI.Show(ResUI.NonVmessService);
|
||||||
@@ -233,6 +232,46 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool RestoreGuiNConfig(ref Config config)
|
||||||
|
{
|
||||||
|
var fileContent = string.Empty;
|
||||||
|
using (OpenFileDialog fileDialog = new OpenFileDialog())
|
||||||
|
{
|
||||||
|
fileDialog.InitialDirectory = Utils.GetBackupPath("");
|
||||||
|
fileDialog.Filter = "guiNConfig|*.json|All|*.*";
|
||||||
|
fileDialog.FilterIndex = 2;
|
||||||
|
fileDialog.RestoreDirectory = true;
|
||||||
|
|
||||||
|
if (fileDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
fileContent = Utils.LoadResource(fileDialog.FileName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(fileContent))
|
||||||
|
{
|
||||||
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var resConfig = Utils.FromJson<Config>(fileContent);
|
||||||
|
if (resConfig == null)
|
||||||
|
{
|
||||||
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//backup first
|
||||||
|
BackupGuiNConfig(config, true);
|
||||||
|
|
||||||
|
config = resConfig;
|
||||||
|
LazyConfig.Instance.SetConfig(ref config);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public void UpdateTask(Config config, Action<bool, string> update)
|
public void UpdateTask(Config config, Action<bool, string> update)
|
||||||
{
|
{
|
||||||
Task.Run(() => UpdateTaskRun(config, update));
|
Task.Run(() => UpdateTaskRun(config, update));
|
||||||
@@ -255,7 +294,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if ((dtNow - autoUpdateSubTime).Hours % config.autoUpdateSubInterval == 0)
|
if ((dtNow - autoUpdateSubTime).Hours % config.autoUpdateSubInterval == 0)
|
||||||
{
|
{
|
||||||
updateHandle.UpdateSubscriptionProcess(config, true, (bool success, string msg) =>
|
updateHandle.UpdateSubscriptionProcess(config, "", true, (bool success, string msg) =>
|
||||||
{
|
{
|
||||||
update(success, msg);
|
update(success, msg);
|
||||||
if (success)
|
if (success)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Drawing;
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
using ZXing;
|
using ZXing;
|
||||||
using ZXing.QrCode;
|
using ZXing.QrCode;
|
||||||
|
|
||||||
@@ -34,8 +35,9 @@ namespace v2rayN.Handler
|
|||||||
img = (Image)bmp;
|
img = (Image)bmp;
|
||||||
return img;
|
return img;
|
||||||
}
|
}
|
||||||
catch
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return img;
|
return img;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
switch (item.configType)
|
switch (item.configType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
url = ShareVmess(item);
|
url = ShareVmess(item);
|
||||||
break;
|
break;
|
||||||
case EConfigType.Shadowsocks:
|
case EConfigType.Shadowsocks:
|
||||||
@@ -51,8 +51,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,8 +361,9 @@ namespace v2rayN.Handler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
msg = ResUI.Incorrectconfiguration;
|
msg = ResUI.Incorrectconfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -374,7 +376,7 @@ namespace v2rayN.Handler
|
|||||||
msg = string.Empty;
|
msg = string.Empty;
|
||||||
var vmessItem = new VmessItem
|
var vmessItem = new VmessItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.Vmess
|
configType = EConfigType.VMess
|
||||||
};
|
};
|
||||||
|
|
||||||
result = result.Substring(Global.vmessProtocol.Length);
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
@@ -422,7 +424,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
VmessItem vmessItem = new VmessItem
|
VmessItem vmessItem = new VmessItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.Vmess
|
configType = EConfigType.VMess
|
||||||
};
|
};
|
||||||
result = result.Substring(Global.vmessProtocol.Length);
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
int indexSplit = result.IndexOf("?");
|
int indexSplit = result.IndexOf("?");
|
||||||
@@ -460,7 +462,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
VmessItem i = new VmessItem
|
VmessItem i = new VmessItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.Vmess,
|
configType = EConfigType.VMess,
|
||||||
security = "auto"
|
security = "auto"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Thread.Sleep(config_.statisticsFreshRate);
|
Thread.Sleep(1000 * config_.statisticsFreshRate);
|
||||||
channel_.ConnectAsync();
|
channel_.ConnectAsync();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -190,15 +190,16 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (serverStatistics_ != null)
|
if (serverStatistics_ != null)
|
||||||
{
|
{
|
||||||
foreach (var item in serverStatistics_.server)
|
//foreach (var item in serverStatistics_.server)
|
||||||
{
|
//{
|
||||||
item.todayUp = 0;
|
// item.todayUp = 0;
|
||||||
item.todayDown = 0;
|
// item.todayDown = 0;
|
||||||
item.totalUp = 0;
|
// item.totalUp = 0;
|
||||||
item.totalDown = 0;
|
// item.totalDown = 0;
|
||||||
// update ui display to zero
|
// // update ui display to zero
|
||||||
updateFunc_(0, 0, new List<ServerStatItem> { item });
|
// updateFunc_(0, 0, new List<ServerStatItem> { item });
|
||||||
}
|
//}
|
||||||
|
serverStatistics_.server = new List<ServerStatItem>();
|
||||||
|
|
||||||
// update statistic json file
|
// update statistic json file
|
||||||
SaveToFile();
|
SaveToFile();
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Resx;
|
using v2rayN.Resx;
|
||||||
@@ -31,7 +34,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckUpdateGuiN(Config config, Action<bool, string> update)
|
public void CheckUpdateGuiN(Config config, Action<bool, string> update, bool preRelease)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
@@ -97,11 +100,11 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "v2rayN"));
|
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "v2rayN"));
|
||||||
CheckUpdateAsync(ECoreType.v2rayN);
|
CheckUpdateAsync(ECoreType.v2rayN, preRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void CheckUpdateCore(ECoreType type, Config config, Action<bool, string> update)
|
public void CheckUpdateCore(ECoreType type, Config config, Action<bool, string> update, bool preRelease)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
@@ -152,11 +155,11 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "Core"));
|
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "Core"));
|
||||||
CheckUpdateAsync(type);
|
CheckUpdateAsync(type, preRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void UpdateSubscriptionProcess(Config config, bool blProxy, Action<bool, string> update)
|
public void UpdateSubscriptionProcess(Config config, string groupId, bool blProxy, Action<bool, string> update)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
@@ -187,10 +190,15 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(groupId) && item.groupId != groupId)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
string id = item.id.TrimEx();
|
string id = item.id.TrimEx();
|
||||||
string url = item.url.TrimEx();
|
string url = item.url.TrimEx();
|
||||||
string userAgent = item.userAgent.TrimEx();
|
string userAgent = item.userAgent.TrimEx();
|
||||||
string groupId = item.groupId.TrimEx();
|
//string groupId = item.groupId.TrimEx();
|
||||||
string hashCode = $"{item.remarks}->";
|
string hashCode = $"{item.remarks}->";
|
||||||
if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url))
|
if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url))
|
||||||
{
|
{
|
||||||
@@ -198,17 +206,32 @@ namespace v2rayN.Handler
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateFunc(false, $"{hashCode}{ResUI.MsgStartGettingSubscriptions}");
|
var downloadHandle = new DownloadHandle();
|
||||||
var result = await (new DownloadHandle()).DownloadStringAsync(url, blProxy, userAgent);
|
downloadHandle.Error += (sender2, args) =>
|
||||||
|
{
|
||||||
|
_updateFunc(false, $"{hashCode}{args.GetException().Message}");
|
||||||
|
};
|
||||||
|
|
||||||
|
_updateFunc(false, $"{hashCode}{ResUI.MsgStartGettingSubscriptions}");
|
||||||
|
var result = await downloadHandle.DownloadStringAsync(url, blProxy, userAgent);
|
||||||
|
if (blProxy && Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
result = await downloadHandle.DownloadStringAsync(url, false, userAgent);
|
||||||
|
}
|
||||||
|
|
||||||
_updateFunc(false, $"{hashCode}{ResUI.MsgGetSubscriptionSuccessfully}");
|
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
_updateFunc(false, $"{hashCode}{ResUI.MsgSubscriptionDecodingFailed}");
|
_updateFunc(false, $"{hashCode}{ResUI.MsgSubscriptionDecodingFailed}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int ret = ConfigHandler.AddBatchServers(ref config, result, id, groupId);
|
_updateFunc(false, $"{hashCode}{ResUI.MsgGetSubscriptionSuccessfully}");
|
||||||
|
if (result.Length < 99)
|
||||||
|
{
|
||||||
|
_updateFunc(false, $"{hashCode}{result}");
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret = ConfigHandler.AddBatchServers(ref config, result, id, item.groupId.TrimEx());
|
||||||
_updateFunc(false,
|
_updateFunc(false,
|
||||||
ret > 0
|
ret > 0
|
||||||
? $"{hashCode}{ResUI.MsgUpdateSubscriptionEnd}"
|
? $"{hashCode}{ResUI.MsgUpdateSubscriptionEnd}"
|
||||||
@@ -290,17 +313,17 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
#region private
|
#region private
|
||||||
|
|
||||||
private async void CheckUpdateAsync(ECoreType type)
|
private async void CheckUpdateAsync(ECoreType type, bool preRelease)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
|
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
|
||||||
string url = coreInfo.coreLatestUrl;
|
string url = coreInfo.coreReleaseApiUrl;
|
||||||
|
|
||||||
var result = await (new DownloadHandle()).UrlRedirectAsync(url, true);
|
var result = await (new DownloadHandle()).DownloadStringAsync(url, true, "");
|
||||||
if (!Utils.IsNullOrEmpty(result))
|
if (!Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
responseHandler(type, result);
|
responseHandler(type, result, preRelease);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -338,14 +361,14 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
if (!File.Exists(filePath))
|
if (!File.Exists(filePath))
|
||||||
{
|
{
|
||||||
string msg = string.Format(ResUI.NotFoundCore, @"");
|
string msg = string.Format(ResUI.NotFoundCore, @"", "");
|
||||||
//ShowMsg(true, msg);
|
//ShowMsg(true, msg);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
Process p = new Process();
|
Process p = new Process();
|
||||||
p.StartInfo.FileName = filePath;
|
p.StartInfo.FileName = filePath;
|
||||||
p.StartInfo.Arguments = "-version";
|
p.StartInfo.Arguments = coreInfo.versionArg;
|
||||||
p.StartInfo.WorkingDirectory = Utils.StartupPath();
|
p.StartInfo.WorkingDirectory = Utils.StartupPath();
|
||||||
p.StartInfo.UseShellExecute = false;
|
p.StartInfo.UseShellExecute = false;
|
||||||
p.StartInfo.RedirectStandardOutput = true;
|
p.StartInfo.RedirectStandardOutput = true;
|
||||||
@@ -354,7 +377,19 @@ namespace v2rayN.Handler
|
|||||||
p.Start();
|
p.Start();
|
||||||
p.WaitForExit(5000);
|
p.WaitForExit(5000);
|
||||||
string echo = p.StandardOutput.ReadToEnd();
|
string echo = p.StandardOutput.ReadToEnd();
|
||||||
string version = Regex.Match(echo, $"{coreInfo.match} ([0-9.]+) \\(").Groups[1].Value;
|
string version = string.Empty;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case ECoreType.v2fly:
|
||||||
|
case ECoreType.SagerNet:
|
||||||
|
case ECoreType.Xray:
|
||||||
|
version = Regex.Match(echo, $"{coreInfo.match} ([0-9.]+) \\(").Groups[1].Value;
|
||||||
|
break;
|
||||||
|
case ECoreType.clash:
|
||||||
|
case ECoreType.clash_meta:
|
||||||
|
version = Regex.Match(echo, $"v[0-9.]+").Groups[0].Value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -364,11 +399,20 @@ namespace v2rayN.Handler
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void responseHandler(ECoreType type, string redirectUrl)
|
private void responseHandler(ECoreType type, string gitHubReleaseApi, bool preRelease)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1);
|
var gitHubReleases = Utils.FromJson<List<GitHubRelease>>(gitHubReleaseApi);
|
||||||
|
string version;
|
||||||
|
if (preRelease)
|
||||||
|
{
|
||||||
|
version = gitHubReleases!.First().TagName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
version = gitHubReleases!.First(r => r.Prerelease == false).TagName;
|
||||||
|
}
|
||||||
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
|
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
|
||||||
|
|
||||||
string curVersion;
|
string curVersion;
|
||||||
@@ -377,6 +421,7 @@ namespace v2rayN.Handler
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case ECoreType.v2fly:
|
case ECoreType.v2fly:
|
||||||
|
case ECoreType.SagerNet:
|
||||||
case ECoreType.Xray:
|
case ECoreType.Xray:
|
||||||
{
|
{
|
||||||
curVersion = "v" + getCoreVersion(type);
|
curVersion = "v" + getCoreVersion(type);
|
||||||
@@ -388,7 +433,7 @@ namespace v2rayN.Handler
|
|||||||
case ECoreType.clash:
|
case ECoreType.clash:
|
||||||
case ECoreType.clash_meta:
|
case ECoreType.clash_meta:
|
||||||
{
|
{
|
||||||
curVersion = "";//getCoreVersion(type);
|
curVersion = getCoreVersion(type);
|
||||||
message = string.Format(ResUI.IsLatestCore, curVersion);
|
message = string.Format(ResUI.IsLatestCore, curVersion);
|
||||||
if (Environment.Is64BitProcess)
|
if (Environment.Is64BitProcess)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,8 +27,9 @@ namespace v2rayN.Handler
|
|||||||
/// <param name="fileName"></param>
|
/// <param name="fileName"></param>
|
||||||
/// <param name="msg"></param>
|
/// <param name="msg"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int GenerateClientConfig(VmessItem node, string fileName, bool blExport, out string msg)
|
public static int GenerateClientConfig(VmessItem node, string fileName, out string msg, out string content)
|
||||||
{
|
{
|
||||||
|
content = string.Empty;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (node == null)
|
if (node == null)
|
||||||
@@ -42,55 +43,34 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return GenerateClientCustomConfig(node, fileName, out msg);
|
return GenerateClientCustomConfig(node, fileName, out msg);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
//取得默认配置
|
|
||||||
string result = Utils.GetEmbedText(SampleClient);
|
|
||||||
if (Utils.IsNullOrEmpty(result))
|
|
||||||
{
|
{
|
||||||
msg = ResUI.FailedGetDefaultConfiguration;
|
V2rayConfig v2rayConfig = null;
|
||||||
return -1;
|
if (GenerateClientConfigContent(node, false, ref v2rayConfig, out msg) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
|
{
|
||||||
|
content = Utils.ToJson(v2rayConfig);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//转成Json
|
|
||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
|
||||||
if (v2rayConfig == null)
|
|
||||||
{
|
|
||||||
msg = ResUI.FailedGenDefaultConfiguration;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var config = LazyConfig.Instance.GetConfig();
|
|
||||||
|
|
||||||
//开始修改配置
|
|
||||||
log(config, ref v2rayConfig, blExport);
|
|
||||||
|
|
||||||
//本地端口
|
|
||||||
inbound(config, ref v2rayConfig);
|
|
||||||
|
|
||||||
//路由
|
|
||||||
routing(config, ref v2rayConfig);
|
|
||||||
|
|
||||||
//outbound
|
|
||||||
outbound(node, ref v2rayConfig);
|
|
||||||
|
|
||||||
//dns
|
|
||||||
dns(config, ref v2rayConfig);
|
|
||||||
|
|
||||||
// TODO: 统计配置
|
|
||||||
statistic(config, ref v2rayConfig);
|
|
||||||
|
|
||||||
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
|
||||||
|
|
||||||
msg = string.Format(ResUI.SuccessfulConfiguration, $"[{config.GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog("GenerateClientConfig", ex);
|
||||||
msg = ResUI.FailedGenDefaultConfiguration;
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 日志
|
/// 日志
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -130,8 +110,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -176,8 +157,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -218,7 +200,7 @@ namespace v2rayN.Handler
|
|||||||
&& v2rayConfig.routing.rules != null)
|
&& v2rayConfig.routing.rules != null)
|
||||||
{
|
{
|
||||||
v2rayConfig.routing.domainStrategy = config.domainStrategy;
|
v2rayConfig.routing.domainStrategy = config.domainStrategy;
|
||||||
v2rayConfig.routing.domainMatcher = config.domainMatcher;
|
v2rayConfig.routing.domainMatcher = Utils.IsNullOrEmpty(config.domainMatcher) ? null : config.domainMatcher;
|
||||||
|
|
||||||
if (config.enableRoutingAdvanced)
|
if (config.enableRoutingAdvanced)
|
||||||
{
|
{
|
||||||
@@ -246,8 +228,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -345,8 +328,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -363,7 +347,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
var config = LazyConfig.Instance.GetConfig();
|
var config = LazyConfig.Instance.GetConfig();
|
||||||
Outbounds outbound = v2rayConfig.outbounds[0];
|
Outbounds outbound = v2rayConfig.outbounds[0];
|
||||||
if (node.configType == EConfigType.Vmess)
|
if (node.configType == EConfigType.VMess)
|
||||||
{
|
{
|
||||||
VnextItem vnextItem;
|
VnextItem vnextItem;
|
||||||
if (outbound.settings.vnext.Count <= 0)
|
if (outbound.settings.vnext.Count <= 0)
|
||||||
@@ -427,7 +411,7 @@ namespace v2rayN.Handler
|
|||||||
serversItem.address = node.address;
|
serversItem.address = node.address;
|
||||||
serversItem.port = node.port;
|
serversItem.port = node.port;
|
||||||
serversItem.password = node.id;
|
serversItem.password = node.id;
|
||||||
serversItem.method = LazyConfig.Instance.GetShadowsocksSecuritys().Contains(node.security) ? node.security : "none";
|
serversItem.method = LazyConfig.Instance.GetShadowsocksSecuritys(node).Contains(node.security) ? node.security : "none";
|
||||||
|
|
||||||
|
|
||||||
serversItem.ota = false;
|
serversItem.ota = false;
|
||||||
@@ -581,8 +565,9 @@ namespace v2rayN.Handler
|
|||||||
outbound.settings.vnext = null;
|
outbound.settings.vnext = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -804,8 +789,9 @@ namespace v2rayN.Handler
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -825,6 +811,14 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Outbound Freedom domainStrategy
|
||||||
|
if (!string.IsNullOrWhiteSpace(config.domainStrategy4Freedom))
|
||||||
|
{
|
||||||
|
var outbound = v2rayConfig.outbounds[1];
|
||||||
|
outbound.settings.domainStrategy = config.domainStrategy4Freedom;
|
||||||
|
outbound.settings.userLevel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
var obj = Utils.ParseJson(config.remoteDNS);
|
var obj = Utils.ParseJson(config.remoteDNS);
|
||||||
if (obj != null && obj.ContainsKey("servers"))
|
if (obj != null && obj.ContainsKey("servers"))
|
||||||
{
|
{
|
||||||
@@ -849,8 +843,9 @@ namespace v2rayN.Handler
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -947,22 +942,39 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
|
|
||||||
//overwrite port
|
//overwrite port
|
||||||
var fileContent = File.ReadAllLines(fileName).ToList();
|
if (node.preSocksPort <= 0)
|
||||||
var coreType = LazyConfig.Instance.GetCoreType(node, node.configType);
|
|
||||||
switch (coreType)
|
|
||||||
{
|
{
|
||||||
case ECoreType.v2fly:
|
var fileContent = File.ReadAllLines(fileName).ToList();
|
||||||
case ECoreType.Xray:
|
var coreType = LazyConfig.Instance.GetCoreType(node, node.configType);
|
||||||
break;
|
switch (coreType)
|
||||||
case ECoreType.clash:
|
{
|
||||||
case ECoreType.clash_meta:
|
case ECoreType.v2fly:
|
||||||
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
|
case ECoreType.SagerNet:
|
||||||
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
case ECoreType.Xray:
|
||||||
break;
|
break;
|
||||||
}
|
case ECoreType.clash:
|
||||||
File.WriteAllLines(fileName, fileContent);
|
case ECoreType.clash_meta:
|
||||||
|
//remove the original
|
||||||
|
var indexPort = fileContent.FindIndex(t => t.Contains("port:"));
|
||||||
|
if (indexPort >= 0)
|
||||||
|
{
|
||||||
|
fileContent.RemoveAt(indexPort);
|
||||||
|
}
|
||||||
|
indexPort = fileContent.FindIndex(t => t.Contains("socks-port:"));
|
||||||
|
if (indexPort >= 0)
|
||||||
|
{
|
||||||
|
fileContent.RemoveAt(indexPort);
|
||||||
|
}
|
||||||
|
|
||||||
msg = string.Format(ResUI.SuccessfulConfiguration, $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
|
||||||
|
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
File.WriteAllLines(fileName, fileContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
//msg = string.Format(ResUI.SuccessfulConfiguration, $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
||||||
|
msg = string.Format(ResUI.SuccessfulConfiguration, "");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -973,6 +985,66 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int GenerateClientConfigContent(VmessItem node, bool blExport, ref V2rayConfig v2rayConfig, out string msg)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (node == null)
|
||||||
|
{
|
||||||
|
msg = ResUI.CheckServerSettings;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = ResUI.InitialConfiguration;
|
||||||
|
|
||||||
|
//取得默认配置
|
||||||
|
string result = Utils.GetEmbedText(SampleClient);
|
||||||
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
msg = ResUI.FailedGetDefaultConfiguration;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//转成Json
|
||||||
|
v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
|
if (v2rayConfig == null)
|
||||||
|
{
|
||||||
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var config = LazyConfig.Instance.GetConfig();
|
||||||
|
|
||||||
|
//开始修改配置
|
||||||
|
log(config, ref v2rayConfig, blExport);
|
||||||
|
|
||||||
|
//本地端口
|
||||||
|
inbound(config, ref v2rayConfig);
|
||||||
|
|
||||||
|
//路由
|
||||||
|
routing(config, ref v2rayConfig);
|
||||||
|
|
||||||
|
//outbound
|
||||||
|
outbound(node, ref v2rayConfig);
|
||||||
|
|
||||||
|
//dns
|
||||||
|
dns(config, ref v2rayConfig);
|
||||||
|
|
||||||
|
//stat
|
||||||
|
statistic(config, ref v2rayConfig);
|
||||||
|
|
||||||
|
//msg = string.Format(ResUI.SuccessfulConfiguration, $"[{config.GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
||||||
|
msg = string.Format(ResUI.SuccessfulConfiguration, "");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("GenerateClientConfig", ex);
|
||||||
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 生成服务端端配置
|
#region 生成服务端端配置
|
||||||
@@ -1028,8 +1100,9 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
msg = string.Format(ResUI.SuccessfulConfiguration, node.GetSummary());
|
msg = string.Format(ResUI.SuccessfulConfiguration, node.GetSummary());
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
msg = ResUI.FailedGenDefaultConfiguration;
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -1064,7 +1137,7 @@ namespace v2rayN.Handler
|
|||||||
usersItem.id = node.id;
|
usersItem.id = node.id;
|
||||||
usersItem.email = Global.userEMail;
|
usersItem.email = Global.userEMail;
|
||||||
|
|
||||||
if (node.configType == EConfigType.Vmess)
|
if (node.configType == EConfigType.VMess)
|
||||||
{
|
{
|
||||||
inbound.protocol = Global.vmessProtocolLite;
|
inbound.protocol = Global.vmessProtocolLite;
|
||||||
usersItem.alterId = node.alterId;
|
usersItem.alterId = node.alterId;
|
||||||
@@ -1079,8 +1152,9 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
boundStreamSettings(node, "in", inbound.streamSettings);
|
boundStreamSettings(node, "in", inbound.streamSettings);
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1100,8 +1174,9 @@ namespace v2rayN.Handler
|
|||||||
v2rayConfig.outbounds[0].settings = null;
|
v2rayConfig.outbounds[0].settings = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1246,8 +1321,9 @@ namespace v2rayN.Handler
|
|||||||
vmessItem.streamSecurity = Global.StreamSecurity;
|
vmessItem.streamSecurity = Global.StreamSecurity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
msg = ResUI.IncorrectClientConfiguration;
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1391,8 +1467,9 @@ namespace v2rayN.Handler
|
|||||||
vmessItem.streamSecurity = Global.StreamSecurity;
|
vmessItem.streamSecurity = Global.StreamSecurity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
msg = ResUI.IncorrectClientConfiguration;
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1408,7 +1485,12 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int Export2ClientConfig(VmessItem node, string fileName, out string msg)
|
public static int Export2ClientConfig(VmessItem node, string fileName, out string msg)
|
||||||
{
|
{
|
||||||
return GenerateClientConfig(node, fileName, true, out msg);
|
V2rayConfig v2rayConfig = null;
|
||||||
|
if (GenerateClientConfigContent(node, true, ref v2rayConfig, out msg) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return Utils.ToJsonFile(v2rayConfig, fileName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -1455,12 +1537,18 @@ namespace v2rayN.Handler
|
|||||||
msg = ResUI.FailedGenDefaultConfiguration;
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
List<IPEndPoint> lstIpEndPoints = null;
|
List<IPEndPoint> lstIpEndPoints = new List<IPEndPoint>();
|
||||||
|
List<TcpConnectionInformation> lstTcpConns = new List<TcpConnectionInformation>();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lstIpEndPoints = new List<IPEndPoint>(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners());
|
lstIpEndPoints.AddRange(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners());
|
||||||
|
lstIpEndPoints.AddRange(IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners());
|
||||||
|
lstTcpConns.AddRange(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
catch { }
|
|
||||||
|
|
||||||
log(configCopy, ref v2rayConfig, false);
|
log(configCopy, ref v2rayConfig, false);
|
||||||
//routing(config, ref v2rayConfig);
|
//routing(config, ref v2rayConfig);
|
||||||
@@ -1480,7 +1568,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (it.configType == EConfigType.Vmess || it.configType == EConfigType.VLESS)
|
if (it.configType == EConfigType.VMess || it.configType == EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
if (!Utils.IsGuidByParse(configCopy.GetVmessItem(it.indexId).id))
|
if (!Utils.IsGuidByParse(configCopy.GetVmessItem(it.indexId).id))
|
||||||
{
|
{
|
||||||
@@ -1496,6 +1584,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (lstTcpConns != null && lstTcpConns.FindIndex(_it => _it.LocalEndPoint.Port == k) >= 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
//found
|
//found
|
||||||
port = k;
|
port = k;
|
||||||
httpPort = port + 1;
|
httpPort = port + 1;
|
||||||
@@ -1536,8 +1628,9 @@ namespace v2rayN.Handler
|
|||||||
//msg = string.Format(ResUI.SuccessfulConfiguration"), node.getSummary());
|
//msg = string.Format(ResUI.SuccessfulConfiguration"), node.getSummary());
|
||||||
return Utils.ToJson(v2rayConfig);
|
return Utils.ToJson(v2rayConfig);
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
msg = ResUI.FailedGenDefaultConfiguration;
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace v2rayN.Handler
|
|||||||
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
||||||
private CoreInfo coreInfo;
|
private CoreInfo coreInfo;
|
||||||
public event ProcessDelegate ProcessEvent;
|
public event ProcessDelegate ProcessEvent;
|
||||||
//private int processId = 0;
|
private int processId = 0;
|
||||||
private Process _process;
|
private Process _process;
|
||||||
|
|
||||||
public V2rayHandler()
|
public V2rayHandler()
|
||||||
@@ -51,15 +51,31 @@ namespace v2rayN.Handler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
string fileName = Utils.GetPath(v2rayConfigRes);
|
string fileName = Utils.GetPath(v2rayConfigRes);
|
||||||
if (V2rayConfigHandler.GenerateClientConfig(item, fileName, false, out string msg) != 0)
|
if (V2rayConfigHandler.GenerateClientConfig(item, fileName, out string msg, out string content) != 0)
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
|
ShowMsg(true, $"[{config.GetGroupRemarks(item.groupId)}] {item.GetSummary()}");
|
||||||
V2rayRestart();
|
V2rayRestart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//start a socks service
|
||||||
|
if (item.configType == EConfigType.Custom && item.preSocksPort > 0)
|
||||||
|
{
|
||||||
|
var itemSocks = new VmessItem()
|
||||||
|
{
|
||||||
|
configType = EConfigType.Socks,
|
||||||
|
address = Global.Loopback,
|
||||||
|
port = item.preSocksPort
|
||||||
|
};
|
||||||
|
if (V2rayConfigHandler.GenerateClientConfig(itemSocks, null, out string msg2, out string configStr) == 0)
|
||||||
|
{
|
||||||
|
processId = V2rayStartNew(configStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,27 +143,12 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//bool blExist = true;
|
if (processId > 0)
|
||||||
//if (processId > 0)
|
{
|
||||||
//{
|
V2rayStopPid(processId);
|
||||||
// Process p1 = Process.GetProcessById(processId);
|
processId = 0;
|
||||||
// if (p1 != null)
|
}
|
||||||
// {
|
|
||||||
// p1.Kill();
|
|
||||||
// blExist = false;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//if (blExist)
|
|
||||||
//{
|
|
||||||
// foreach (string vName in lstV2ray)
|
|
||||||
// {
|
|
||||||
// Process[] killPro = Process.GetProcessesByName(vName);
|
|
||||||
// foreach (Process p in killPro)
|
|
||||||
// {
|
|
||||||
// p.Kill();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -185,7 +186,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
{
|
{
|
||||||
string msg = string.Format(ResUI.NotFoundCore, coreInfo.coreUrl);
|
string msg = string.Format(ResUI.NotFoundCore, string.Join(", ", lstCoreTemp.ToArray()), coreInfo.coreUrl);
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
return fileName;
|
return fileName;
|
||||||
@@ -214,7 +215,8 @@ namespace v2rayN.Handler
|
|||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
RedirectStandardError = true,
|
RedirectStandardError = true,
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
StandardOutputEncoding = Encoding.UTF8
|
StandardOutputEncoding = Encoding.UTF8,
|
||||||
|
StandardErrorEncoding = Encoding.UTF8
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
p.OutputDataReceived += (sender, e) =>
|
p.OutputDataReceived += (sender, e) =>
|
||||||
@@ -228,7 +230,6 @@ namespace v2rayN.Handler
|
|||||||
p.Start();
|
p.Start();
|
||||||
p.PriorityClass = ProcessPriorityClass.High;
|
p.PriorityClass = ProcessPriorityClass.High;
|
||||||
p.BeginOutputReadLine();
|
p.BeginOutputReadLine();
|
||||||
//processId = p.Id;
|
|
||||||
_process = p;
|
_process = p;
|
||||||
|
|
||||||
if (p.WaitForExit(1000))
|
if (p.WaitForExit(1000))
|
||||||
@@ -269,7 +270,8 @@ namespace v2rayN.Handler
|
|||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
RedirectStandardError = true,
|
RedirectStandardError = true,
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
StandardOutputEncoding = Encoding.UTF8
|
StandardOutputEncoding = Encoding.UTF8,
|
||||||
|
StandardErrorEncoding = Encoding.UTF8
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
p.OutputDataReceived += (sender, e) =>
|
p.OutputDataReceived += (sender, e) =>
|
||||||
|
|||||||
@@ -84,6 +84,14 @@ namespace v2rayN.Mode
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Outbound Freedom domainStrategy
|
||||||
|
/// </summary>
|
||||||
|
public string domainStrategy4Freedom
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否允许不安全连接
|
/// 是否允许不安全连接
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -129,6 +137,8 @@ namespace v2rayN.Mode
|
|||||||
public int autoUpdateInterval { get; set; } = 0;
|
public int autoUpdateInterval { get; set; } = 0;
|
||||||
|
|
||||||
public int autoUpdateSubInterval { get; set; } = 0;
|
public int autoUpdateSubInterval { get; set; } = 0;
|
||||||
|
|
||||||
|
public bool checkPreReleaseUpdate { get; set; } = false;
|
||||||
|
|
||||||
public bool enableSecurityProtocolTls13
|
public bool enableSecurityProtocolTls13
|
||||||
{
|
{
|
||||||
@@ -282,7 +292,7 @@ namespace v2rayN.Mode
|
|||||||
public VmessItem()
|
public VmessItem()
|
||||||
{
|
{
|
||||||
indexId = string.Empty;
|
indexId = string.Empty;
|
||||||
configType = EConfigType.Vmess;
|
configType = EConfigType.VMess;
|
||||||
configVersion = 2;
|
configVersion = 2;
|
||||||
sort = 0;
|
sort = 0;
|
||||||
address = string.Empty;
|
address = string.Empty;
|
||||||
@@ -323,7 +333,7 @@ namespace v2rayN.Mode
|
|||||||
}
|
}
|
||||||
switch (configType)
|
switch (configType)
|
||||||
{
|
{
|
||||||
case EConfigType.Vmess:
|
case EConfigType.VMess:
|
||||||
case EConfigType.Shadowsocks:
|
case EConfigType.Shadowsocks:
|
||||||
case EConfigType.Socks:
|
case EConfigType.Socks:
|
||||||
case EConfigType.VLESS:
|
case EConfigType.VLESS:
|
||||||
@@ -553,10 +563,16 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
} = string.Empty;
|
} = string.Empty;
|
||||||
|
|
||||||
public ECoreType? coreType
|
public ECoreType? coreType
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int preSocksPort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|||||||
@@ -14,12 +14,14 @@ namespace v2rayN.Mode
|
|||||||
|
|
||||||
public string coreUrl { get; set; }
|
public string coreUrl { get; set; }
|
||||||
|
|
||||||
public string coreLatestUrl { get; set; }
|
public string coreReleaseApiUrl { get; set; }
|
||||||
|
|
||||||
public string coreDownloadUrl32 { get; set; }
|
public string coreDownloadUrl32 { get; set; }
|
||||||
|
|
||||||
public string coreDownloadUrl64 { get; set; }
|
public string coreDownloadUrl64 { get; set; }
|
||||||
|
|
||||||
public string match { get; set; }
|
public string match { get; set; }
|
||||||
|
public string versionArg { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
public enum EConfigType
|
public enum EConfigType
|
||||||
{
|
{
|
||||||
Vmess = 1,
|
VMess = 1,
|
||||||
Custom = 2,
|
Custom = 2,
|
||||||
Shadowsocks = 3,
|
Shadowsocks = 3,
|
||||||
Socks = 4,
|
Socks = 4,
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
v2fly = 1,
|
v2fly = 1,
|
||||||
Xray = 2,
|
Xray = 2,
|
||||||
|
SagerNet = 3,
|
||||||
clash = 11,
|
clash = 11,
|
||||||
clash_meta = 12,
|
clash_meta = 12,
|
||||||
hysteria = 21,
|
hysteria = 21,
|
||||||
naiveproxy = 22,
|
naiveproxy = 22,
|
||||||
|
tuic = 23,
|
||||||
v2rayN = 99
|
v2rayN = 99
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
70
v2rayN/v2rayN/Mode/GitHubRelease.cs
Normal file
70
v2rayN/v2rayN/Mode/GitHubRelease.cs
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public class GitHubReleaseAsset
|
||||||
|
{
|
||||||
|
[JsonProperty("url")] public string Url { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("id")] public int Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("node_id")] public string NodeId { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("name")] public string Name { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("label")] public object Label { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("content_type")] public string ContentType { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("state")] public string State { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("size")] public int Size { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("download_count")] public int DownloadCount { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("created_at")] public DateTime CreatedAt { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("updated_at")] public DateTime UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("browser_download_url")] public string BrowserDownloadUrl { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GitHubRelease
|
||||||
|
{
|
||||||
|
[JsonProperty("url")] public string Url { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("assets_url")] public string AssetsUrl { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("upload_url")] public string UploadUrl { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("html_url")] public string HtmlUrl { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("id")] public int Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("node_id")] public string NodeId { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("tag_name")] public string TagName { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("target_commitish")] public string TargetCommitish { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("name")] public string Name { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("draft")] public bool Draft { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("prerelease")] public bool Prerelease { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("created_at")] public DateTime CreatedAt { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("published_at")] public DateTime PublishedAt { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("assets")] public List<GitHubReleaseAsset> Assets { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("tarball_url")] public string TarballUrl { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("zipball_url")] public string ZipballUrl { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("body")] public string Body { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -224,6 +224,16 @@ namespace v2rayN.Mode
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Response response { get; set; }
|
public Response response { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string domainStrategy { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public int? userLevel { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VnextItem
|
public class VnextItem
|
||||||
|
|||||||
@@ -1,18 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Forms;
|
using v2rayN.Forms;
|
||||||
using v2rayN.Properties;
|
|
||||||
using v2rayN.Tool;
|
using v2rayN.Tool;
|
||||||
|
|
||||||
namespace v2rayN
|
namespace v2rayN
|
||||||
{
|
{
|
||||||
static class Program
|
static class Program
|
||||||
{
|
{
|
||||||
[System.Runtime.InteropServices.DllImport("user32.dll")]
|
|
||||||
private static extern bool SetProcessDPIAware();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 应用程序的主入口点。
|
/// 应用程序的主入口点。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -21,7 +16,7 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
if (Environment.OSVersion.Version.Major >= 6)
|
if (Environment.OSVersion.Version.Major >= 6)
|
||||||
{
|
{
|
||||||
SetProcessDPIAware();
|
Utils.SetProcessDPIAware();
|
||||||
}
|
}
|
||||||
|
|
||||||
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
||||||
@@ -47,6 +42,22 @@ namespace v2rayN
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//read handle from reg and show the window
|
||||||
|
long.TryParse(Utils.RegReadValue(Global.MyRegPath, Utils.WindowHwndKey, ""), out long llong);
|
||||||
|
if (llong > 0)
|
||||||
|
{
|
||||||
|
var hwnd = (IntPtr)llong;
|
||||||
|
if (Utils.IsWindow(hwnd))
|
||||||
|
{
|
||||||
|
Utils.ShowWindow(hwnd, 4);
|
||||||
|
Utils.SwitchToThisWindow(hwnd, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
UI.ShowWarning($"v2rayN is already running(v2rayN已经运行)");
|
UI.ShowWarning($"v2rayN is already running(v2rayN已经运行)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
using System.Reflection;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
// 有关程序集的常规信息通过以下
|
|
||||||
// 特性集控制。更改这些特性值可修改
|
|
||||||
// 与程序集关联的信息。
|
|
||||||
[assembly: AssemblyTitle("v2rayN")]
|
|
||||||
[assembly: AssemblyDescription("")]
|
|
||||||
[assembly: AssemblyConfiguration("")]
|
|
||||||
[assembly: AssemblyCompany("")]
|
|
||||||
[assembly: AssemblyProduct("v2rayN")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2019-2022 (GPLv3)")]
|
|
||||||
[assembly: AssemblyTrademark("")]
|
|
||||||
[assembly: AssemblyCulture("")]
|
|
||||||
|
|
||||||
// 将 ComVisible 设置为 false 使此程序集中的类型
|
|
||||||
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
|
|
||||||
// 则将该类型上的 ComVisible 特性设置为 true。
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
|
||||||
[assembly: Guid("72d9f089-5e7a-4c5f-be0a-8a211536b483")]
|
|
||||||
|
|
||||||
// 程序集的版本信息由下面四个值组成:
|
|
||||||
//
|
|
||||||
// 主版本
|
|
||||||
// 次版本
|
|
||||||
// 生成号
|
|
||||||
// 修订号
|
|
||||||
//
|
|
||||||
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
|
||||||
// 方法是按如下所示使用“*”:
|
|
||||||
//[assembly: AssemblyVersion("1.0.*")]
|
|
||||||
//[assembly: AssemblyVersion("1.0.0")]
|
|
||||||
[assembly: AssemblyFileVersion("5.27")]
|
|
||||||
273
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
273
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -289,13 +289,13 @@
|
|||||||
<value> This feature relies on the Http global proxy, please set it correctly first.</value>
|
<value> This feature relies on the Http global proxy, please set it correctly first.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
||||||
<value>Non-vmess or ss protocol</value>
|
<value>Non-VMess or ss protocol</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NonVmessService" xml:space="preserve">
|
<data name="NonVmessService" xml:space="preserve">
|
||||||
<value> non-Vmess service, this feature is invalid</value>
|
<value> non-standard service, this feature is invalid</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFoundCore" xml:space="preserve">
|
<data name="NotFoundCore" xml:space="preserve">
|
||||||
<value>Core not found, please download: {0}</value>
|
<value>Core not found({0}), please download: {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoValidQRcodeFound" xml:space="preserve">
|
<data name="NoValidQRcodeFound" xml:space="preserve">
|
||||||
<value>Scan completed, no valid QR code found</value>
|
<value>Scan completed, no valid QR code found</value>
|
||||||
@@ -472,4 +472,7 @@
|
|||||||
<data name="MsgServerTitle" xml:space="preserve">
|
<data name="MsgServerTitle" xml:space="preserve">
|
||||||
<value>Servers (Filter : {0})</value>
|
<value>Servers (Filter : {0})</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="NetFrameworkRequirementsTip" xml:space="preserve">
|
||||||
|
<value>Normal use of this version requires .NET Framework 4.8</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -289,13 +289,13 @@
|
|||||||
<value>此功能依赖Http全局代理,请先设置正确。</value>
|
<value>此功能依赖Http全局代理,请先设置正确。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
||||||
<value>非vmess或ss协议</value>
|
<value>非VMess或ss协议</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NonVmessService" xml:space="preserve">
|
<data name="NonVmessService" xml:space="preserve">
|
||||||
<value>非Vmess服务,此功能无效</value>
|
<value>非标准服务,此功能无效</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFoundCore" xml:space="preserve">
|
<data name="NotFoundCore" xml:space="preserve">
|
||||||
<value>找不到Core,下载地址: {0}</value>
|
<value>找不到Core(文件名:{0}),下载地址: {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoValidQRcodeFound" xml:space="preserve">
|
<data name="NoValidQRcodeFound" xml:space="preserve">
|
||||||
<value>扫描完成,未发现有效二维码</value>
|
<value>扫描完成,未发现有效二维码</value>
|
||||||
@@ -472,4 +472,7 @@
|
|||||||
<data name="MsgServerTitle" xml:space="preserve">
|
<data name="MsgServerTitle" xml:space="preserve">
|
||||||
<value>服务器 (过滤器 : {0})</value>
|
<value>服务器 (过滤器 : {0})</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="NetFrameworkRequirementsTip" xml:space="preserve">
|
||||||
|
<value>正常使用此版本需要.NET Framework 4.8,请更新后重启</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -94,6 +94,10 @@ namespace v2rayN.Tool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (File.Exists(fileName))
|
||||||
|
{
|
||||||
|
File.Delete(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ using System.Web;
|
|||||||
using log4net;
|
using log4net;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace v2rayN
|
namespace v2rayN
|
||||||
{
|
{
|
||||||
@@ -593,6 +594,12 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
//clear
|
||||||
|
if (!RegReadValue(autoRunRegPath, "v2rayNAutoRun", "").IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
RegWriteValue(autoRunRegPath, "v2rayNAutoRun", "");
|
||||||
|
}
|
||||||
|
|
||||||
string value = RegReadValue(autoRunRegPath, autoRunName, "");
|
string value = RegReadValue(autoRunRegPath, autoRunName, "");
|
||||||
string exePath = GetExePath();
|
string exePath = GetExePath();
|
||||||
if (value?.Equals(exePath) == true || value?.Equals($"\"{exePath}\"") == true)
|
if (value?.Equals(exePath) == true || value?.Equals($"\"{exePath}\"") == true)
|
||||||
@@ -693,7 +700,7 @@ namespace v2rayN
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="release">需要的版本4.6.2=394802;4.8=528040</param>
|
/// <param name="release">需要的版本4.6.2=394802;4.8=528040</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static bool GetDotNetRelease(int release)
|
public static bool CheckForDotNetVersion(int release = 528040)
|
||||||
{
|
{
|
||||||
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
|
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
|
||||||
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
|
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
|
||||||
@@ -706,6 +713,13 @@ namespace v2rayN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string MainMsgFilterKey
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return $"MainMsgFilter_{GetMD5(StartupPath())}";
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 测速
|
#region 测速
|
||||||
@@ -1111,5 +1125,30 @@ namespace v2rayN
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region Windows API
|
||||||
|
|
||||||
|
public static string WindowHwndKey
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return $"WindowHwnd_{GetMD5(StartupPath())}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool SetProcessDPIAware();
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern int SwitchToThisWindow(IntPtr hwnd, bool fUnknown);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool IsWindow(IntPtr hwnd);
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
|
||||||
</startup>
|
|
||||||
|
|
||||||
</configuration>
|
|
||||||
@@ -1,507 +1,65 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFramework>net48</TargetFramework>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<LangVersion>preview</LangVersion>
|
||||||
<ProjectGuid>{0A9785E6-D256-4B73-9757-4EF59955FD1E}</ProjectGuid>
|
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<RootNamespace>v2rayN</RootNamespace>
|
<Copyright>Copyright © 2019-2022 (GPLv3)</Copyright>
|
||||||
<AssemblyName>v2rayN</AssemblyName>
|
<FileVersion>5.34</FileVersion>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
<PublishUrl>发布\</PublishUrl>
|
|
||||||
<Install>true</Install>
|
|
||||||
<InstallFrom>Disk</InstallFrom>
|
|
||||||
<UpdateEnabled>false</UpdateEnabled>
|
|
||||||
<UpdateMode>Foreground</UpdateMode>
|
|
||||||
<UpdateInterval>7</UpdateInterval>
|
|
||||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
|
||||||
<UpdatePeriodically>false</UpdatePeriodically>
|
|
||||||
<UpdateRequired>false</UpdateRequired>
|
|
||||||
<MapFileExtensions>true</MapFileExtensions>
|
|
||||||
<ApplicationRevision>2</ApplicationRevision>
|
|
||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugType>none</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ApplicationIcon>v2rayN.ico</ApplicationIcon>
|
<ApplicationIcon>v2rayN.ico</ApplicationIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
|
||||||
<ManifestCertificateThumbprint>BD431FE78E8A6683106E7110882AE5C41CBF5C60</ManifestCertificateThumbprint>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<ManifestKeyFile>v2rayN_TemporaryKey.pfx</ManifestKeyFile>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<GenerateManifests>false</GenerateManifests>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SignManifests>false</SignManifests>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup />
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetZone>LocalIntranet</TargetZone>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup />
|
|
||||||
<PropertyGroup />
|
|
||||||
<PropertyGroup>
|
|
||||||
<StartupObject>v2rayN.Program</StartupObject>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<None Remove="Sample\custom_routing_black" />
|
||||||
<Reference Include="System.Core" />
|
<None Remove="Sample\custom_routing_global" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<None Remove="Sample\custom_routing_locked" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<None Remove="Sample\custom_routing_rules" />
|
||||||
<Reference Include="System.Data" />
|
<None Remove="Sample\custom_routing_white" />
|
||||||
|
<None Remove="Sample\SampleClientConfig.txt" />
|
||||||
|
<None Remove="Sample\SampleHttprequest.txt" />
|
||||||
|
<None Remove="Sample\SampleHttpresponse.txt" />
|
||||||
|
<None Remove="Sample\SampleInbound.txt" />
|
||||||
|
<None Remove="Sample\SampleServerConfig.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Sample\custom_routing_black" />
|
||||||
|
<EmbeddedResource Include="Sample\custom_routing_global" />
|
||||||
|
<EmbeddedResource Include="Sample\custom_routing_locked" />
|
||||||
|
<EmbeddedResource Include="Sample\custom_routing_rules" />
|
||||||
|
<EmbeddedResource Include="Sample\custom_routing_white" />
|
||||||
|
<EmbeddedResource Include="Sample\SampleClientConfig.txt" />
|
||||||
|
<EmbeddedResource Include="Sample\SampleHttprequest.txt" />
|
||||||
|
<EmbeddedResource Include="Sample\SampleHttpresponse.txt" />
|
||||||
|
<EmbeddedResource Include="Sample\SampleInbound.txt" />
|
||||||
|
<EmbeddedResource Include="Sample\SampleServerConfig.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
<Reference Include="System.Data.Linq" />
|
<Reference Include="System.Data.Linq" />
|
||||||
<Reference Include="System.Deployment" />
|
|
||||||
<Reference Include="System.Drawing" />
|
|
||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
<Reference Include="System.IO.Compression.FileSystem" />
|
|
||||||
<Reference Include="System.Messaging" />
|
<Reference Include="System.Messaging" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Windows.Forms" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Base\HttpClientHelper.cs" />
|
|
||||||
<Compile Include="Base\ListViewFlickerFree.cs">
|
|
||||||
<SubType>Component</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\BaseServerForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\BaseServerForm.Designer.cs">
|
|
||||||
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\MainMsgControl.cs">
|
|
||||||
<SubType>UserControl</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\MainMsgControl.Designer.cs">
|
|
||||||
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\MsgFilterSetForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\MsgFilterSetForm.Designer.cs">
|
|
||||||
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\RoutingRuleSettingDetailsForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\RoutingRuleSettingDetailsForm.Designer.cs">
|
|
||||||
<DependentUpon>RoutingRuleSettingDetailsForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\GlobalHotkeySettingForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\GlobalHotkeySettingForm.Designer.cs">
|
|
||||||
<DependentUpon>GlobalHotkeySettingForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\RoutingRuleSettingForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\RoutingRuleSettingForm.Designer.cs">
|
|
||||||
<DependentUpon>RoutingRuleSettingForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\ServerTransportControl.cs">
|
|
||||||
<SubType>UserControl</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\ServerTransportControl.Designer.cs">
|
|
||||||
<DependentUpon>ServerTransportControl.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\GroupSettingControl.cs">
|
|
||||||
<SubType>UserControl</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\GroupSettingControl.Designer.cs">
|
|
||||||
<DependentUpon>GroupSettingControl.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\GroupSettingForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\GroupSettingForm.Designer.cs">
|
|
||||||
<DependentUpon>GroupSettingForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Handler\LazyConfig.cs" />
|
|
||||||
<Compile Include="Handler\ShareHandler.cs" />
|
|
||||||
<Compile Include="Handler\UpdateHandle.cs" />
|
|
||||||
<Compile Include="Mode\ComboItem.cs" />
|
|
||||||
<Compile Include="Forms\MainForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\MainForm.Designer.cs">
|
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\RoutingSettingForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\RoutingSettingForm.Designer.cs">
|
|
||||||
<DependentUpon>RoutingSettingForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\SubSettingForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\SubSettingForm.Designer.cs">
|
|
||||||
<DependentUpon>SubSettingForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer2Form.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer2Form.Designer.cs">
|
|
||||||
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\QRCodeControl.cs">
|
|
||||||
<SubType>UserControl</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\QRCodeControl.Designer.cs">
|
|
||||||
<DependentUpon>QRCodeControl.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\SubSettingControl.cs">
|
|
||||||
<SubType>UserControl</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\SubSettingControl.Designer.cs">
|
|
||||||
<DependentUpon>SubSettingControl.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Handler\MainFormHandler.cs" />
|
|
||||||
<Compile Include="Handler\SpeedtestHandler.cs" />
|
|
||||||
<Compile Include="Handler\StatisticsHandler.cs" />
|
|
||||||
<Compile Include="Handler\DownloadHandle.cs" />
|
|
||||||
<Compile Include="Handler\ProxySetting.cs" />
|
|
||||||
<Compile Include="Handler\SysProxyHandle.cs" />
|
|
||||||
<Compile Include="Mode\ESpeedActionType.cs" />
|
|
||||||
<Compile Include="Mode\EGlobalHotkey.cs" />
|
|
||||||
<Compile Include="Mode\ECoreType.cs" />
|
|
||||||
<Compile Include="Mode\ESysProxyType.cs" />
|
|
||||||
<Compile Include="Mode\EMove.cs" />
|
|
||||||
<Compile Include="Mode\EServerColName.cs" />
|
|
||||||
<Compile Include="Mode\RoutingItem.cs" />
|
|
||||||
<Compile Include="Mode\RulesItem.cs" />
|
|
||||||
<Compile Include="Mode\ServerStatistics.cs" />
|
|
||||||
<Compile Include="Mode\CoreInfo.cs" />
|
|
||||||
<Compile Include="Mode\SysproxyConfig.cs" />
|
|
||||||
<Compile Include="Mode\EConfigType.cs" />
|
|
||||||
<Compile Include="Mode\ServerTestItem.cs" />
|
|
||||||
<Compile Include="Mode\SsSIP008.cs" />
|
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Resx\ResUI.zh-Hans.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>ResUI.zh-Hans.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Resx\ResUI.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>ResUI.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Base\StringEx.cs">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServerForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServerForm.Designer.cs">
|
|
||||||
<DependentUpon>AddServerForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\BaseForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\BaseForm.Designer.cs">
|
|
||||||
<DependentUpon>BaseForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Global.cs" />
|
|
||||||
<Compile Include="Handler\QRCodeHelper.cs" />
|
|
||||||
<Compile Include="Mode\VmessQRCode.cs" />
|
|
||||||
<Compile Include="Mode\V2rayTcpRequest.cs" />
|
|
||||||
<Compile Include="Handler\ConfigHandler.cs" />
|
|
||||||
<Compile Include="Handler\V2rayHandler.cs" />
|
|
||||||
<Compile Include="Mode\V2rayConfig.cs" />
|
|
||||||
<Compile Include="Mode\Config.cs" />
|
|
||||||
<Compile Include="Forms\OptionSettingForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\OptionSettingForm.Designer.cs">
|
|
||||||
<DependentUpon>OptionSettingForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Program.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="Tool\FileManager.cs" />
|
|
||||||
<Compile Include="Tool\Job.cs" />
|
|
||||||
<Compile Include="Tool\Logging.cs" />
|
|
||||||
<Compile Include="Tool\QueryableExtension.cs" />
|
|
||||||
<Compile Include="Tool\UI.cs" />
|
|
||||||
<Compile Include="Tool\Utils.cs" />
|
|
||||||
<Compile Include="Handler\V2rayConfigHandler.cs" />
|
|
||||||
<EmbeddedResource Include="Forms\AddServer2Form.zh-Hans.resx">
|
|
||||||
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServerForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>AddServerForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\BaseServerForm.resx">
|
|
||||||
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\GlobalHotkeySettingForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>GlobalHotkeySettingForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\MainForm.resx">
|
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\MainForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\MainMsgControl.resx">
|
|
||||||
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\MainMsgControl.zh-Hans.resx">
|
|
||||||
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\MsgFilterSetForm.resx">
|
|
||||||
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\MsgFilterSetForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\OptionSettingForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>OptionSettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\QRCodeControl.zh-Hans.resx">
|
|
||||||
<DependentUpon>QRCodeControl.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\RoutingRuleSettingDetailsForm.resx">
|
|
||||||
<DependentUpon>RoutingRuleSettingDetailsForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\RoutingRuleSettingDetailsForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>RoutingRuleSettingDetailsForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\GlobalHotkeySettingForm.resx">
|
|
||||||
<DependentUpon>GlobalHotkeySettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\RoutingRuleSettingForm.resx">
|
|
||||||
<DependentUpon>RoutingRuleSettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\RoutingRuleSettingForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>RoutingRuleSettingForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\ServerTransportControl.resx">
|
|
||||||
<DependentUpon>ServerTransportControl.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\ServerTransportControl.zh-Hans.resx">
|
|
||||||
<DependentUpon>ServerTransportControl.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\GroupSettingControl.resx">
|
|
||||||
<DependentUpon>GroupSettingControl.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\GroupSettingControl.zh-Hans.resx">
|
|
||||||
<DependentUpon>GroupSettingControl.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\SubSettingControl.resx">
|
|
||||||
<DependentUpon>SubSettingControl.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\SubSettingControl.zh-Hans.resx">
|
|
||||||
<DependentUpon>SubSettingControl.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\RoutingSettingForm.resx">
|
|
||||||
<DependentUpon>RoutingSettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\RoutingSettingForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>RoutingSettingForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\GroupSettingForm.resx">
|
|
||||||
<DependentUpon>GroupSettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\GroupSettingForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>GroupSettingForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\SubSettingForm.resx">
|
|
||||||
<DependentUpon>SubSettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServerForm.resx">
|
|
||||||
<DependentUpon>AddServerForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\BaseForm.resx">
|
|
||||||
<DependentUpon>BaseForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\OptionSettingForm.resx">
|
|
||||||
<DependentUpon>OptionSettingForm.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\QRCodeControl.resx">
|
|
||||||
<DependentUpon>QRCodeControl.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer2Form.resx">
|
|
||||||
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\SubSettingForm.zh-Hans.resx">
|
|
||||||
<DependentUpon>SubSettingForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="app.config">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<None Include="Properties\Settings.settings">
|
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
|
||||||
</None>
|
|
||||||
<Compile Include="Properties\Settings.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Settings.settings</DependentUpon>
|
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
|
||||||
</Compile>
|
|
||||||
<None Include="Resources\sysproxy.exe.gz" />
|
|
||||||
<None Include="Resources\sysproxy64.exe.gz" />
|
|
||||||
<EmbeddedResource Include="Sample\custom_routing_white" />
|
|
||||||
<EmbeddedResource Include="Sample\custom_routing_global" />
|
|
||||||
<EmbeddedResource Include="Sample\custom_routing_locked" />
|
|
||||||
<EmbeddedResource Include="Sample\custom_routing_black" />
|
|
||||||
<Protobuf Include="Protos\Statistics.proto" />
|
<Protobuf Include="Protos\Statistics.proto" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Resx\ResUI.zh-Hans.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>ResUI.zh-Hans.Designer.cs</LastGenOutput>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Resx\ResUI.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>ResUI.Designer.cs</LastGenOutput>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="v2rayN.ico" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Sample\SampleClientConfig.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Sample\SampleHttprequest.txt" />
|
|
||||||
<EmbeddedResource Include="Sample\SampleHttpresponse.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>Microsoft .NET Framework 4 %28x86 和 x64%29</ProductName>
|
|
||||||
<Install>true</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
|
||||||
<Install>false</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
|
||||||
<Install>false</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
|
|
||||||
<Visible>False</Visible>
|
|
||||||
<ProductName>Windows Installer 4.5</ProductName>
|
|
||||||
<Install>true</Install>
|
|
||||||
</BootstrapperPackage>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Sample\SampleServerConfig.txt" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\restart.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\option.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\server.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\minimize.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Resources\NotifyIcon1.ico" />
|
|
||||||
<Content Include="Resources\NotifyIcon2.ico" />
|
|
||||||
<Content Include="Resources\NotifyIcon3.ico" />
|
|
||||||
<EmbeddedResource Include="Sample\SampleInbound.txt" />
|
|
||||||
<None Include="Resources\share.png" />
|
|
||||||
<None Include="Resources\promotion.png" />
|
|
||||||
<None Include="Resources\sub.png" />
|
|
||||||
<None Include="Resources\checkupdate.png" />
|
|
||||||
<None Include="Resources\about.png" />
|
|
||||||
<Content Include="Resources\help.png" />
|
|
||||||
<None Include="Resources\notify.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Google.Protobuf">
|
<PackageReference Include="Google.Protobuf">
|
||||||
<Version>3.21.1</Version>
|
<Version>3.21.5</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Grpc.Core">
|
<PackageReference Include="Grpc.Core">
|
||||||
<Version>2.46.3</Version>
|
<Version>2.46.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Grpc.Tools">
|
<PackageReference Include="Grpc.Tools">
|
||||||
<Version>2.46.3</Version>
|
<Version>2.47.0</Version>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="log4net">
|
<PackageReference Include="log4net">
|
||||||
<Version>2.0.14</Version>
|
<Version>2.0.15</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Newtonsoft.Json">
|
<PackageReference Include="Newtonsoft.Json">
|
||||||
<Version>13.0.1</Version>
|
<Version>13.0.1</Version>
|
||||||
@@ -516,19 +74,9 @@
|
|||||||
<Version>0.16.8</Version>
|
<Version>0.16.8</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>copy /y $(SolutionDir)v2rayUpgrade\$(OutDir)* $(TargetDir)
|
<PostBuildEvent>del $(TargetDir)*.xml $(TargetDir)*.so $(TargetDir)*.dylib
|
||||||
|
|
||||||
del $(TargetDir)*.xml $(TargetDir)*.so $(TargetDir)*.dylib
|
|
||||||
if not "$(ConfigurationName)" == "Debug" del $(TargetDir)*.pdb</PostBuildEvent>
|
if not "$(ConfigurationName)" == "Debug" del $(TargetDir)*.pdb</PostBuildEvent>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets')" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<PublishUrlHistory>发布\</PublishUrlHistory>
|
|
||||||
<InstallUrlHistory />
|
|
||||||
<SupportUrlHistory />
|
|
||||||
<UpdateUrlHistory />
|
|
||||||
<BootstrapperUrlHistory />
|
|
||||||
<ErrorReportUrlHistory />
|
|
||||||
<FallbackCulture>zh-CN</FallbackCulture>
|
|
||||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
|
||||||
<ProjectView>ProjectFiles</ProjectView>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<EnableSecurityDebugging>false</EnableSecurityDebugging>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
|
||||||
<StartAction>Project</StartAction>
|
|
||||||
<StartArguments>
|
|
||||||
</StartArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
|
||||||
</startup>
|
|
||||||
</configuration>
|
|
||||||
6
v2rayN/v2rayUpgrade/MainForm.Designer.cs
generated
6
v2rayN/v2rayUpgrade/MainForm.Designer.cs
generated
@@ -37,6 +37,7 @@
|
|||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.btnClose.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
this.btnClose.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
this.btnClose.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||||
this.btnClose.Location = new System.Drawing.Point(367, 118);
|
this.btnClose.Location = new System.Drawing.Point(367, 118);
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
@@ -48,6 +49,7 @@
|
|||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
//
|
//
|
||||||
|
this.btnOK.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
this.btnOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
this.btnOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||||
this.btnOK.Location = new System.Drawing.Point(81, 118);
|
this.btnOK.Location = new System.Drawing.Point(81, 118);
|
||||||
this.btnOK.Name = "btnOK";
|
this.btnOK.Name = "btnOK";
|
||||||
@@ -60,7 +62,7 @@
|
|||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
this.label1.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
this.label1.Location = new System.Drawing.Point(79, 64);
|
this.label1.Location = new System.Drawing.Point(79, 64);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(205, 15);
|
this.label1.Size = new System.Drawing.Size(205, 15);
|
||||||
@@ -70,7 +72,7 @@
|
|||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
this.label2.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||||
this.label2.Location = new System.Drawing.Point(79, 37);
|
this.label2.Location = new System.Drawing.Point(79, 37);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(471, 15);
|
this.label2.Size = new System.Drawing.Size(471, 15);
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
using System.Reflection;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
// 有关程序集的一般信息由以下
|
|
||||||
// 控制。更改这些特性值可修改
|
|
||||||
// 与程序集关联的信息。
|
|
||||||
[assembly: AssemblyTitle("v2rayUpgrade")]
|
|
||||||
[assembly: AssemblyDescription("")]
|
|
||||||
[assembly: AssemblyConfiguration("")]
|
|
||||||
[assembly: AssemblyCompany("")]
|
|
||||||
[assembly: AssemblyProduct("v2rayUpgrade")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2019-2020 (GPLv3)")]
|
|
||||||
[assembly: AssemblyTrademark("")]
|
|
||||||
[assembly: AssemblyCulture("")]
|
|
||||||
|
|
||||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
|
||||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
|
||||||
//请将此类型的 ComVisible 特性设置为 true。
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
|
||||||
[assembly: Guid("f82be52a-155c-492c-9e0a-1e917ec62c78")]
|
|
||||||
|
|
||||||
// 程序集的版本信息由下列四个值组成:
|
|
||||||
//
|
|
||||||
// 主版本
|
|
||||||
// 次版本
|
|
||||||
// 生成号
|
|
||||||
// 修订号
|
|
||||||
//
|
|
||||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
|
||||||
// 方法是按如下所示使用“*”: :
|
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
|
||||||
[assembly: AssemblyFileVersion("1.1.0.0")]
|
|
||||||
9
v2rayN/v2rayUpgrade/app.manifest
Normal file
9
v2rayN/v2rayUpgrade/app.manifest
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<asmv3:application>
|
||||||
|
<asmv3:windowsSettings>
|
||||||
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||||
|
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
|
</assembly>
|
||||||
@@ -1,89 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFramework>net48</TargetFramework>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{F82BE52A-155C-492C-9E0A-1E917EC62C78}</ProjectGuid>
|
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<RootNamespace>v2rayUpgrade</RootNamespace>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<AssemblyName>v2rayUpgrade</AssemblyName>
|
<Copyright>Copyright © 2019-2020 (GPLv3)</Copyright>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
<FileVersion>1.1.0.0</FileVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
|
||||||
<Deterministic>true</Deterministic>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<DebugType>none</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
<Reference Include="System.IO.Compression.FileSystem" />
|
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
|
||||||
<Reference Include="Microsoft.CSharp" />
|
|
||||||
<Reference Include="System.Data" />
|
|
||||||
<Reference Include="System.Deployment" />
|
|
||||||
<Reference Include="System.Drawing" />
|
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
<Reference Include="System.Windows.Forms" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="MainForm.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="MainForm.Designer.cs">
|
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Program.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<EmbeddedResource Include="MainForm.resx">
|
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
</Compile>
|
|
||||||
<None Include="Properties\Settings.settings">
|
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
|
||||||
</None>
|
|
||||||
<Compile Include="Properties\Settings.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Settings.settings</DependentUpon>
|
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="App.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
|
||||||
<StartArguments>C:\Githubb\v2rayN\v2rayN\v2rayUpgrade\bin\Debug\v2ray-windows.zip</StartArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
||||||
Reference in New Issue
Block a user