Compare commits

...

35 Commits
5.28 ... 5.31

Author SHA1 Message Date
2dust
e2053d5a77 Update AssemblyInfo.cs 2022-07-31 20:55:36 +08:00
2dust
ae6b3ef7fb DomainMatcher can be set to empty 2022-07-30 20:27:27 +08:00
2dust
359c6e0f02 delete temporary file 2022-07-30 20:16:13 +08:00
2dust
9a8b4593e1 Fix some issues with update core 2022-07-30 20:12:14 +08:00
2dust
02fc631e3c Merge pull request #2513 from FrzMtrsprt/patch-1
Better README
2022-07-30 19:18:53 +08:00
2dust
19e03a1fdd Merge pull request #2510 from InterestingDarkness/master
Add SagerNet/v2ray-core support
2022-07-30 19:17:57 +08:00
FrzMtrsprt
5ea6279711 Better README
Add release link
Fix grammar
2022-07-30 11:36:54 +08:00
InterestingDarkness
c44578c341 Add update SagerNet-Core functionality 2022-07-29 21:50:37 +08:00
InterestingDarkness
ab34d3fe30 Merge branch '2dust:master' into master 2022-07-29 21:10:59 +08:00
2dust
5aa27c14c6 Update ListViewFlickerFree.cs 2022-07-29 20:59:12 +08:00
2dust
a5e9edb2e5 CheckForDotNetVersion 2022-07-29 20:59:07 +08:00
InterestingDarkness
bbd8ef1f26 Add SagerNet/v2ray-core support 2022-07-29 20:11:39 +08:00
2dust
ad8afa0d3d Update AssemblyInfo.cs 2022-07-28 21:06:37 +08:00
2dust
5198f30363 Add custom configuration to start socks service 2022-07-28 21:05:22 +08:00
2dust
50e55761ab Merge pull request #2501 from Lemonawa/master
fix #2500
2022-07-26 21:04:56 +08:00
Lemonawa
7cb67aa49c Merge branch '2dust:master' into master 2022-07-26 20:34:41 +08:00
Lemonawa
1d4993180a Rename .github/ISSUE_TEMPALTE/02_feature_request.yml to .github/ISSUE_TEMPLATE/02_feature_request.yml 2022-07-26 20:34:24 +08:00
Lemonawa
73a36d5556 Rename .github/ISSUE_TEMPALTE/01_bug_report.yml to .github/ISSUE_TEMPLATE/01_bug_report.yml 2022-07-26 20:33:57 +08:00
2dust
368e489190 Merge pull request #2500 from Lemonawa/master
Update issue templates
2022-07-26 20:08:54 +08:00
2dust
d582d4846e Improve user experience 2022-07-26 20:02:47 +08:00
2dust
87ffad398e add tuic support 2022-07-26 20:02:07 +08:00
Lemonawa
439e7eaca0 Create 02_feature_request.yml 2022-07-26 18:51:36 +08:00
Lemonawa
90d703ae91 Update 01_bug_report.yml 2022-07-26 18:51:08 +08:00
Lemonawa
2d80c90f78 Create 01_bug_report.yml 2022-07-26 18:29:14 +08:00
Lemonawa
b54c8e97bd Delete feature---.md 2022-07-26 18:11:31 +08:00
Lemonawa
58e69a6644 Delete bug---.md 2022-07-26 18:11:22 +08:00
2dust
f09a13259f bug fix 2022-07-25 20:34:12 +08:00
2dust
8775c5e1f2 add Outbound Freedom domainStrategy 2022-07-25 20:34:00 +08:00
2dust
61b7997ae9 Fix notifyicon maxlength issue 2022-07-24 20:38:56 +08:00
2dust
99fa98844c bug fix 2022-07-24 20:11:50 +08:00
2dust
6e5781c633 Update AssemblyInfo.cs 2022-07-04 20:56:04 +08:00
2dust
b58e524d78 bugfix 2022-07-04 20:47:39 +08:00
2dust
0d669af44e Merge pull request #2449 from Miroxyz/master
Update Clash.Meta coreExes
2022-07-04 20:43:32 +08:00
Miro11
a331c70233 Update Clash.Meta coreExes 2022-07-04 14:02:40 +08:00
2dust
fd7d688e6b Improve subscription update 2022-07-03 09:07:48 +08:00
42 changed files with 2229 additions and 2057 deletions

View 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

View 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

View File

@@ -1,33 +0,0 @@
---
name: Bug 报告
about: 在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
title: "[BUG]"
labels: bug
assignees: ''
---
在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
### 预期行为
描述你认为应该发生什么
### 实际行为
描述实际发生了什么
### 复现方法
1.
2.
3.
### 日志信息,位置在当前目录下的guiLogs
<details>
```
在这里粘贴日志
```
</details>
### 环境信息(客户端请升级至最新正式版)
### 额外信息(可选)

View File

@@ -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.

View File

@@ -8,11 +8,11 @@ A V2Ray client for Windows, support [Xray core](https://github.com/XTLS/Xray-cor
[![Chat on Telegram](https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg)](https://t.me/v2rayn)
### How to use
- If you are newbie please download v2rayN-Core.zip from releases
- Otherwise please download v2rayN.zip (Also need to download v2ray core in the same folder)
- If you are new to this, please download v2rayN-Core.zip from [releases](https://github.com/2dust/v2rayN/releases)
- Otherwise please download v2rayN.zip (you will also need to download v2ray core into the same folder with v2rayN.exe)
- Run v2rayN.exe
### 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)
- Xray core [https://github.com/XTLS/Xray-core/releases](https://github.com/XTLS/Xray-core/releases)

View File

@@ -93,5 +93,20 @@ namespace v2rayN.Base
DoDragDrop(e.Item, DragDropEffects.Move);
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];
}
}
}
}

View File

@@ -31,6 +31,9 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
this.btnClose = new System.Windows.Forms.Button();
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.cmbCoreType = new System.Windows.Forms.ComboBox();
this.labCoreType = new System.Windows.Forms.Label();
@@ -49,14 +52,18 @@
//
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// 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.cmbCoreType);
this.groupBox1.Controls.Add(this.labCoreType);
@@ -66,10 +73,24 @@
this.groupBox1.Controls.Add(this.txtRemarks);
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.label1);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
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
//
resources.ApplyResources(this.btnEdit, "btnEdit");
@@ -79,9 +100,9 @@
//
// cmbCoreType
//
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
this.cmbCoreType.Name = "cmbCoreType";
//
// labCoreType
@@ -123,9 +144,9 @@
//
// panel2
//
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK);
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// btnOK
@@ -174,5 +195,8 @@
private System.Windows.Forms.ComboBox cmbCoreType;
private System.Windows.Forms.Label labCoreType;
private System.Windows.Forms.Button btnEdit;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtPreSocksPort;
private System.Windows.Forms.Label label3;
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
@@ -18,11 +19,15 @@ namespace v2rayN.Forms
private void AddServer2Form_Load(object sender, EventArgs e)
{
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
cmbCoreType.Items.Add("clash");
cmbCoreType.Items.Add("clash_meta");
cmbCoreType.Items.Add("hysteria");
cmbCoreType.Items.Add("naiveproxy");
List<string> coreTypes = new List<string>();
foreach (ECoreType it in Enum.GetValues(typeof(ECoreType)))
{
if (it == ECoreType.v2rayN)
continue;
coreTypes.Add(it.ToString());
}
cmbCoreType.Items.AddRange(coreTypes.ToArray());
cmbCoreType.Items.Add(string.Empty);
txtAddress.ReadOnly = true;
@@ -47,6 +52,7 @@ namespace v2rayN.Forms
{
txtRemarks.Text = vmessItem.remarks;
txtAddress.Text = vmessItem.address;
txtPreSocksPort.Text = vmessItem.preSocksPort.ToString();
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
}
@@ -74,6 +80,8 @@ namespace v2rayN.Forms
return;
}
vmessItem.remarks = remarks;
vmessItem.preSocksPort = Utils.ToInt(txtPreSocksPort.Text);
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
{
vmessItem.coreType = null;

View File

@@ -118,390 +118,456 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;label6.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;txtPreSocksPort.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
<value>450, 17</value>
</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="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;txtPreSocksPort.Name" xml:space="preserve">
<value>txtPreSocksPort</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;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>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>208, 110</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>&amp;Cancel</value>
<data name="btnEdit.Text" xml:space="preserve">
<value>&amp;Edit</value>
</data>
<data name="&gt;&gt;btnClose.Name" xml:space="preserve">
<value>btnClose</value>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;btnClose.Type" xml:space="preserve">
<data name="&gt;&gt;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="&gt;&gt;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="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;btnOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;$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="&gt;&gt;btnBrowse.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;labCoreType.Name" xml:space="preserve">
<value>labCoreType</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;btnOK.Name" xml:space="preserve">
<value>btnOK</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="labCoreType.TabIndex" type="System.Int32, mscorlib">
<value>42</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;btnClose.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;btnClose.ZOrder" xml:space="preserve">
<value>0</value>
<data name="txtPreSocksPort.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 21</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>611, 10</value>
</data>
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
<value>208, 110</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>&amp;Edit</value>
</data>
<data name="&gt;&gt;btnEdit.Name" xml:space="preserve">
<value>btnEdit</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;btnEdit.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;cmbCoreType.Name" xml:space="preserve">
<value>cmbCoreType</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;cmbCoreType.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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 name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 10</value>
</data>
<data name="labCoreType.Text" xml:space="preserve">
<value>Core Type</value>
</data>
<data name="&gt;&gt;labCoreType.Name" xml:space="preserve">
<value>labCoreType</value>
<data name="txtPreSocksPort.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 195</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;labCoreType.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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">
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
<value>40</value>
</data>
<data name="btnBrowse.Text" xml:space="preserve">
<value>&amp;Browse</value>
</data>
<data name="&gt;&gt;btnBrowse.Name" xml:space="preserve">
<value>btnBrowse</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;btnBrowse.Parent" xml:space="preserve">
<data name="&gt;&gt;cmbCoreType.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;txtAddress.Name" xml:space="preserve">
<value>txtAddress</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;txtAddress.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;label13.Name" xml:space="preserve">
<value>label13</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;label13.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;txtRemarks.Name" xml:space="preserve">
<value>txtRemarks</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;txtRemarks.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtRemarks.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<data name="&gt;&gt;btnEdit.Name" xml:space="preserve">
<value>btnEdit</value>
</data>
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 27</value>
<data name="btnOK.Text" xml:space="preserve">
<value>&amp;OK</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 12</value>
<data name="&gt;&gt;btnClose.Name" xml:space="preserve">
<value>btnClose</value>
</data>
<data name="label6.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Alias (remarks)</value>
</data>
<data name="&gt;&gt;label6.Name" xml:space="preserve">
<value>label6</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;label6.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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 name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Address</value>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>229, 189</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>44</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;cmbCoreType.Name" xml:space="preserve">
<value>cmbCoreType</value>
</data>
<data name="btnBrowse.Text" xml:space="preserve">
<value>&amp;Browse</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>8</value>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 10</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="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;btnOK.Name" xml:space="preserve">
<value>btnOK</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;btnOK.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
<data name="label2.Text" xml:space="preserve">
<value>Pre-Socks Port</value>
</data>
<data name="&gt;&gt;panel2.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="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;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>&amp;OK</value>
</data>
<data name="&gt;&gt;btnOK.Name" xml:space="preserve">
<value>btnOK</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;btnOK.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;btnOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 259</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>611, 10</value>
<data name="&gt;&gt;txtAddress.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
<data name="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
<data name="&gt;&gt;labCoreType.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 12</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>2</value>
<data name="&gt;&gt;txtPreSocksPort.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="$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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;cmbCoreType.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>* Fill in manually</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;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="&gt;&gt;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="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;label13.Name" xml:space="preserve">
<value>label13</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>&amp;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="&gt;&gt;txtRemarks.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="&gt;&gt;btnEdit.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;txtAddress.Name" xml:space="preserve">
<value>txtAddress</value>
</data>
<data name="&gt;&gt;txtAddress.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;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="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</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="&gt;&gt;$this.Name" xml:space="preserve">
<value>AddServer2Form</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@@ -117,34 +117,56 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Text" xml:space="preserve">
<value>自定义配置</value>
</data>
<data name="btnBrowse.Text" xml:space="preserve">
<value>浏览(&amp;B)</value>
</data>
<data name="btnClose.Text" xml:space="preserve">
<value>取消(&amp;C)</value>
</data>
<data name="btnEdit.Text" xml:space="preserve">
<value>编辑(&amp;E)</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>确定(&amp;O)</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>服务器</value>
</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>编辑(&amp;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">
<value>Core类型</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>地址(address)</value>
<data name="btnBrowse.Text" xml:space="preserve">
<value>浏览(&amp;B)</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>*手填,方便识别管理</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 12</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>别名(remarks)</value>
</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>确定(&amp;O)</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>自定义配置</value>
</data>
</root>

View File

@@ -35,7 +35,7 @@ namespace v2rayN.Forms
//panTran.Visible = false;
//this.Height = this.Height - panTran.Height;
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys().ToArray());
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).ToArray());
break;
case EConfigType.Socks:
panSocks.Dock = DockStyle.Fill;

View File

@@ -111,6 +111,7 @@
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
this.tsbCheckUpdateN = 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.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
this.tsbCheckUpdateClashCore = new System.Windows.Forms.ToolStripMenuItem();
@@ -718,6 +719,7 @@
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbCheckUpdateN,
this.tsbCheckUpdateCore,
this.tsbCheckUpdateSagerNetCore,
this.tsbCheckUpdateXrayCore,
this.toolStripSeparator16,
this.tsbCheckUpdateClashCore,
@@ -740,6 +742,12 @@
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
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
//
this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore";
@@ -972,6 +980,7 @@
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashMetaCore;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
private System.Windows.Forms.ToolStripMenuItem menuSortServerResult;
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateSagerNetCore;
}
}

View File

@@ -87,6 +87,12 @@ namespace v2rayN.Forms
MainFormHandler.Instance.RegisterGlobalHotkey(config, OnHotkeyHandler, UpdateTaskHandler);
_ = LoadV2ray();
if (!Utils.CheckForDotNetVersion())
{
UI.ShowWarning(ResUI.NetFrameworkRequirementsTip);
AppendText(false, ResUI.NetFrameworkRequirementsTip);
}
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
@@ -340,7 +346,7 @@ namespace v2rayN.Forms
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
{
lvServers.Items[index].Selected = true;
lvServers.EnsureVisible(index); // workaround
lvServers.SetScrollPosition(index);
}
}
@@ -932,7 +938,23 @@ namespace v2rayN.Forms
}
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 = "√";
lvServers.Items[k].ForeColor = Color.DodgerBlue;
lvServers.Items[k].Font = new Font(lvServers.Font, FontStyle.Bold);
}
else
{
lvServers.Items[k].SubItems[0].Text = "";
lvServers.Items[k].ForeColor = lvServers.ForeColor;
lvServers.Items[k].Font = new Font(lvServers.Font, FontStyle.Regular);
}
}
RefreshServersMenu();
_ = LoadV2ray();
}
return 0;
@@ -1082,7 +1104,7 @@ namespace v2rayN.Forms
/// <param name="msg"></param>
private void notifyMsg(string msg)
{
notifyMain.Text = msg;
notifyMain.Text = (msg.Length <= 63 ? msg : msg.Substring(1, 63));
}
#endregion
@@ -1123,7 +1145,7 @@ namespace v2rayN.Forms
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
{
lvServers.Items[index].Selected = true;
lvServers.EnsureVisible(index); // workaround
lvServers.SetScrollPosition(index);
}
SetVisibleCore(true);
@@ -1342,6 +1364,11 @@ namespace v2rayN.Forms
CheckUpdateCore(ECoreType.v2fly);
}
private void tsbCheckUpdateSagerNetCore_Click(object sender, EventArgs e)
{
CheckUpdateCore(ECoreType.SagerNet);
}
private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e)
{
CheckUpdateCore(ECoreType.Xray);

View File

@@ -842,6 +842,9 @@
<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="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
</data>
@@ -1412,6 +1415,12 @@
<data name="&gt;&gt;tsbCheckUpdateCore.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="&gt;&gt;tsbCheckUpdateSagerNetCore.Name" xml:space="preserve">
<value>tsbCheckUpdateSagerNetCore</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;tsbCheckUpdateXrayCore.Name" xml:space="preserve">
<value>tsbCheckUpdateXrayCore</value>
</data>
@@ -1514,4 +1523,7 @@
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
<value>Update SagerNet Core</value>
</data>
</root>

View File

@@ -570,4 +570,7 @@
<data name="menuSortServerResult.Text" xml:space="preserve">
<value>按测试结果排序 (Ctrl+E)</value>
</data>
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
<value>SagerNet-Core</value>
</data>
</root>

View File

@@ -50,6 +50,8 @@
this.txtlocalPort = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
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.txtremoteDNS = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
@@ -270,12 +272,31 @@
// tabPage2
//
resources.ApplyResources(this.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.txtremoteDNS);
this.tabPage2.Controls.Add(this.label14);
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
// cmbdomainStrategy4Freedom
//
resources.ApplyResources(this.cmbdomainStrategy4Freedom, "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")});
this.cmbdomainStrategy4Freedom.Name = "cmbdomainStrategy4Freedom";
//
// label19
//
resources.ApplyResources(this.label19, "label19");
this.label19.Name = "label19";
//
// linkDnsObjectDoc
//
resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc");
@@ -746,5 +767,7 @@
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.NumericUpDown numStatisticsFreshRate;
private System.Windows.Forms.ComboBox cmbdomainStrategy4Freedom;
private System.Windows.Forms.Label label19;
}
}

View File

@@ -56,6 +56,7 @@ namespace v2rayN.Forms
//remoteDNS
txtremoteDNS.Text = config.remoteDNS;
cmbdomainStrategy4Freedom.Text = config.domainStrategy4Freedom;
chkdefAllowInsecure.Checked = config.defAllowInsecure;
@@ -229,6 +230,7 @@ namespace v2rayN.Forms
//remoteDNS
config.remoteDNS = txtremoteDNS.Text.TrimEx();
config.domainStrategy4Freedom = cmbdomainStrategy4Freedom.Text;
config.defAllowInsecure = chkdefAllowInsecure.Checked;

View File

@@ -146,6 +146,9 @@
<data name="&gt;&gt;tabPage7.Name" xml:space="preserve">
<value>tabPage7</value>
</data>
<data name="&gt;&gt;cmbdomainStrategy4Freedom.Parent" xml:space="preserve">
<value>tabPage2</value>
</data>
<data name="&gt;&gt;chkIgnoreGeoUpdateCore.Parent" xml:space="preserve">
<value>tabPage7</value>
</data>
@@ -164,8 +167,8 @@
<data name="chkmuxEnabled.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 129</value>
</data>
<data name="label11.Text" xml:space="preserve">
<value>readBufferSize</value>
<data name="&gt;&gt;cmbdomainStrategy4Freedom.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="btnSetLoopback.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
@@ -174,8 +177,8 @@
<data name="&gt;&gt;chkudpEnabled.Name" xml:space="preserve">
<value>chkudpEnabled</value>
</data>
<data name="labCoreType5.TabIndex" type="System.Int32, mscorlib">
<value>45</value>
<data name="cmbdomainStrategy4Freedom.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 20</value>
</data>
<data name="&gt;&gt;txtpass.Name" xml:space="preserve">
<value>txtpass</value>
@@ -183,15 +186,15 @@
<data name="btnSetLoopback.Size" type="System.Drawing.Size, System.Drawing">
<value>282, 23</value>
</data>
<data name="cmbloglevel.Items1" xml:space="preserve">
<value>info</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value>downlinkCapacity</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>mtu</value>
</data>
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 12</value>
</data>
<data name="&gt;&gt;cmbCoreType2.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -225,12 +228,18 @@
<data name="&gt;&gt;label12.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="cmbdomainStrategy4Freedom.Location" type="System.Drawing.Point, System.Drawing">
<value>223, 398</value>
</data>
<data name="&gt;&gt;tabPageCoreType.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Log level</value>
</data>
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
<value>351, 157</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
@@ -318,14 +327,14 @@
<data name="&gt;&gt;txtpass.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
<value>Keep older when deduplication</value>
<data name="cmbdomainStrategy4Freedom.Items1" xml:space="preserve">
<value>UseIP</value>
</data>
<data name="&gt;&gt;txtlocalPort.Name" xml:space="preserve">
<value>txtlocalPort</value>
</data>
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 16</value>
<data name="&gt;&gt;label19.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="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -382,7 +391,7 @@
<value>13</value>
</data>
<data name="&gt;&gt;label14.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="&gt;&gt;chkKeepOlderDedupl.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -396,6 +405,9 @@
<data name="chksniffingEnabled.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;cmbCoreType4.Name" xml:space="preserve">
<value>cmbCoreType4</value>
</data>
<data name="&gt;&gt;chkKeepOlderDedupl.ZOrder" xml:space="preserve">
<value>11</value>
</data>
@@ -468,8 +480,8 @@
<data name="label10.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;tabPage2.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="cmbCoreType2.Location" type="System.Drawing.Point, System.Drawing">
<value>117, 68</value>
</data>
<data name="&gt;&gt;chkEnableSecurityProtocolTls13.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@@ -480,21 +492,21 @@
<data name="txtKcpdownlinkCapacity.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="chkdefAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 192</value>
</data>
<data name="cmbCoreType6.Location" type="System.Drawing.Point, System.Drawing">
<value>117, 172</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Use semicolon (;)</value>
</data>
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>281, 12</value>
</data>
<data name="&gt;&gt;tabPage2.Parent" xml:space="preserve">
<value>tabControl1</value>
</data>
<data name="&gt;&gt;label14.Parent" xml:space="preserve">
<value>tabPage2</value>
</data>
<data name="&gt;&gt;cmbloglevel.ZOrder" xml:space="preserve">
<value>12</value>
</data>
@@ -582,8 +594,8 @@
<data name="txtKcpreadBufferSize.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 21</value>
</data>
<data name="&gt;&gt;label11.ZOrder" xml:space="preserve">
<value>4</value>
<data name="txtKcpreadBufferSize.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="label11.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -624,11 +636,11 @@
<data name="&gt;&gt;labCoreType3.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="&gt;&gt;tabControl1.Parent" xml:space="preserve">
<value>$this</value>
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;btnSetLoopback.Name" xml:space="preserve">
<value>btnSetLoopback</value>
<data name="&gt;&gt;label14.Parent" xml:space="preserve">
<value>tabPage2</value>
</data>
<data name="&gt;&gt;chkEnableSecurityProtocolTls13.Name" xml:space="preserve">
<value>chkEnableSecurityProtocolTls13</value>
@@ -687,6 +699,9 @@
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 16</value>
</data>
<data name="&gt;&gt;tabControl1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;chkdefAllowInsecure.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
@@ -702,8 +717,8 @@
<data name="numStatisticsFreshRate.Location" type="System.Drawing.Point, System.Drawing">
<value>663, 37</value>
</data>
<data name="&gt;&gt;label17.Name" xml:space="preserve">
<value>label17</value>
<data name="cmbdomainStrategy4Freedom.TabIndex" type="System.Int32, mscorlib">
<value>41</value>
</data>
<data name="txtautoUpdateSubInterval.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 21</value>
@@ -732,9 +747,6 @@
<data name="&gt;&gt;tabPageCoreType.Name" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>Do not use proxy server for addresses beginning with</value>
</data>
<data name="&gt;&gt;labCoreType5.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
@@ -771,6 +783,9 @@
<data name="&gt;&gt;chkmuxEnabled.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label11.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;txtremoteDNS.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -819,6 +834,9 @@
<data name="&gt;&gt;chkmuxEnabled.Name" xml:space="preserve">
<value>chkmuxEnabled</value>
</data>
<data name="&gt;&gt;labCoreType3.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
<data name="tabPage1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
@@ -829,10 +847,10 @@
<value>label2</value>
</data>
<data name="&gt;&gt;txtremoteDNS.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="chkAutoRun.Text" xml:space="preserve">
<value>Automatically start at system startup</value>
<data name="&gt;&gt;labCoreType2.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
<data name="&gt;&gt;chksniffingEnabled.Parent" xml:space="preserve">
<value>groupBox1</value>
@@ -846,9 +864,6 @@
<data name="&gt;&gt;tabPage7.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="txtKcpreadBufferSize.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;label13.Name" xml:space="preserve">
<value>label13</value>
</data>
@@ -882,15 +897,24 @@
<data name="&gt;&gt;txtautoUpdateSubInterval.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="cmbdomainStrategy4Freedom.Items3" xml:space="preserve">
<value>UseIPv6</value>
</data>
<data name="chkudpEnabled.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;label19.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Automatic update interval of subscriptions (hours)</value>
</data>
<data name="&gt;&gt;label19.Name" xml:space="preserve">
<value>label19</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>Custom DNS (multiple, separated by commas (,))</value>
</data>
@@ -927,9 +951,6 @@
<data name="txtsystemProxyExceptions.TabIndex" type="System.Int32, mscorlib">
<value>41</value>
</data>
<data name="label16.TabIndex" type="System.Int32, mscorlib">
<value>39</value>
</data>
<data name="txtKcpmtu.Location" type="System.Drawing.Point, System.Drawing">
<value>111, 24</value>
</data>
@@ -969,8 +990,8 @@
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 16</value>
</data>
<data name="&gt;&gt;cmbCoreType4.Name" xml:space="preserve">
<value>cmbCoreType4</value>
<data name="label19.Text" xml:space="preserve">
<value>Outbound Freedom domainStrategy</value>
</data>
<data name="&gt;&gt;label12.Parent" xml:space="preserve">
<value>groupBox2</value>
@@ -1017,6 +1038,9 @@
<data name="chkEnableStatistics.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label19.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 402</value>
</data>
<data name="label5.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
@@ -1083,6 +1107,9 @@
<data name="tabControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 10</value>
</data>
<data name="label11.Text" xml:space="preserve">
<value>readBufferSize</value>
</data>
<data name="labCoreType5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
@@ -1095,9 +1122,15 @@
<data name="label16.Location" type="System.Drawing.Point, System.Drawing">
<value>397, 65</value>
</data>
<data name="label19.TabIndex" type="System.Int32, mscorlib">
<value>42</value>
</data>
<data name="&gt;&gt;cmbCoreType1.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
<data name="&gt;&gt;label19.Parent" xml:space="preserve">
<value>tabPage2</value>
</data>
<data name="&gt;&gt;chksniffingEnabled.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -1119,9 +1152,6 @@
<data name="labCoreType2.Text" xml:space="preserve">
<value>Core Type</value>
</data>
<data name="&gt;&gt;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="label8.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@@ -1131,12 +1161,15 @@
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
<value>728, 427</value>
</data>
<data name="&gt;&gt;labCoreType2.Name" xml:space="preserve">
<value>labCoreType2</value>
<data name="&gt;&gt;btnSetLoopback.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="&gt;&gt;txtautoUpdateInterval.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>Tray right-click menu servers display limit</value>
</data>
<data name="chksniffingEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
@@ -1224,8 +1257,8 @@
<data name="&gt;&gt;txtuser.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
<value>351, 157</value>
<data name="&gt;&gt;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="txtautoUpdateSubInterval.TabIndex" type="System.Int32, mscorlib">
<value>43</value>
@@ -1356,8 +1389,8 @@
<data name="&gt;&gt;label8.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="chkdefAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 192</value>
<data name="&gt;&gt;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="&gt;&gt;tabPage2.Name" xml:space="preserve">
<value>tabPage2</value>
@@ -1366,7 +1399,7 @@
<value>btnClose</value>
</data>
<data name="txtremoteDNS.Size" type="System.Drawing.Size, System.Drawing">
<value>638, 356</value>
<value>638, 349</value>
</data>
<data name="&gt;&gt;chkdefAllowInsecure.Name" xml:space="preserve">
<value>chkdefAllowInsecure</value>
@@ -1407,6 +1440,9 @@
<data name="&gt;&gt;txtKcptti.Name" xml:space="preserve">
<value>txtKcptti</value>
</data>
<data name="label19.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 12</value>
</data>
@@ -1422,6 +1458,9 @@
<data name="label14.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;cmbdomainStrategy4Freedom.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="&gt;&gt;chkudpEnabled.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -1470,8 +1509,8 @@
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="chkAllowLANConn.TabIndex" type="System.Int32, mscorlib">
<value>29</value>
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
<value>Keep older when deduplication</value>
</data>
<data name="&gt;&gt;label8.Name" xml:space="preserve">
<value>label8</value>
@@ -1536,8 +1575,8 @@
<data name="cmbprotocol.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>Tray right-click menu servers display limit</value>
<data name="chkAutoRun.Text" xml:space="preserve">
<value>Automatically start at system startup</value>
</data>
<data name="chkKcpcongestion.Text" xml:space="preserve">
<value>congestion</value>
@@ -1647,12 +1686,18 @@
<data name="&gt;&gt;txtautoUpdateInterval.Name" xml:space="preserve">
<value>txtautoUpdateInterval</value>
</data>
<data name="txtKcpuplinkCapacity.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
<value>246, 16</value>
</data>
<data name="&gt;&gt;tabPage1.Name" xml:space="preserve">
<value>tabPage1</value>
</data>
<data name="&gt;&gt;labCoreType2.Name" xml:space="preserve">
<value>labCoreType2</value>
</data>
<data name="&gt;&gt;tabPage6.ZOrder" xml:space="preserve">
<value>2</value>
</data>
@@ -1716,6 +1761,9 @@
<data name="label10.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="tabPage6.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="chkEnableStatistics.TabIndex" type="System.Int32, mscorlib">
<value>29</value>
</data>
@@ -1737,6 +1785,9 @@
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;cmbCoreType3.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
<data name="label15.TabIndex" type="System.Int32, mscorlib">
<value>37</value>
</data>
@@ -1797,21 +1848,18 @@
<data name="label12.TabIndex" type="System.Int32, mscorlib">
<value>40</value>
</data>
<data name="chkmuxEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 16</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>224, 29</value>
</data>
<data name="cmbCoreType3.TabIndex" type="System.Int32, mscorlib">
<value>40</value>
</data>
<data name="&gt;&gt;tabPage2.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>722, 421</value>
</data>
<data name="cmbCoreType2.Location" type="System.Drawing.Point, System.Drawing">
<value>117, 68</value>
</data>
<data name="&gt;&gt;txtsystemProxyExceptions.ZOrder" xml:space="preserve">
<value>4</value>
</data>
@@ -1845,12 +1893,12 @@
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>38</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>281, 12</value>
</data>
<data name="label14.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cmbdomainStrategy4Freedom.Items2" xml:space="preserve">
<value>UseIPv4</value>
</data>
<data name="chkKcpcongestion.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 143</value>
</data>
@@ -1929,6 +1977,9 @@
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 16</value>
</data>
<data name="label19.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labCoreType1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@@ -1950,6 +2001,9 @@
<data name="txttrayMenuServersLimit.TabIndex" type="System.Int32, mscorlib">
<value>45</value>
</data>
<data name="&gt;&gt;label17.Name" xml:space="preserve">
<value>label17</value>
</data>
<data name="labCoreType4.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 12</value>
</data>
@@ -1977,8 +2031,8 @@
<data name="cmbloglevel.Items" xml:space="preserve">
<value>debug</value>
</data>
<data name="&gt;&gt;btnSetLoopback.ZOrder" xml:space="preserve">
<value>7</value>
<data name="cmbloglevel.Items1" xml:space="preserve">
<value>info</value>
</data>
<data name="tabPage6.Text" xml:space="preserve">
<value>Core: KCP settings</value>
@@ -2016,6 +2070,9 @@
<data name="&gt;&gt;chkKcpcongestion.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 16</value>
</data>
<data name="&gt;&gt;cmbCoreType1.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -2052,17 +2109,14 @@
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>728, 427</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;label10.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="cmbSystemProxyAdvancedProtocol.Size" type="System.Drawing.Size, System.Drawing">
<value>638, 20</value>
</data>
<data name="&gt;&gt;labCoreType2.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
<data name="chkAllowLANConn.TabIndex" type="System.Int32, mscorlib">
<value>29</value>
</data>
<data name="linkDnsObjectDoc.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -2073,17 +2127,20 @@
<data name="&gt;&gt;txtKcpmtu.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="labCoreType5.TabIndex" type="System.Int32, mscorlib">
<value>45</value>
</data>
<data name="&gt;&gt;cmbprotocol.Name" xml:space="preserve">
<value>cmbprotocol</value>
</data>
<data name="tabPage6.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<data name="chkmuxEnabled.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 16</value>
</data>
<data name="&gt;&gt;label11.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="&gt;&gt;cmbCoreType3.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
<data name="label16.TabIndex" type="System.Int32, mscorlib">
<value>39</value>
</data>
<data name="&gt;&gt;tabPageCoreType.ZOrder" xml:space="preserve">
<value>4</value>
@@ -2100,17 +2157,17 @@
<data name="&gt;&gt;linkDnsObjectDoc.Parent" xml:space="preserve">
<value>tabPage2</value>
</data>
<data name="&gt;&gt;labCoreType3.Parent" xml:space="preserve">
<value>tabPageCoreType</value>
</data>
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
<data name="&gt;&gt;btnSetLoopback.Name" xml:space="preserve">
<value>btnSetLoopback</value>
</data>
<data name="labCoreType2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="txtKcpuplinkCapacity.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
<data name="&gt;&gt;cmbdomainStrategy4Freedom.Name" xml:space="preserve">
<value>cmbdomainStrategy4Freedom</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>Do not use proxy server for addresses beginning with</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
@@ -2121,6 +2178,9 @@
<data name="label16.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="cmbSystemProxyAdvancedProtocol.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 371</value>
</data>
@@ -2139,6 +2199,9 @@
<data name="label18.Text" xml:space="preserve">
<value>Advanced proxy settings, protocol selection (optional)</value>
</data>
<data name="cmbdomainStrategy4Freedom.Items" xml:space="preserve">
<value>AsIs</value>
</data>
<data name="&gt;&gt;label17.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@@ -2152,7 +2215,7 @@
<value>1</value>
</data>
<data name="&gt;&gt;linkDnsObjectDoc.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>

View File

@@ -121,6 +121,18 @@
<value>取消(&amp;C)</value>
</data>
<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">
<value>654, 443</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value> Core:基础设置 </value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>648, 437</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 12</value>
</data>
@@ -208,14 +220,17 @@
<data name="label2.Text" xml:space="preserve">
<value>本地监听端口</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>648, 437</value>
</data>
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value> Core:基础设置 </value>
<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">
<value>161, 12</value>
@@ -223,24 +238,27 @@
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
<value>支持填写DnsObject,JSON格式</value>
</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">
<value>191, 12</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
</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="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>
@@ -316,18 +334,24 @@
<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="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>例外</value>
</data>
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 12</value>
</data>
@@ -346,30 +370,15 @@
<data name="label12.Text" xml:space="preserve">
<value>对于下列字符开头的地址不使用代理服务器:</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>例外</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="btnOK.Text" xml:space="preserve">
<value>确定(&amp;O)</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 479</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>662, 60</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>确定(&amp;O)</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>662, 10</value>
</data>

View File

@@ -31,6 +31,7 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingDetailsForm));
this.panel1 = 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.clbInboundTag = new System.Windows.Forms.CheckedListBox();
this.label2 = new System.Windows.Forms.Label();
@@ -50,7 +51,6 @@
this.txtIP = new System.Windows.Forms.TextBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.txtDomain = new System.Windows.Forms.TextBox();
this.linkRuleobjectDoc = new System.Windows.Forms.LinkLabel();
this.panel3.SuspendLayout();
this.panel4.SuspendLayout();
this.panel2.SuspendLayout();
@@ -65,6 +65,7 @@
//
// panel3
//
resources.ApplyResources(this.panel3, "panel3");
this.panel3.Controls.Add(this.linkRuleobjectDoc);
this.panel3.Controls.Add(this.chkEnabled);
this.panel3.Controls.Add(this.clbInboundTag);
@@ -76,9 +77,15 @@
this.panel3.Controls.Add(this.labRoutingTips);
this.panel3.Controls.Add(this.label4);
this.panel3.Controls.Add(this.cmbOutboundTag);
resources.ApplyResources(this.panel3, "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
//
resources.ApplyResources(this.chkEnabled, "chkEnabled");
@@ -87,8 +94,8 @@
//
// clbInboundTag
//
this.clbInboundTag.CheckOnClick = true;
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
this.clbInboundTag.CheckOnClick = true;
this.clbInboundTag.FormattingEnabled = true;
this.clbInboundTag.Items.AddRange(new object[] {
resources.GetString("clbInboundTag.Items"),
@@ -105,8 +112,8 @@
//
// clbProtocol
//
this.clbProtocol.CheckOnClick = true;
resources.ApplyResources(this.clbProtocol, "clbProtocol");
this.clbProtocol.CheckOnClick = true;
this.clbProtocol.FormattingEnabled = true;
this.clbProtocol.Items.AddRange(new object[] {
resources.GetString("clbProtocol.Items"),
@@ -132,8 +139,8 @@
//
// labRoutingTips
//
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
this.labRoutingTips.Name = "labRoutingTips";
//
// label4
@@ -143,21 +150,21 @@
//
// cmbOutboundTag
//
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbOutboundTag.FormattingEnabled = true;
this.cmbOutboundTag.Items.AddRange(new object[] {
resources.GetString("cmbOutboundTag.Items"),
resources.GetString("cmbOutboundTag.Items1"),
resources.GetString("cmbOutboundTag.Items2")});
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
this.cmbOutboundTag.Name = "cmbOutboundTag";
//
// panel4
//
resources.ApplyResources(this.panel4, "panel4");
this.panel4.Controls.Add(this.chkAutoSort);
this.panel4.Controls.Add(this.btnClose);
this.panel4.Controls.Add(this.btnOK);
resources.ApplyResources(this.panel4, "panel4");
this.panel4.Name = "panel4";
//
// chkAutoSort
@@ -168,8 +175,8 @@
//
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
@@ -183,15 +190,15 @@
//
// panel2
//
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.groupBox2);
this.panel2.Controls.Add(this.groupBox1);
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.txtIP);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.txtIP);
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
@@ -202,8 +209,8 @@
//
// groupBox1
//
this.groupBox1.Controls.Add(this.txtDomain);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.txtDomain);
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
@@ -212,13 +219,6 @@
resources.ApplyResources(this.txtDomain, "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
//
resources.ApplyResources(this, "$this");

File diff suppressed because it is too large Load Diff

View File

@@ -118,14 +118,20 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<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">
<value>670, 18</value>
<value>670, 48</value>
</data>
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
<value>372, 16</value>
</data>
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
<value>272, 20</value>
<value>347, 20</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>279, 20</value>
@@ -154,6 +160,12 @@
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
<value>120, 16</value>
</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">
<value>取消(&amp;C)</value>
</data>
@@ -170,10 +182,4 @@
<data name="$this.Text" xml:space="preserve">
<value>路由规则详情设置</value>
</data>
<data name="chkAutoSort.Text" xml:space="preserve">
<value>保存时Domain和IP自动排序</value>
</data>
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
<value>规则详细说明文档</value>
</data>
</root>

View File

@@ -45,6 +45,7 @@
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
this.menuSelectAll = 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.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem();
this.menuServer = new System.Windows.Forms.MenuStrip();
@@ -71,7 +72,6 @@
this.txtBlockDomain = new System.Windows.Forms.TextBox();
this.tabPageRuleList = new System.Windows.Forms.TabPage();
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.panel2.SuspendLayout();
this.panel1.SuspendLayout();
this.cmsLv.SuspendLayout();
@@ -135,9 +135,6 @@
//
this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbdomainMatcher.FormattingEnabled = true;
this.cmbdomainMatcher.Items.AddRange(new object[] {
resources.GetString("cmbdomainMatcher.Items"),
resources.GetString("cmbdomainMatcher.Items1")});
resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher");
this.cmbdomainMatcher.Name = "cmbdomainMatcher";
//
@@ -209,6 +206,11 @@
resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting");
this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// menuImportAdvancedRules
//
this.menuImportAdvancedRules.Name = "menuImportAdvancedRules";
@@ -390,11 +392,6 @@
this.lvRoutings.View = System.Windows.Forms.View.Details;
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// RoutingSettingForm
//
resources.ApplyResources(this, "$this");

View File

@@ -20,6 +20,7 @@ namespace v2rayN.Forms
private void RoutingSettingForm_Load(object sender, EventArgs e)
{
ConfigHandler.InitBuiltinRouting(ref config);
cmbdomainMatcher.Items.AddRange(Global.domainMatchers.ToArray());
cmbdomainStrategy.Text = config.domainStrategy;
chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced;

File diff suppressed because it is too large Load Diff

View File

@@ -13,11 +13,13 @@ namespace v2rayN
public const string UpdateUrl = AboutUrl + @"/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 SagerNetCoreUrl = "https://github.com/SagerNet/v2ray-core/releases";
public const string NUrl = @"https://github.com/2dust/v2rayN/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 hysteriaCoreUrl = "https://github.com/HyNetwork/hysteria/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";
@@ -206,11 +208,13 @@ namespace v2rayN
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> 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> 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> 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 GrpcmultiMode = "multi";

View File

@@ -95,10 +95,10 @@ namespace v2rayN.Handler
{
config.domainStrategy = "IPIfNonMatch";
}
if (Utils.IsNullOrEmpty(config.domainMatcher))
{
config.domainMatcher = "linear";
}
//if (Utils.IsNullOrEmpty(config.domainMatcher))
//{
// config.domainMatcher = "linear";
//}
//kcp
if (config.kcpItem == null)
@@ -529,7 +529,7 @@ namespace v2rayN.Handler
vmessItem.id = vmessItem.id.TrimEx();
vmessItem.security = vmessItem.security.TrimEx();
if (!LazyConfig.Instance.GetShadowsocksSecuritys().Contains(vmessItem.security))
if (!LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).Contains(vmessItem.security))
{
return -1;
}
@@ -816,6 +816,7 @@ namespace v2rayN.Handler
&& o.path == n.path
&& o.streamSecurity == n.streamSecurity
&& o.flow == n.flow
&& o.sni == n.sni
&& (!remarks || o.remarks == n.remarks);
}
@@ -978,7 +979,9 @@ namespace v2rayN.Handler
else if (clipboardData.IndexOf("server") >= 0
&& clipboardData.IndexOf("up") >= 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");
File.WriteAllText(fileName, clipboardData);
@@ -989,7 +992,9 @@ namespace v2rayN.Handler
}
//Is naiveproxy configuration
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");
File.WriteAllText(fileName, clipboardData);

View File

@@ -4,6 +4,7 @@ using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -66,7 +67,11 @@ namespace v2rayN.Handler
catch (Exception 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;
}
@@ -104,7 +109,11 @@ namespace v2rayN.Handler
{
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));
}
}
}
@@ -167,6 +176,10 @@ namespace v2rayN.Handler
{
Utils.SaveLog(ex.Message, ex);
Error?.Invoke(this, new ErrorEventArgs(ex));
if (ex.InnerException != null)
{
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
}
}
return null;
}
@@ -239,13 +252,35 @@ namespace v2rayN.Handler
return null;
}
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
var webProxy = new WebProxy(Global.Loopback, httpPort);
if (RunAvailabilityCheck(webProxy) > 0)
if (!SocketCheck(Global.Loopback, httpPort))
{
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;
}
}
}

View File

@@ -22,14 +22,18 @@ namespace v2rayN.Handler
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;
}
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.Xray)
{
return Global.ssSecuritysInXray;
}
return Global.ssSecuritysInXray;
return Global.ssSecuritysInSagerNet;
}
public ECoreType GetCoreType(VmessItem vmessItem, EConfigType eConfigType)
@@ -82,7 +86,21 @@ namespace v2rayN.Handler
coreLatestUrl = Global.v2flyCoreUrl + "/latest",
coreDownloadUrl32 = 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,
coreLatestUrl = Global.SagerNetCoreUrl + "/latest",
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
@@ -94,7 +112,8 @@ namespace v2rayN.Handler
coreLatestUrl = Global.xrayCoreUrl + "/latest",
coreDownloadUrl32 = 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
@@ -106,18 +125,21 @@ namespace v2rayN.Handler
coreLatestUrl = Global.clashCoreUrl + "/latest",
coreDownloadUrl32 = Global.clashCoreUrl + "/download/{0}/clash-windows-386-{0}.zip",
coreDownloadUrl64 = Global.clashCoreUrl + "/download/{0}/clash-windows-amd64-{0}.zip",
match = "v"
match = "v",
versionArg = "-v"
});
coreInfos.Add(new CoreInfo
{
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",
coreUrl = Global.clashMetaCoreUrl,
coreLatestUrl = Global.clashMetaCoreUrl + "/latest",
coreDownloadUrl32 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-386-{0}.zip",
coreDownloadUrl64 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-amd64-compatible-{0}.zip",
match = "v",
versionArg = "-v"
});
coreInfos.Add(new CoreInfo
@@ -138,6 +160,14 @@ namespace v2rayN.Handler
arguments = "config.json",
coreUrl = Global.naiveproxyCoreUrl
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.tuic,
coreExes = new List<string> { "tuic-client", "tuic" },
arguments = "-c config.json",
coreUrl = Global.tuicCoreUrl
});
}
}

View File

@@ -360,7 +360,7 @@ namespace v2rayN.Handler
Process p = new Process();
p.StartInfo.FileName = filePath;
p.StartInfo.Arguments = "-version";
p.StartInfo.Arguments = coreInfo.versionArg;
p.StartInfo.WorkingDirectory = Utils.StartupPath();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
@@ -369,7 +369,19 @@ namespace v2rayN.Handler
p.Start();
p.WaitForExit(5000);
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;
}
catch (Exception ex)
@@ -392,6 +404,7 @@ namespace v2rayN.Handler
switch (type)
{
case ECoreType.v2fly:
case ECoreType.SagerNet:
case ECoreType.Xray:
{
curVersion = "v" + getCoreVersion(type);
@@ -403,7 +416,7 @@ namespace v2rayN.Handler
case ECoreType.clash:
case ECoreType.clash_meta:
{
curVersion = "";//getCoreVersion(type);
curVersion = getCoreVersion(type);
message = string.Format(ResUI.IsLatestCore, curVersion);
if (Environment.Is64BitProcess)
{

View File

@@ -27,8 +27,9 @@ namespace v2rayN.Handler
/// <param name="fileName"></param>
/// <param name="msg"></param>
/// <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
{
if (node == null)
@@ -42,46 +43,22 @@ namespace v2rayN.Handler
{
return GenerateClientCustomConfig(node, fileName, out msg);
}
//取得默认配置
string result = Utils.GetEmbedText(SampleClient);
if (Utils.IsNullOrEmpty(result))
else
{
msg = ResUI.FailedGetDefaultConfiguration;
return -1;
V2rayConfig v2rayConfig = null;
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 (Exception ex)
{
@@ -92,6 +69,8 @@ namespace v2rayN.Handler
return 0;
}
/// <summary>
/// 日志
/// </summary>
@@ -221,7 +200,7 @@ namespace v2rayN.Handler
&& v2rayConfig.routing.rules != null)
{
v2rayConfig.routing.domainStrategy = config.domainStrategy;
v2rayConfig.routing.domainMatcher = config.domainMatcher;
v2rayConfig.routing.domainMatcher = Utils.IsNullOrEmpty(config.domainMatcher) ? null : config.domainMatcher;
if (config.enableRoutingAdvanced)
{
@@ -432,7 +411,7 @@ namespace v2rayN.Handler
serversItem.address = node.address;
serversItem.port = node.port;
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;
@@ -832,6 +811,14 @@ namespace v2rayN.Handler
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);
if (obj != null && obj.ContainsKey("servers"))
{
@@ -955,34 +942,39 @@ namespace v2rayN.Handler
}
//overwrite port
var fileContent = File.ReadAllLines(fileName).ToList();
var coreType = LazyConfig.Instance.GetCoreType(node, node.configType);
switch (coreType)
if (node.preSocksPort <= 0)
{
case ECoreType.v2fly:
case ECoreType.Xray:
break;
case ECoreType.clash:
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);
}
var fileContent = File.ReadAllLines(fileName).ToList();
var coreType = LazyConfig.Instance.GetCoreType(node, node.configType);
switch (coreType)
{
case ECoreType.v2fly:
case ECoreType.SagerNet:
case ECoreType.Xray:
break;
case ECoreType.clash:
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);
}
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
break;
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
break;
}
File.WriteAllLines(fileName, fileContent);
}
File.WriteAllLines(fileName, fileContent);
msg = string.Format(ResUI.SuccessfulConfiguration, $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
//msg = string.Format(ResUI.SuccessfulConfiguration, $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
msg = string.Format(ResUI.SuccessfulConfiguration, "");
}
catch (Exception ex)
{
@@ -993,6 +985,66 @@ namespace v2rayN.Handler
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
#region
@@ -1433,7 +1485,12 @@ namespace v2rayN.Handler
/// <returns></returns>
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>
@@ -1480,10 +1537,13 @@ namespace v2rayN.Handler
msg = ResUI.FailedGenDefaultConfiguration;
return "";
}
List<IPEndPoint> lstIpEndPoints = null;
List<IPEndPoint> lstIpEndPoints = new List<IPEndPoint>();
List<TcpConnectionInformation> lstTcpConns = new List<TcpConnectionInformation>();
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)
{
@@ -1524,6 +1584,10 @@ namespace v2rayN.Handler
{
continue;
}
if (lstTcpConns != null && lstTcpConns.FindIndex(_it => _it.LocalEndPoint.Port == k) >= 0)
{
continue;
}
//found
port = k;
httpPort = port + 1;

View File

@@ -24,7 +24,7 @@ namespace v2rayN.Handler
private static string v2rayConfigRes = Global.v2rayConfigFileName;
private CoreInfo coreInfo;
public event ProcessDelegate ProcessEvent;
//private int processId = 0;
private int processId = 0;
private Process _process;
public V2rayHandler()
@@ -51,15 +51,31 @@ namespace v2rayN.Handler
return;
}
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);
}
else
{
ShowMsg(true, msg);
ShowMsg(false, msg);
ShowMsg(true, $"[{config.GetGroupRemarks(item.groupId)}] {item.GetSummary()}");
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)
//{
// Process p1 = Process.GetProcessById(processId);
// 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();
// }
// }
//}
if (processId > 0)
{
V2rayStopPid(processId);
processId = 0;
}
}
catch (Exception ex)
{
@@ -214,7 +215,8 @@ namespace v2rayN.Handler
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true,
StandardOutputEncoding = Encoding.UTF8
StandardOutputEncoding = Encoding.UTF8,
StandardErrorEncoding = Encoding.UTF8
}
};
p.OutputDataReceived += (sender, e) =>
@@ -228,7 +230,6 @@ namespace v2rayN.Handler
p.Start();
p.PriorityClass = ProcessPriorityClass.High;
p.BeginOutputReadLine();
//processId = p.Id;
_process = p;
if (p.WaitForExit(1000))
@@ -269,7 +270,8 @@ namespace v2rayN.Handler
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true,
StandardOutputEncoding = Encoding.UTF8
StandardOutputEncoding = Encoding.UTF8,
StandardErrorEncoding = Encoding.UTF8
}
};
p.OutputDataReceived += (sender, e) =>

View File

@@ -84,6 +84,14 @@ namespace v2rayN.Mode
get; set;
}
/// <summary>
/// Outbound Freedom domainStrategy
/// </summary>
public string domainStrategy4Freedom
{
get; set;
}
/// <summary>
/// 是否允许不安全连接
/// </summary>
@@ -553,10 +561,16 @@ namespace v2rayN.Mode
{
get; set;
} = string.Empty;
public ECoreType? coreType
{
get; set;
}
public int preSocksPort
{
get; set;
}
}
[Serializable]

View File

@@ -21,5 +21,7 @@ namespace v2rayN.Mode
public string coreDownloadUrl64 { get; set; }
public string match { get; set; }
public string versionArg { get; set; }
}
}

View File

@@ -5,10 +5,12 @@ namespace v2rayN.Mode
{
v2fly = 1,
Xray = 2,
SagerNet = 3,
clash = 11,
clash_meta = 12,
hysteria = 21,
naiveproxy = 22,
tuic = 23,
v2rayN = 99
}
}

View File

@@ -224,6 +224,16 @@ namespace v2rayN.Mode
///
/// </summary>
public Response response { get; set; }
/// <summary>
///
/// </summary>
public string domainStrategy { get; set; }
/// <summary>
///
/// </summary>
public int? userLevel { get; set; }
}
public class VnextItem

View File

@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("5.28")]
[assembly: AssemblyFileVersion("5.31")]

View File

@@ -708,6 +708,15 @@ namespace v2rayN.Resx {
}
}
/// <summary>
/// 查找类似 Normal use of this version requires .NET Framework 4.8 的本地化字符串。
/// </summary>
internal static string NetFrameworkRequirementsTip {
get {
return ResourceManager.GetString("NetFrameworkRequirementsTip", resourceCulture);
}
}
/// <summary>
/// 查找类似 Non-VMess or ss protocol 的本地化字符串。
/// </summary>

View File

@@ -472,4 +472,7 @@
<data name="MsgServerTitle" xml:space="preserve">
<value>Servers (Filter : {0})</value>
</data>
<data name="NetFrameworkRequirementsTip" xml:space="preserve">
<value>Normal use of this version requires .NET Framework 4.8</value>
</data>
</root>

View File

@@ -472,4 +472,7 @@
<data name="MsgServerTitle" xml:space="preserve">
<value>服务器 (过滤器 : {0})</value>
</data>
<data name="NetFrameworkRequirementsTip" xml:space="preserve">
<value>正常使用此版本需要.NET Framework 4.8,请更新后重启</value>
</data>
</root>

View File

@@ -94,6 +94,10 @@ namespace v2rayN.Tool
}
}
}
if (File.Exists(fileName))
{
File.Delete(fileName);
}
}
catch (Exception ex)
{

View File

@@ -694,7 +694,7 @@ namespace v2rayN
/// </summary>
/// <param name="release">需要的版本4.6.2=394802;4.8=528040</param>
/// <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\";
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))