Compare commits
123 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a799420d0f | ||
|
|
70069a05e6 | ||
|
|
d385b44a48 | ||
|
|
56c1557f4a | ||
|
|
737d563ebb | ||
|
|
81b70195cf | ||
|
|
e60851153b | ||
|
|
009a15f0d9 | ||
|
|
f234775bd5 | ||
|
|
9b8bd0fa8a | ||
|
|
f74191946c | ||
|
|
ffa8b6296d | ||
|
|
0b2a392de2 | ||
|
|
f6b044c10c | ||
|
|
88c87aec0e | ||
|
|
b632dee0ce | ||
|
|
0db772aaeb | ||
|
|
fedfed4028 | ||
|
|
3b27e7be36 | ||
|
|
78402118ef | ||
|
|
aa3094f796 | ||
|
|
20498ce453 | ||
|
|
56559e6509 | ||
|
|
9549d17b03 | ||
|
|
a822fa9766 | ||
|
|
dee4b19775 | ||
|
|
f4b885dce5 | ||
|
|
2c02285def | ||
|
|
be7d76947b | ||
|
|
a81254dfff | ||
|
|
cb24a909ae | ||
|
|
8a87318b68 | ||
|
|
219f544a43 | ||
|
|
46c887537e | ||
|
|
8cf66da07c | ||
|
|
57bcf8a1a7 | ||
|
|
05efff10da | ||
|
|
414ac3225a | ||
|
|
0a8e822f35 | ||
|
|
301d1dd998 | ||
|
|
621565f4a4 | ||
|
|
6f51d447c7 | ||
|
|
f9c7556c54 | ||
|
|
32b98524ff | ||
|
|
efaec3ee17 | ||
|
|
28826cad1b | ||
|
|
ca9840abf4 | ||
|
|
8813d66274 | ||
|
|
da2b0f7dd4 | ||
|
|
b1773dab90 | ||
|
|
9538a67be1 | ||
|
|
fbfbc811d4 | ||
|
|
1c04b752cd | ||
|
|
3b1a2287d5 | ||
|
|
f3e6bd2736 | ||
|
|
4e449811e7 | ||
|
|
910be7f471 | ||
|
|
1e088f851b | ||
|
|
a0b0ad53d2 | ||
|
|
5b3f09aaf7 | ||
|
|
f48468029e | ||
|
|
c837ba5482 | ||
|
|
2708ff7c1a | ||
|
|
1722e50402 | ||
|
|
244da05e70 | ||
|
|
0c26662602 | ||
|
|
2f65575fdf | ||
|
|
b1814c246a | ||
|
|
fd4af7c90c | ||
|
|
d337d4bc7b | ||
|
|
da96e75ad5 | ||
|
|
04e50d521a | ||
|
|
93aad41181 | ||
|
|
ab025b39f4 | ||
|
|
7b2bd8876d | ||
|
|
033f83465f | ||
|
|
e5547307b3 | ||
|
|
82f77b41ba | ||
|
|
8e37712175 | ||
|
|
3b06b553eb | ||
|
|
5de50009d2 | ||
|
|
56a8521893 | ||
|
|
33d541f067 | ||
|
|
957ffa203d | ||
|
|
3af13d64f3 | ||
|
|
f1e51ae1a3 | ||
|
|
6d2a1e0e9c | ||
|
|
ac2d71d7b0 | ||
|
|
002a8c505c | ||
|
|
49355da702 | ||
|
|
3b38dc51ba | ||
|
|
3a27b56cc1 | ||
|
|
fbb9c3cd64 | ||
|
|
07bdcb5491 | ||
|
|
01ac3be89f | ||
|
|
5f90b5b4c4 | ||
|
|
a616ba50c2 | ||
|
|
3ebaabc1ef | ||
|
|
1510549663 | ||
|
|
db0a757a49 | ||
|
|
20ab51e339 | ||
|
|
948b9c26d9 | ||
|
|
300a4d8067 | ||
|
|
a65afd7524 | ||
|
|
d8458e84f4 | ||
|
|
a6664fbc01 | ||
|
|
111f77c59c | ||
|
|
48218a3dad | ||
|
|
ec3eb2215b | ||
|
|
a6fcf53b10 | ||
|
|
be9bbcc2c7 | ||
|
|
a4a0b29250 | ||
|
|
01b34dd45a | ||
|
|
2d2e4deb82 | ||
|
|
3daa8f479c | ||
|
|
d2ab186e44 | ||
|
|
5b2a6b12af | ||
|
|
5357f504d8 | ||
|
|
df427d80a1 | ||
|
|
b1f5d5ad75 | ||
|
|
af71eed96e | ||
|
|
6293ddacc6 | ||
|
|
c1bb333555 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -5,10 +5,9 @@
|
|||||||
/v2rayN/.vs/
|
/v2rayN/.vs/
|
||||||
/v2rayN/v2rayN/bin/Debug/app.publish
|
/v2rayN/v2rayN/bin/Debug/app.publish
|
||||||
/v2rayN/v2rayN/bin/Debug
|
/v2rayN/v2rayN/bin/Debug
|
||||||
/v2rayN/v2rayN/obj/Debug
|
|
||||||
/v2rayN/.vs/v2rayN/DesignTimeBuild
|
|
||||||
/v2rayN/v2rayN/bin/Release
|
/v2rayN/v2rayN/bin/Release
|
||||||
/v2rayN/v2rayN/obj/Release
|
/v2rayN/v2rayN/obj/
|
||||||
|
/v2rayN/.vs/v2rayN/DesignTimeBuild
|
||||||
/v2rayN/packages
|
/v2rayN/packages
|
||||||
.vs/ProjectSettings.json
|
.vs/ProjectSettings.json
|
||||||
.vs/slnx.sqlite
|
.vs/slnx.sqlite
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# v2rayN
|
# v2rayN
|
||||||
|
|
||||||
### How to use
|
### How to use
|
||||||
- Download exe from release download
|
- If you are newbie please download v2rayN-Core.zip from releases
|
||||||
- Also need to download v2ray core in the same folder
|
- Otherwise please download v2rayN.zip (Also need to download v2ray core in the same folder)
|
||||||
- Run v2rayN.exe
|
- Run v2rayN.exe
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
- Microsoft [.NET Framework 4.6](https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers) or higher
|
- Microsoft [.NET Framework 4.6](https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers) or higher
|
||||||
- Project V core [https://github.com/v2ray/v2ray-core/releases](https://github.com/v2ray/v2ray-core/releases)
|
- Project V core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
||||||
|
|||||||
@@ -35,25 +35,32 @@ namespace v2rayN.Base
|
|||||||
|
|
||||||
private void StartListen()
|
private void StartListen()
|
||||||
{
|
{
|
||||||
listener = new TcpListener(IPAddress.Any, port);
|
try
|
||||||
listener.Start();
|
|
||||||
Utils.SaveLog("WebserverB running...");
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
{
|
||||||
if (!listener.Pending())
|
listener = new TcpListener(IPAddress.Any, port);
|
||||||
{
|
listener.Start();
|
||||||
Thread.Sleep(100);
|
Utils.SaveLog("WebserverB running...");
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
TcpClient socket = listener.AcceptTcpClient();
|
while (true)
|
||||||
Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread))
|
|
||||||
{
|
{
|
||||||
IsBackground = true
|
if (!listener.Pending())
|
||||||
};
|
{
|
||||||
thread.Start(socket);
|
Thread.Sleep(100);
|
||||||
Thread.Sleep(1);
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
TcpClient socket = listener.AcceptTcpClient();
|
||||||
|
Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread))
|
||||||
|
{
|
||||||
|
IsBackground = true
|
||||||
|
};
|
||||||
|
thread.Start(socket);
|
||||||
|
Thread.Sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Utils.SaveLog("WebserverB start fail.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void ProcessThread(object obj)
|
private void ProcessThread(object obj)
|
||||||
|
|||||||
@@ -18,37 +18,31 @@ namespace v2rayN.Base
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int count = this.Columns.Count;
|
this.SuspendLayout();
|
||||||
int MaxWidth = 0;
|
|
||||||
Graphics graphics = this.CreateGraphics();
|
Graphics graphics = this.CreateGraphics();
|
||||||
Font font = this.Font;
|
|
||||||
ListViewItemCollection items = this.Items;
|
|
||||||
|
|
||||||
string str;
|
|
||||||
int width;
|
|
||||||
|
|
||||||
|
// 原生 ColumnHeaderAutoResizeStyle.ColumnContent 将忽略列头宽度
|
||||||
this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
||||||
|
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < this.Columns.Count; i++)
|
||||||
{
|
{
|
||||||
str = this.Columns[i].Text;
|
ColumnHeader c = this.Columns[i];
|
||||||
MaxWidth = this.Columns[i].Width;
|
int cWidth = c.Width;
|
||||||
|
string MaxStr = "";
|
||||||
|
Font font = this.Items[0].SubItems[0].Font;
|
||||||
|
|
||||||
foreach (ListViewItem item in items)
|
foreach (ListViewItem item in this.Items)
|
||||||
{
|
{
|
||||||
str = item.SubItems[i].Text;
|
// 整行视作相同字形,不单独计算每个单元格
|
||||||
width = (int)graphics.MeasureString(str, font).Width;
|
font = item.SubItems[i].Font;
|
||||||
if (width > MaxWidth)
|
string str = item.SubItems[i].Text;
|
||||||
{
|
if (str.Length > MaxStr.Length) // 未考虑非等宽问题
|
||||||
MaxWidth = width;
|
MaxStr = str;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (i == 0)
|
int strWidth = (int)graphics.MeasureString(MaxStr, font).Width;
|
||||||
{
|
c.Width = System.Math.Max(cWidth, strWidth);
|
||||||
this.Columns[i].Width = MaxWidth;
|
|
||||||
}
|
|
||||||
this.Columns[i].Width = MaxWidth;
|
|
||||||
}
|
}
|
||||||
|
this.ResumeLayout();
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,17 +17,7 @@ namespace v2rayN.Base
|
|||||||
protected override WebRequest GetWebRequest(Uri address)
|
protected override WebRequest GetWebRequest(Uri address)
|
||||||
{
|
{
|
||||||
HttpWebRequest request;
|
HttpWebRequest request;
|
||||||
if (address.Scheme == "https")
|
request = (HttpWebRequest)base.GetWebRequest(address);
|
||||||
{
|
|
||||||
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => { return true; };
|
|
||||||
request = (HttpWebRequest)base.GetWebRequest(address);
|
|
||||||
//request.ProtocolVersion = HttpVersion.Version10;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
request = (HttpWebRequest)base.GetWebRequest(address);
|
|
||||||
}
|
|
||||||
|
|
||||||
request.Timeout = Timeout;
|
request.Timeout = Timeout;
|
||||||
request.ReadWriteTimeout = Timeout;
|
request.ReadWriteTimeout = Timeout;
|
||||||
//request.AllowAutoRedirect = false;
|
//request.AllowAutoRedirect = false;
|
||||||
|
|||||||
@@ -153,7 +153,4 @@
|
|||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
<value>从剪贴板导入URL</value>
|
<value>从剪贴板导入URL</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemScanScreen.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
40
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
40
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
@@ -37,7 +37,6 @@
|
|||||||
this.label24 = new System.Windows.Forms.Label();
|
this.label24 = new System.Windows.Forms.Label();
|
||||||
this.label23 = new System.Windows.Forms.Label();
|
this.label23 = new System.Windows.Forms.Label();
|
||||||
this.panTlsMore = new System.Windows.Forms.Panel();
|
this.panTlsMore = new System.Windows.Forms.Panel();
|
||||||
this.label22 = new System.Windows.Forms.Label();
|
|
||||||
this.label21 = new System.Windows.Forms.Label();
|
this.label21 = new System.Windows.Forms.Label();
|
||||||
this.cmbAllowInsecure = new System.Windows.Forms.ComboBox();
|
this.cmbAllowInsecure = new System.Windows.Forms.ComboBox();
|
||||||
this.label20 = new System.Windows.Forms.Label();
|
this.label20 = new System.Windows.Forms.Label();
|
||||||
@@ -88,14 +87,15 @@
|
|||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Controls.Add(this.btnGUID);
|
this.groupBox1.Controls.Add(this.btnGUID);
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
this.groupBox1.Controls.Add(this.label13);
|
||||||
this.groupBox1.Controls.Add(this.groupBox2);
|
this.groupBox1.Controls.Add(this.groupBox2);
|
||||||
@@ -115,7 +115,6 @@
|
|||||||
this.groupBox1.Controls.Add(this.label2);
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
this.groupBox1.Controls.Add(this.txtAddress);
|
this.groupBox1.Controls.Add(this.txtAddress);
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -133,6 +132,7 @@
|
|||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
this.groupBox2.Controls.Add(this.label24);
|
this.groupBox2.Controls.Add(this.label24);
|
||||||
this.groupBox2.Controls.Add(this.label23);
|
this.groupBox2.Controls.Add(this.label23);
|
||||||
this.groupBox2.Controls.Add(this.panTlsMore);
|
this.groupBox2.Controls.Add(this.panTlsMore);
|
||||||
@@ -150,7 +150,6 @@
|
|||||||
this.groupBox2.Controls.Add(this.label11);
|
this.groupBox2.Controls.Add(this.label11);
|
||||||
this.groupBox2.Controls.Add(this.label10);
|
this.groupBox2.Controls.Add(this.label10);
|
||||||
this.groupBox2.Controls.Add(this.cmbHeaderType);
|
this.groupBox2.Controls.Add(this.cmbHeaderType);
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -166,17 +165,11 @@
|
|||||||
//
|
//
|
||||||
// panTlsMore
|
// panTlsMore
|
||||||
//
|
//
|
||||||
this.panTlsMore.Controls.Add(this.label22);
|
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
||||||
this.panTlsMore.Controls.Add(this.label21);
|
this.panTlsMore.Controls.Add(this.label21);
|
||||||
this.panTlsMore.Controls.Add(this.cmbAllowInsecure);
|
this.panTlsMore.Controls.Add(this.cmbAllowInsecure);
|
||||||
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
|
||||||
this.panTlsMore.Name = "panTlsMore";
|
this.panTlsMore.Name = "panTlsMore";
|
||||||
//
|
//
|
||||||
// label22
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label22, "label22");
|
|
||||||
this.label22.Name = "label22";
|
|
||||||
//
|
|
||||||
// label21
|
// label21
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label21, "label21");
|
resources.ApplyResources(this.label21, "label21");
|
||||||
@@ -184,13 +177,13 @@
|
|||||||
//
|
//
|
||||||
// cmbAllowInsecure
|
// cmbAllowInsecure
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure");
|
||||||
this.cmbAllowInsecure.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbAllowInsecure.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbAllowInsecure.FormattingEnabled = true;
|
this.cmbAllowInsecure.FormattingEnabled = true;
|
||||||
this.cmbAllowInsecure.Items.AddRange(new object[] {
|
this.cmbAllowInsecure.Items.AddRange(new object[] {
|
||||||
resources.GetString("cmbAllowInsecure.Items"),
|
resources.GetString("cmbAllowInsecure.Items"),
|
||||||
resources.GetString("cmbAllowInsecure.Items1"),
|
resources.GetString("cmbAllowInsecure.Items1"),
|
||||||
resources.GetString("cmbAllowInsecure.Items2")});
|
resources.GetString("cmbAllowInsecure.Items2")});
|
||||||
resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure");
|
|
||||||
this.cmbAllowInsecure.Name = "cmbAllowInsecure";
|
this.cmbAllowInsecure.Name = "cmbAllowInsecure";
|
||||||
//
|
//
|
||||||
// label20
|
// label20
|
||||||
@@ -235,12 +228,12 @@
|
|||||||
//
|
//
|
||||||
// cmbStreamSecurity
|
// cmbStreamSecurity
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbStreamSecurity, "cmbStreamSecurity");
|
||||||
this.cmbStreamSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbStreamSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbStreamSecurity.FormattingEnabled = true;
|
this.cmbStreamSecurity.FormattingEnabled = true;
|
||||||
this.cmbStreamSecurity.Items.AddRange(new object[] {
|
this.cmbStreamSecurity.Items.AddRange(new object[] {
|
||||||
resources.GetString("cmbStreamSecurity.Items"),
|
resources.GetString("cmbStreamSecurity.Items"),
|
||||||
resources.GetString("cmbStreamSecurity.Items1")});
|
resources.GetString("cmbStreamSecurity.Items1")});
|
||||||
resources.ApplyResources(this.cmbStreamSecurity, "cmbStreamSecurity");
|
|
||||||
this.cmbStreamSecurity.Name = "cmbStreamSecurity";
|
this.cmbStreamSecurity.Name = "cmbStreamSecurity";
|
||||||
this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged);
|
this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
@@ -266,6 +259,7 @@
|
|||||||
//
|
//
|
||||||
// cmbHeaderType
|
// cmbHeaderType
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
||||||
this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbHeaderType.FormattingEnabled = true;
|
this.cmbHeaderType.FormattingEnabled = true;
|
||||||
this.cmbHeaderType.Items.AddRange(new object[] {
|
this.cmbHeaderType.Items.AddRange(new object[] {
|
||||||
@@ -276,7 +270,6 @@
|
|||||||
resources.GetString("cmbHeaderType.Items4"),
|
resources.GetString("cmbHeaderType.Items4"),
|
||||||
resources.GetString("cmbHeaderType.Items5"),
|
resources.GetString("cmbHeaderType.Items5"),
|
||||||
resources.GetString("cmbHeaderType.Items6")});
|
resources.GetString("cmbHeaderType.Items6")});
|
||||||
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
|
||||||
this.cmbHeaderType.Name = "cmbHeaderType";
|
this.cmbHeaderType.Name = "cmbHeaderType";
|
||||||
//
|
//
|
||||||
// label9
|
// label9
|
||||||
@@ -291,6 +284,7 @@
|
|||||||
//
|
//
|
||||||
// cmbNetwork
|
// cmbNetwork
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
||||||
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbNetwork.FormattingEnabled = true;
|
this.cmbNetwork.FormattingEnabled = true;
|
||||||
this.cmbNetwork.Items.AddRange(new object[] {
|
this.cmbNetwork.Items.AddRange(new object[] {
|
||||||
@@ -299,7 +293,6 @@
|
|||||||
resources.GetString("cmbNetwork.Items2"),
|
resources.GetString("cmbNetwork.Items2"),
|
||||||
resources.GetString("cmbNetwork.Items3"),
|
resources.GetString("cmbNetwork.Items3"),
|
||||||
resources.GetString("cmbNetwork.Items4")});
|
resources.GetString("cmbNetwork.Items4")});
|
||||||
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
|
||||||
this.cmbNetwork.Name = "cmbNetwork";
|
this.cmbNetwork.Name = "cmbNetwork";
|
||||||
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
@@ -310,6 +303,7 @@
|
|||||||
//
|
//
|
||||||
// cmbSecurity
|
// cmbSecurity
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbSecurity.FormattingEnabled = true;
|
this.cmbSecurity.FormattingEnabled = true;
|
||||||
this.cmbSecurity.Items.AddRange(new object[] {
|
this.cmbSecurity.Items.AddRange(new object[] {
|
||||||
@@ -317,7 +311,6 @@
|
|||||||
resources.GetString("cmbSecurity.Items1"),
|
resources.GetString("cmbSecurity.Items1"),
|
||||||
resources.GetString("cmbSecurity.Items2"),
|
resources.GetString("cmbSecurity.Items2"),
|
||||||
resources.GetString("cmbSecurity.Items3")});
|
resources.GetString("cmbSecurity.Items3")});
|
||||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
|
||||||
this.cmbSecurity.Name = "cmbSecurity";
|
this.cmbSecurity.Name = "cmbSecurity";
|
||||||
//
|
//
|
||||||
// txtRemarks
|
// txtRemarks
|
||||||
@@ -377,9 +370,9 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
@@ -396,42 +389,42 @@
|
|||||||
//
|
//
|
||||||
// menuServer
|
// menuServer
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.menuServer, "menuServer");
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.MenuItem1});
|
this.MenuItem1});
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Name = "menuServer";
|
this.menuServer.Name = "menuServer";
|
||||||
//
|
//
|
||||||
// MenuItem1
|
// MenuItem1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
||||||
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.MenuItemImportClient,
|
this.MenuItemImportClient,
|
||||||
this.MenuItemImportServer,
|
this.MenuItemImportServer,
|
||||||
this.toolStripSeparator1,
|
this.toolStripSeparator1,
|
||||||
this.MenuItemImportClipboard});
|
this.MenuItemImportClipboard});
|
||||||
this.MenuItem1.Name = "MenuItem1";
|
this.MenuItem1.Name = "MenuItem1";
|
||||||
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
|
||||||
//
|
//
|
||||||
// MenuItemImportClient
|
// MenuItemImportClient
|
||||||
//
|
//
|
||||||
this.MenuItemImportClient.Name = "MenuItemImportClient";
|
|
||||||
resources.ApplyResources(this.MenuItemImportClient, "MenuItemImportClient");
|
resources.ApplyResources(this.MenuItemImportClient, "MenuItemImportClient");
|
||||||
|
this.MenuItemImportClient.Name = "MenuItemImportClient";
|
||||||
this.MenuItemImportClient.Click += new System.EventHandler(this.MenuItemImportClient_Click);
|
this.MenuItemImportClient.Click += new System.EventHandler(this.MenuItemImportClient_Click);
|
||||||
//
|
//
|
||||||
// MenuItemImportServer
|
// MenuItemImportServer
|
||||||
//
|
//
|
||||||
this.MenuItemImportServer.Name = "MenuItemImportServer";
|
|
||||||
resources.ApplyResources(this.MenuItemImportServer, "MenuItemImportServer");
|
resources.ApplyResources(this.MenuItemImportServer, "MenuItemImportServer");
|
||||||
|
this.MenuItemImportServer.Name = "MenuItemImportServer";
|
||||||
this.MenuItemImportServer.Click += new System.EventHandler(this.MenuItemImportServer_Click);
|
this.MenuItemImportServer.Click += new System.EventHandler(this.MenuItemImportServer_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator1
|
// toolStripSeparator1
|
||||||
//
|
//
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
//
|
//
|
||||||
// MenuItemImportClipboard
|
// MenuItemImportClipboard
|
||||||
//
|
//
|
||||||
this.MenuItemImportClipboard.Name = "MenuItemImportClipboard";
|
|
||||||
resources.ApplyResources(this.MenuItemImportClipboard, "MenuItemImportClipboard");
|
resources.ApplyResources(this.MenuItemImportClipboard, "MenuItemImportClipboard");
|
||||||
|
this.MenuItemImportClipboard.Name = "MenuItemImportClipboard";
|
||||||
this.MenuItemImportClipboard.Click += new System.EventHandler(this.MenuItemImportClipboard_Click);
|
this.MenuItemImportClipboard.Click += new System.EventHandler(this.MenuItemImportClipboard_Click);
|
||||||
//
|
//
|
||||||
// AddServerForm
|
// AddServerForm
|
||||||
@@ -508,7 +501,6 @@
|
|||||||
private System.Windows.Forms.Label label20;
|
private System.Windows.Forms.Label label20;
|
||||||
private System.Windows.Forms.Label label21;
|
private System.Windows.Forms.Label label21;
|
||||||
private System.Windows.Forms.ComboBox cmbAllowInsecure;
|
private System.Windows.Forms.ComboBox cmbAllowInsecure;
|
||||||
private System.Windows.Forms.Label label22;
|
|
||||||
private System.Windows.Forms.Panel panTlsMore;
|
private System.Windows.Forms.Panel panTlsMore;
|
||||||
private System.Windows.Forms.Label label24;
|
private System.Windows.Forms.Label label24;
|
||||||
private System.Windows.Forms.Label label23;
|
private System.Windows.Forms.Label label23;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -117,64 +117,55 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑或添加[VMess]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnGUID.Text" xml:space="preserve">
|
|
||||||
<value>生成(&G)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 171</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 143</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name="btnGUID.Text" xml:space="preserve">
|
||||||
<value>不清楚则保持默认值</value>
|
<value>生成(&G)</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="label10.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Text" xml:space="preserve">
|
|
||||||
<value>伪装域名(host)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Text" xml:space="preserve">
|
|
||||||
<value>伪装类型(type)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>197, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Text" xml:space="preserve">
|
|
||||||
<value>*tcp或kcp或QUIC伪装类型,默认none</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>*手填,方便识别管理</value>
|
<value>*手填,方便识别管理</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="groupBox2.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="label24.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label24.Text" xml:space="preserve">
|
||||||
|
<value>3)QUIC 加密密钥</value>
|
||||||
|
</data>
|
||||||
|
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label23.Text" xml:space="preserve">
|
||||||
|
<value>4)QUIC 加密方式</value>
|
||||||
|
</data>
|
||||||
|
<data name="label21.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>203, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label21.Text" xml:space="preserve">
|
||||||
|
<value>跳过证书验证(allowInsecure)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>223, 7</value>
|
||||||
|
</data>
|
||||||
|
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>149, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label20.Text" xml:space="preserve">
|
||||||
|
<value>3)h2 host中间逗号(,)隔开</value>
|
||||||
|
</data>
|
||||||
|
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label19.Text" xml:space="preserve">
|
||||||
|
<value>路径(path)</value>
|
||||||
|
</data>
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>161, 12</value>
|
<value>161, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -187,71 +178,35 @@
|
|||||||
<data name="label15.Text" xml:space="preserve">
|
<data name="label15.Text" xml:space="preserve">
|
||||||
<value>底层传输安全</value>
|
<value>底层传输安全</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>197, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label19.Text" xml:space="preserve">
|
<data name="label12.Text" xml:space="preserve">
|
||||||
<value>路径(path)</value>
|
<value>*tcp或kcp或QUIC伪装类型,默认none</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>124, 58</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>端口(port)</value>
|
<value>334, 51</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>149, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label20.Text" xml:space="preserve">
|
<data name="label11.Text" xml:space="preserve">
|
||||||
<value>3)h2 host中间逗号(,)隔开</value>
|
<value>伪装类型(type)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>53, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.Text" xml:space="preserve">
|
<data name="label10.Text" xml:space="preserve">
|
||||||
<value>默认true</value>
|
<value>伪装域名(host)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>143, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Text" xml:space="preserve">
|
<data name="label9.Text" xml:space="preserve">
|
||||||
<value>4)QUIC 加密方式</value>
|
<value>*默认tcp,选错会无法连接</value>
|
||||||
</data>
|
|
||||||
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label24.Text" xml:space="preserve">
|
|
||||||
<value>3)QUIC 加密密钥</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>用户ID(id)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>额外ID(alterId)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>加密方式(security)</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="label7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>107, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Text" xml:space="preserve">
|
|
||||||
<value>传输协议(network)</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>113, 12</value>
|
||||||
@@ -259,11 +214,62 @@
|
|||||||
<data name="label8.Text" xml:space="preserve">
|
<data name="label8.Text" xml:space="preserve">
|
||||||
<value>*随便选,建议(auto)</value>
|
<value>*随便选,建议(auto)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>143, 12</value>
|
<value>127, 171</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label9.Text" xml:space="preserve">
|
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>*默认tcp,选错会无法连接</value>
|
<value>211, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>107, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Text" xml:space="preserve">
|
||||||
|
<value>传输协议(network)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 143</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>211, 20</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="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>113, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>加密方式(security)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>额外ID(alterId)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>用户ID(id)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>端口(port)</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>确定(&O)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>92, 21</value>
|
<value>92, 21</value>
|
||||||
@@ -277,12 +283,6 @@
|
|||||||
<data name="MenuItemImportClient.Text" xml:space="preserve">
|
<data name="MenuItemImportClient.Text" xml:space="preserve">
|
||||||
<value>导入客户端配置</value>
|
<value>导入客户端配置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>171, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItemImportClipboard.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入URL</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItemImportServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItemImportServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>171, 22</value>
|
<value>171, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -292,10 +292,13 @@
|
|||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>168, 6</value>
|
<value>168, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="MenuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>124, 58</value>
|
<value>171, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItemImportClipboard.Text" xml:space="preserve">
|
||||||
<value>334, 51</value>
|
<value>从剪贴板导入URL</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑或添加[VMess]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
76
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
76
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -30,7 +30,7 @@
|
|||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
this.scMain = new System.Windows.Forms.SplitContainer();
|
||||||
this.lvServers = new v2rayN.Base.ListViewFlickerFree();
|
this.lvServers = new v2rayN.Base.ListViewFlickerFree();
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -55,6 +55,7 @@
|
|||||||
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbTestMe = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -76,6 +77,7 @@
|
|||||||
this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuCopyPACUrl = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuCopyPACUrl = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuUpdateSubscriptions = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuExit = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExit = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.bgwScan = new System.ComponentModel.BackgroundWorker();
|
this.bgwScan = new System.ComponentModel.BackgroundWorker();
|
||||||
@@ -100,6 +102,7 @@
|
|||||||
this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbOptionSetting = new System.Windows.Forms.ToolStripButton();
|
this.tsbOptionSetting = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
@@ -121,10 +124,10 @@
|
|||||||
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
|
||||||
this.splitContainer1.Panel1.SuspendLayout();
|
this.scMain.Panel1.SuspendLayout();
|
||||||
this.splitContainer1.Panel2.SuspendLayout();
|
this.scMain.Panel2.SuspendLayout();
|
||||||
this.splitContainer1.SuspendLayout();
|
this.scMain.SuspendLayout();
|
||||||
this.cmsLv.SuspendLayout();
|
this.cmsLv.SuspendLayout();
|
||||||
this.cmsMain.SuspendLayout();
|
this.cmsMain.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
@@ -133,20 +136,20 @@
|
|||||||
this.tsMain.SuspendLayout();
|
this.tsMain.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// splitContainer1
|
// scMain
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.splitContainer1, "splitContainer1");
|
resources.ApplyResources(this.scMain, "scMain");
|
||||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
this.scMain.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||||
this.splitContainer1.Name = "splitContainer1";
|
this.scMain.Name = "scMain";
|
||||||
//
|
//
|
||||||
// splitContainer1.Panel1
|
// scMain.Panel1
|
||||||
//
|
//
|
||||||
this.splitContainer1.Panel1.Controls.Add(this.lvServers);
|
this.scMain.Panel1.Controls.Add(this.lvServers);
|
||||||
//
|
//
|
||||||
// splitContainer1.Panel2
|
// scMain.Panel2
|
||||||
//
|
//
|
||||||
this.splitContainer1.Panel2.Controls.Add(this.qrCodeControl);
|
this.scMain.Panel2.Controls.Add(this.qrCodeControl);
|
||||||
this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved);
|
this.scMain.TabStop = false;
|
||||||
//
|
//
|
||||||
// lvServers
|
// lvServers
|
||||||
//
|
//
|
||||||
@@ -162,6 +165,7 @@
|
|||||||
this.lvServers.Name = "lvServers";
|
this.lvServers.Name = "lvServers";
|
||||||
this.lvServers.UseCompatibleStateImageBehavior = false;
|
this.lvServers.UseCompatibleStateImageBehavior = false;
|
||||||
this.lvServers.View = System.Windows.Forms.View.Details;
|
this.lvServers.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lvServers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvServers_ColumnClick);
|
||||||
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
|
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
|
||||||
this.lvServers.Click += new System.EventHandler(this.lvServers_Click);
|
this.lvServers.Click += new System.EventHandler(this.lvServers_Click);
|
||||||
this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);
|
this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);
|
||||||
@@ -193,6 +197,7 @@
|
|||||||
this.menuTcpingServer,
|
this.menuTcpingServer,
|
||||||
this.menuRealPingServer,
|
this.menuRealPingServer,
|
||||||
this.menuSpeedServer,
|
this.menuSpeedServer,
|
||||||
|
this.tsbTestMe,
|
||||||
this.toolStripSeparator6,
|
this.toolStripSeparator6,
|
||||||
this.menuExport2ClientConfig,
|
this.menuExport2ClientConfig,
|
||||||
this.menuExport2ServerConfig,
|
this.menuExport2ServerConfig,
|
||||||
@@ -331,6 +336,12 @@
|
|||||||
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
||||||
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
||||||
//
|
//
|
||||||
|
// tsbTestMe
|
||||||
|
//
|
||||||
|
this.tsbTestMe.Name = "tsbTestMe";
|
||||||
|
resources.ApplyResources(this.tsbTestMe, "tsbTestMe");
|
||||||
|
this.tsbTestMe.Click += new System.EventHandler(this.tsbTestMe_Click);
|
||||||
|
//
|
||||||
// toolStripSeparator6
|
// toolStripSeparator6
|
||||||
//
|
//
|
||||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||||
@@ -388,6 +399,7 @@
|
|||||||
this.menuAddServers2,
|
this.menuAddServers2,
|
||||||
this.menuScanScreen2,
|
this.menuScanScreen2,
|
||||||
this.menuCopyPACUrl,
|
this.menuCopyPACUrl,
|
||||||
|
this.menuUpdateSubscriptions,
|
||||||
this.toolStripSeparator2,
|
this.toolStripSeparator2,
|
||||||
this.menuExit});
|
this.menuExit});
|
||||||
this.cmsMain.Name = "contextMenuStrip1";
|
this.cmsMain.Name = "contextMenuStrip1";
|
||||||
@@ -473,6 +485,12 @@
|
|||||||
resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl");
|
resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl");
|
||||||
this.menuCopyPACUrl.Click += new System.EventHandler(this.menuCopyPACUrl_Click);
|
this.menuCopyPACUrl.Click += new System.EventHandler(this.menuCopyPACUrl_Click);
|
||||||
//
|
//
|
||||||
|
// menuUpdateSubscriptions
|
||||||
|
//
|
||||||
|
this.menuUpdateSubscriptions.Name = "menuUpdateSubscriptions";
|
||||||
|
resources.ApplyResources(this.menuUpdateSubscriptions, "menuUpdateSubscriptions");
|
||||||
|
this.menuUpdateSubscriptions.Click += new System.EventHandler(this.menuUpdateSubscriptions_Click);
|
||||||
|
//
|
||||||
// toolStripSeparator2
|
// toolStripSeparator2
|
||||||
//
|
//
|
||||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
@@ -492,7 +510,7 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
this.groupBox1.Controls.Add(this.splitContainer1);
|
this.groupBox1.Controls.Add(this.scMain);
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
@@ -603,6 +621,7 @@
|
|||||||
this.tsbServer,
|
this.tsbServer,
|
||||||
this.toolStripSeparator4,
|
this.toolStripSeparator4,
|
||||||
this.tsbSub,
|
this.tsbSub,
|
||||||
|
this.tsbQRCodeSwitch,
|
||||||
this.toolStripSeparator8,
|
this.toolStripSeparator8,
|
||||||
this.tsbOptionSetting,
|
this.tsbOptionSetting,
|
||||||
this.toolStripSeparator5,
|
this.toolStripSeparator5,
|
||||||
@@ -616,6 +635,7 @@
|
|||||||
this.tsbClose});
|
this.tsbClose});
|
||||||
resources.ApplyResources(this.tsMain, "tsMain");
|
resources.ApplyResources(this.tsMain, "tsMain");
|
||||||
this.tsMain.Name = "tsMain";
|
this.tsMain.Name = "tsMain";
|
||||||
|
this.tsMain.TabStop = true;
|
||||||
//
|
//
|
||||||
// toolStripSeparator4
|
// toolStripSeparator4
|
||||||
//
|
//
|
||||||
@@ -643,6 +663,15 @@
|
|||||||
resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
|
resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
|
||||||
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
|
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
|
||||||
//
|
//
|
||||||
|
// tsbQRCodeSwitch
|
||||||
|
//
|
||||||
|
this.tsbQRCodeSwitch.CheckOnClick = true;
|
||||||
|
this.tsbQRCodeSwitch.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.tsbQRCodeSwitch.Image = global::v2rayN.Properties.Resources.share;
|
||||||
|
resources.ApplyResources(this.tsbQRCodeSwitch, "tsbQRCodeSwitch");
|
||||||
|
this.tsbQRCodeSwitch.Name = "tsbQRCodeSwitch";
|
||||||
|
this.tsbQRCodeSwitch.CheckedChanged += new System.EventHandler(this.tsbQRCodeSwitch_CheckedChanged);
|
||||||
|
//
|
||||||
// toolStripSeparator8
|
// toolStripSeparator8
|
||||||
//
|
//
|
||||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||||
@@ -793,10 +822,10 @@
|
|||||||
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
||||||
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
||||||
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
||||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
this.scMain.Panel1.ResumeLayout(false);
|
||||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
this.scMain.Panel2.ResumeLayout(false);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.scMain)).EndInit();
|
||||||
this.splitContainer1.ResumeLayout(false);
|
this.scMain.ResumeLayout(false);
|
||||||
this.cmsLv.ResumeLayout(false);
|
this.cmsLv.ResumeLayout(false);
|
||||||
this.cmsMain.ResumeLayout(false);
|
this.cmsMain.ResumeLayout(false);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
@@ -811,7 +840,7 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
private System.Windows.Forms.GroupBox groupBox2;
|
||||||
@@ -835,7 +864,6 @@
|
|||||||
private System.Windows.Forms.ToolStrip tsMain;
|
private System.Windows.Forms.ToolStrip tsMain;
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbServer;
|
private System.Windows.Forms.ToolStripDropDownButton tsbServer;
|
||||||
private System.Windows.Forms.ToolStripButton tsbOptionSetting;
|
private System.Windows.Forms.ToolStripButton tsbOptionSetting;
|
||||||
private System.Windows.Forms.ToolStripButton tsbReload;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbClose;
|
private System.Windows.Forms.ToolStripButton tsbClose;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||||
@@ -854,7 +882,7 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer;
|
private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer;
|
private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer;
|
||||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
private System.Windows.Forms.SplitContainer scMain;
|
||||||
private QRCodeControl qrCodeControl;
|
private QRCodeControl qrCodeControl;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate;
|
private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate;
|
||||||
@@ -901,9 +929,13 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuNotEnabledHttp;
|
private System.Windows.Forms.ToolStripMenuItem menuNotEnabledHttp;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubscriptions;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepNothing;
|
private System.Windows.Forms.ToolStripMenuItem menuKeepNothing;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepPACNothing;
|
private System.Windows.Forms.ToolStripMenuItem menuKeepPACNothing;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbTestMe;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbReload;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbQRCodeSwitch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ using v2rayN.Mode;
|
|||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Tool;
|
using v2rayN.Tool;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -71,7 +73,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
InitServersView();
|
InitServersView();
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
lvServers.AutoResizeColumns();
|
RestoreUI();
|
||||||
|
|
||||||
LoadV2ray();
|
LoadV2ray();
|
||||||
|
|
||||||
@@ -83,6 +85,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (e.CloseReason == CloseReason.UserClosing)
|
if (e.CloseReason == CloseReason.UserClosing)
|
||||||
{
|
{
|
||||||
|
StorageUI();
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
HideForm();
|
HideForm();
|
||||||
return;
|
return;
|
||||||
@@ -97,14 +100,10 @@ namespace v2rayN.Forms
|
|||||||
//}
|
//}
|
||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
// //this.splitContainer1.SplitterDistance = config.uiItem.mainQRCodeWidth;
|
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e)
|
|
||||||
{
|
|
||||||
//config.uiItem.mainQRCodeWidth = splitContainer1.SplitterDistance;
|
|
||||||
}
|
|
||||||
|
|
||||||
//private const int WM_QUERYENDSESSION = 0x0011;
|
//private const int WM_QUERYENDSESSION = 0x0011;
|
||||||
//protected override void WndProc(ref Message m)
|
//protected override void WndProc(ref Message m)
|
||||||
@@ -124,6 +123,34 @@ namespace v2rayN.Forms
|
|||||||
// break;
|
// break;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
private void RestoreUI()
|
||||||
|
{
|
||||||
|
scMain.Panel2Collapsed = true;
|
||||||
|
|
||||||
|
if (!config.uiItem.mainSize.IsEmpty)
|
||||||
|
{
|
||||||
|
this.Width = config.uiItem.mainSize.Width;
|
||||||
|
this.Height = config.uiItem.mainSize.Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int k = 0; k < lvServers.Columns.Count; k++)
|
||||||
|
{
|
||||||
|
var width = ConfigHandler.GetformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width);
|
||||||
|
lvServers.Columns[k].Width = width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StorageUI()
|
||||||
|
{
|
||||||
|
config.uiItem.mainSize = new Size(this.Width, this.Height);
|
||||||
|
|
||||||
|
for (int k = 0; k < lvServers.Columns.Count; k++)
|
||||||
|
{
|
||||||
|
ConfigHandler.AddformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 显示服务器 listview 和 menu
|
#region 显示服务器 listview 和 menu
|
||||||
@@ -134,6 +161,7 @@ namespace v2rayN.Forms
|
|||||||
private void RefreshServers()
|
private void RefreshServers()
|
||||||
{
|
{
|
||||||
RefreshServersView();
|
RefreshServersView();
|
||||||
|
//lvServers.AutoResizeColumns();
|
||||||
RefreshServersMenu();
|
RefreshServersMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,6 +170,7 @@ namespace v2rayN.Forms
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitServersView()
|
private void InitServersView()
|
||||||
{
|
{
|
||||||
|
lvServers.BeginUpdate();
|
||||||
lvServers.Items.Clear();
|
lvServers.Items.Clear();
|
||||||
|
|
||||||
lvServers.GridLines = true;
|
lvServers.GridLines = true;
|
||||||
@@ -149,25 +178,26 @@ namespace v2rayN.Forms
|
|||||||
lvServers.View = View.Details;
|
lvServers.View = View.Details;
|
||||||
lvServers.Scrollable = true;
|
lvServers.Scrollable = true;
|
||||||
lvServers.MultiSelect = true;
|
lvServers.MultiSelect = true;
|
||||||
lvServers.HeaderStyle = ColumnHeaderStyle.Nonclickable;
|
lvServers.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||||
|
|
||||||
lvServers.Columns.Add("", 30, HorizontalAlignment.Center);
|
lvServers.Columns.Add("", 30);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvPort"), 50, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvPort"), 50);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Right);
|
||||||
|
|
||||||
if (statistics != null && statistics.Enable)
|
if (statistics != null && statistics.Enable)
|
||||||
{
|
{
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70);
|
||||||
}
|
}
|
||||||
|
lvServers.EndUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -175,6 +205,7 @@ namespace v2rayN.Forms
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void RefreshServersView()
|
private void RefreshServersView()
|
||||||
{
|
{
|
||||||
|
lvServers.BeginUpdate();
|
||||||
lvServers.Items.Clear();
|
lvServers.Items.Clear();
|
||||||
|
|
||||||
for (int k = 0; k < config.vmess.Count; k++)
|
for (int k = 0; k < config.vmess.Count; k++)
|
||||||
@@ -191,8 +222,12 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
VmessItem item = config.vmess[k];
|
VmessItem item = config.vmess[k];
|
||||||
|
|
||||||
ListViewItem lvItem = null;
|
void _addSubItem(ListViewItem i, string name, string text)
|
||||||
if (statistics != null && statistics.Enable)
|
{
|
||||||
|
i.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = name, Text = text });
|
||||||
|
}
|
||||||
|
bool stats = statistics != null && statistics.Enable;
|
||||||
|
if (stats)
|
||||||
{
|
{
|
||||||
ServerStatItem sItem = statistics.Statistic.Find(item_ => item_.itemId == item.getItemId());
|
ServerStatItem sItem = statistics.Statistic.Find(item_ => item_.itemId == item.getItemId());
|
||||||
if (sItem != null)
|
if (sItem != null)
|
||||||
@@ -202,46 +237,38 @@ namespace v2rayN.Forms
|
|||||||
todayUp = Utils.HumanFy(sItem.todayUp);
|
todayUp = Utils.HumanFy(sItem.todayUp);
|
||||||
todayDown = Utils.HumanFy(sItem.todayDown);
|
todayDown = Utils.HumanFy(sItem.todayDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
lvItem = new ListViewItem(new string[]
|
|
||||||
{
|
|
||||||
def,
|
|
||||||
((EConfigType)item.configType).ToString(),
|
|
||||||
item.remarks,
|
|
||||||
item.address,
|
|
||||||
item.port.ToString(),
|
|
||||||
//item.id,
|
|
||||||
//item.alterId.ToString(),
|
|
||||||
item.security,
|
|
||||||
item.network,
|
|
||||||
item.getSubRemarks(config),
|
|
||||||
item.testResult,
|
|
||||||
todayDown,
|
|
||||||
todayUp,
|
|
||||||
totalDown,
|
|
||||||
totalUp
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else
|
ListViewItem lvItem = new ListViewItem(def);
|
||||||
|
_addSubItem(lvItem, EServerColName.configType.ToString(), ((EConfigType)item.configType).ToString());
|
||||||
|
_addSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks);
|
||||||
|
_addSubItem(lvItem, EServerColName.address.ToString(), item.address);
|
||||||
|
_addSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString());
|
||||||
|
_addSubItem(lvItem, EServerColName.security.ToString(), item.security);
|
||||||
|
_addSubItem(lvItem, EServerColName.network.ToString(), item.network);
|
||||||
|
_addSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config));
|
||||||
|
_addSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult);
|
||||||
|
if (stats)
|
||||||
{
|
{
|
||||||
lvItem = new ListViewItem(new string[]
|
_addSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown);
|
||||||
{
|
_addSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp);
|
||||||
def,
|
_addSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown);
|
||||||
((EConfigType)item.configType).ToString(),
|
_addSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp);
|
||||||
item.remarks,
|
}
|
||||||
item.address,
|
|
||||||
item.port.ToString(),
|
if (k % 2 == 1) // 隔行着色
|
||||||
//item.id,
|
{
|
||||||
//item.alterId.ToString(),
|
lvItem.BackColor = Color.WhiteSmoke;
|
||||||
item.security,
|
}
|
||||||
item.network,
|
if (config.index.Equals(k))
|
||||||
item.getSubRemarks(config),
|
{
|
||||||
item.testResult
|
//lvItem.Checked = true;
|
||||||
});
|
lvItem.ForeColor = Color.DodgerBlue;
|
||||||
|
lvItem.Font = new Font(lvItem.Font, FontStyle.Bold);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lvItem != null) lvServers.Items.Add(lvItem);
|
if (lvItem != null) lvServers.Items.Add(lvItem);
|
||||||
}
|
}
|
||||||
|
lvServers.EndUpdate();
|
||||||
|
|
||||||
//if (lvServers.Items.Count > 0)
|
//if (lvServers.Items.Count > 0)
|
||||||
//{
|
//{
|
||||||
@@ -322,10 +349,12 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
toolSslSocksPort.Text = $"{Global.Loopback}:{config.inbound[0].localPort}";
|
toolSslSocksPort.Text = $"{Global.Loopback}:{config.inbound[0].localPort}";
|
||||||
|
|
||||||
if (config.listenerType != 0)
|
if (config.listenerType != (int)ListenerType.noHttpProxy)
|
||||||
{
|
{
|
||||||
toolSslHttpPort.Text = $"{Global.Loopback}:{Global.httpPort}";
|
toolSslHttpPort.Text = $"{Global.Loopback}:{Global.httpPort}";
|
||||||
if (config.listenerType % 2 == 0)
|
if (config.listenerType == ListenerType.GlobalPac ||
|
||||||
|
config.listenerType == ListenerType.PacOpenAndClear ||
|
||||||
|
config.listenerType == ListenerType.PacOpenOnly)
|
||||||
{
|
{
|
||||||
if (PACServerHandle.IsRunning)
|
if (PACServerHandle.IsRunning)
|
||||||
{
|
{
|
||||||
@@ -348,6 +377,35 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Column < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var tag = lvServers.Columns[e.Column].Tag?.ToString();
|
||||||
|
bool asc = Utils.IsNullOrEmpty(tag) ? true : !Convert.ToBoolean(tag);
|
||||||
|
if (ConfigHandler.SortServers(ref config, (EServerColName)e.Column, asc) != 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lvServers.Columns[e.Column].Tag = Convert.ToString(asc);
|
||||||
|
RefreshServers();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Column < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region v2ray 操作
|
#region v2ray 操作
|
||||||
@@ -566,7 +624,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuRemoveDuplicateServer_Click(object sender, EventArgs e)
|
private void menuRemoveDuplicateServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Utils.DedupServerList(config.vmess, out List<VmessItem> servers, config.keepOlderDedupl);
|
Utils.DedupServerList(config.vmess, out List<VmessItem> servers, config.keepOlderDedupl);
|
||||||
int oldCount = config.vmess.Count;
|
int oldCount = config.vmess.Count;
|
||||||
int newCount = servers.Count;
|
int newCount = servers.Count;
|
||||||
if (servers != null)
|
if (servers != null)
|
||||||
@@ -640,11 +698,22 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
private void Speedtest(string actionType)
|
private void Speedtest(string actionType)
|
||||||
{
|
{
|
||||||
GetLvSelectedIndex();
|
if (GetLvSelectedIndex() < 0) return;
|
||||||
ClearTestResult();
|
ClearTestResult();
|
||||||
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
|
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbTestMe_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string result = httpProxyTest() + "ms";
|
||||||
|
AppendText(false, string.Format(UIRes.I18N("TestMeOutput"), result));
|
||||||
|
}
|
||||||
|
private int httpProxyTest()
|
||||||
|
{
|
||||||
|
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, "", UpdateSpeedtestHandler);
|
||||||
|
return statistics.RunAvailabilityCheck();
|
||||||
|
}
|
||||||
|
|
||||||
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = GetLvSelectedIndex();
|
int index = GetLvSelectedIndex();
|
||||||
@@ -871,6 +940,11 @@ namespace v2rayN.Forms
|
|||||||
return counter;
|
return counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void menuUpdateSubscriptions_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateSubscriptionProcess();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -964,7 +1038,6 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuExit_Click(object sender, EventArgs e)
|
private void menuExit_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
this.Visible = false;
|
this.Visible = false;
|
||||||
this.Close();
|
this.Close();
|
||||||
|
|
||||||
@@ -977,9 +1050,13 @@ namespace v2rayN.Forms
|
|||||||
this.Show();
|
this.Show();
|
||||||
this.WindowState = FormWindowState.Normal;
|
this.WindowState = FormWindowState.Normal;
|
||||||
this.Activate();
|
this.Activate();
|
||||||
//this.notifyIcon1.Visible = false;
|
|
||||||
this.ShowInTaskbar = true;
|
this.ShowInTaskbar = true;
|
||||||
|
//this.notifyIcon1.Visible = false;
|
||||||
this.txtMsgBox.ScrollToCaret();
|
this.txtMsgBox.ScrollToCaret();
|
||||||
|
if (config.index >= 0 && config.index < lvServers.Items.Count)
|
||||||
|
{
|
||||||
|
lvServers.EnsureVisible(config.index); // workaround
|
||||||
|
}
|
||||||
|
|
||||||
SetVisibleCore(true);
|
SetVisibleCore(true);
|
||||||
}
|
}
|
||||||
@@ -1001,8 +1078,11 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void SetTestResult(int k, string txt)
|
private void SetTestResult(int k, string txt)
|
||||||
{
|
{
|
||||||
config.vmess[k].testResult = txt;
|
if (k < lvServers.Items.Count)
|
||||||
lvServers.Items[k].SubItems[8].Text = txt;
|
{
|
||||||
|
config.vmess[k].testResult = txt;
|
||||||
|
lvServers.Items[k].SubItems["testResult"].Text = txt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private void ClearTestResult()
|
private void ClearTestResult()
|
||||||
{
|
{
|
||||||
@@ -1015,11 +1095,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
lvServers.Invoke((MethodInvoker)delegate
|
lvServers.Invoke((MethodInvoker)delegate
|
||||||
{
|
{
|
||||||
lvServers.SuspendLayout();
|
|
||||||
|
|
||||||
SetTestResult(index, msg);
|
SetTestResult(index, msg);
|
||||||
|
|
||||||
lvServers.ResumeLayout();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1039,15 +1115,14 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
lvServers.Invoke((MethodInvoker)delegate
|
lvServers.Invoke((MethodInvoker)delegate
|
||||||
{
|
{
|
||||||
lvServers.SuspendLayout();
|
lvServers.BeginUpdate();
|
||||||
|
|
||||||
int indexStart = 9;
|
lvServers.Items[i].SubItems["todayDown"].Text = Utils.HumanFy(statistics[index].todayDown);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayDown);
|
lvServers.Items[i].SubItems["todayUp"].Text = Utils.HumanFy(statistics[index].todayUp);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayUp);
|
lvServers.Items[i].SubItems["totalDown"].Text = Utils.HumanFy(statistics[index].totalDown);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalDown);
|
lvServers.Items[i].SubItems["totalUp"].Text = Utils.HumanFy(statistics[index].totalUp);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalUp);
|
|
||||||
|
|
||||||
lvServers.ResumeLayout();
|
lvServers.EndUpdate();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1116,41 +1191,41 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuNotEnabledHttp_Click(object sender, EventArgs e)
|
private void menuNotEnabledHttp_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(0);
|
SetListenerType(ListenerType.noHttpProxy);
|
||||||
}
|
}
|
||||||
private void menuGlobal_Click(object sender, EventArgs e)
|
private void menuGlobal_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(1);
|
SetListenerType(ListenerType.GlobalHttp);
|
||||||
}
|
}
|
||||||
private void menuGlobalPAC_Click(object sender, EventArgs e)
|
private void menuGlobalPAC_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(2);
|
SetListenerType(ListenerType.GlobalPac);
|
||||||
}
|
}
|
||||||
private void menuKeep_Click(object sender, EventArgs e)
|
private void menuKeep_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(3);
|
SetListenerType(ListenerType.HttpOpenAndClear);
|
||||||
}
|
}
|
||||||
private void menuKeepPAC_Click(object sender, EventArgs e)
|
private void menuKeepPAC_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(4);
|
SetListenerType(ListenerType.PacOpenAndClear);
|
||||||
}
|
}
|
||||||
private void menuKeepNothing_Click(object sender, EventArgs e)
|
private void menuKeepNothing_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(5);
|
SetListenerType(ListenerType.HttpOpenOnly);
|
||||||
}
|
}
|
||||||
private void menuKeepPACNothing_Click(object sender, EventArgs e)
|
private void menuKeepPACNothing_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(6);
|
SetListenerType(ListenerType.PacOpenOnly);
|
||||||
}
|
}
|
||||||
private void SetListenerType(int type)
|
private void SetListenerType(ListenerType type)
|
||||||
{
|
{
|
||||||
config.listenerType = type;
|
config.listenerType = type;
|
||||||
ChangePACButtonStatus(type);
|
ChangePACButtonStatus(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChangePACButtonStatus(int type)
|
private void ChangePACButtonStatus(ListenerType type)
|
||||||
{
|
{
|
||||||
if (type != 0)
|
if (type != ListenerType.noHttpProxy)
|
||||||
{
|
{
|
||||||
HttpProxyHandle.RestartHttpAgent(config, false);
|
HttpProxyHandle.RestartHttpAgent(config, false);
|
||||||
}
|
}
|
||||||
@@ -1162,7 +1237,7 @@ namespace v2rayN.Forms
|
|||||||
for (int k = 0; k < menuSysAgentMode.DropDownItems.Count; k++)
|
for (int k = 0; k < menuSysAgentMode.DropDownItems.Count; k++)
|
||||||
{
|
{
|
||||||
ToolStripMenuItem item = ((ToolStripMenuItem)menuSysAgentMode.DropDownItems[k]);
|
ToolStripMenuItem item = ((ToolStripMenuItem)menuSysAgentMode.DropDownItems[k]);
|
||||||
item.Checked = (type == k);
|
item.Checked = ((int)type == k);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigHandler.SaveConfig(ref config, false);
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
@@ -1174,6 +1249,22 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
#region CheckUpdate
|
#region CheckUpdate
|
||||||
|
|
||||||
|
private void askToDownload(DownloadHandle downloadHandle, string url)
|
||||||
|
{
|
||||||
|
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
if (httpProxyTest() > 0)
|
||||||
|
{
|
||||||
|
int httpPort = config.GetLocalPort(Global.InboundHttp);
|
||||||
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
downloadHandle.DownloadFileAsync(url, webProxy, 600);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
downloadHandle.DownloadFileAsync(url, null, 600);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
private void tsbCheckUpdateN_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateN_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//System.Diagnostics.Process.Start(Global.UpdateUrl);
|
//System.Diagnostics.Process.Start(Global.UpdateUrl);
|
||||||
@@ -1185,20 +1276,12 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
AppendText(false, UIRes.I18N("MsgParsingV2rayCoreSuccessfully"));
|
AppendText(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "v2rayN"));
|
||||||
|
|
||||||
string url = args.Msg;
|
string url = args.Msg;
|
||||||
this.Invoke((MethodInvoker)(delegate
|
this.Invoke((MethodInvoker)(delegate
|
||||||
{
|
{
|
||||||
|
askToDownload(downloadHandle, url);
|
||||||
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
downloadHandle.DownloadFileAsync(url, null, -1);
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1215,7 +1298,7 @@ namespace v2rayN.Forms
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
string fileName = Utils.GetPath(downloadHandle.DownloadFileName);
|
string fileName = Utils.GetPath(downloadHandle.DownloadFileName);
|
||||||
Process process = Process.Start("v2rayUpgrade.exe", fileName);
|
Process process = Process.Start("v2rayUpgrade.exe", "\"" + fileName + "\"");
|
||||||
if (process.Id > 0)
|
if (process.Id > 0)
|
||||||
{
|
{
|
||||||
menuExit_Click(null, null);
|
menuExit_Click(null, null);
|
||||||
@@ -1237,7 +1320,7 @@ namespace v2rayN.Forms
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendText(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN"));
|
AppendText(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN"));
|
||||||
downloadHandle.CheckUpdateAsync("v2rayN");
|
downloadHandle.CheckUpdateAsync("v2rayN");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1251,20 +1334,12 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
AppendText(false, UIRes.I18N("MsgParsingV2rayCoreSuccessfully"));
|
AppendText(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "v2rayCore"));
|
||||||
|
|
||||||
string url = args.Msg;
|
string url = args.Msg;
|
||||||
this.Invoke((MethodInvoker)(delegate
|
this.Invoke((MethodInvoker)(delegate
|
||||||
{
|
{
|
||||||
|
askToDownload(downloadHandle, url);
|
||||||
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
downloadHandle.DownloadFileAsync(url, null, -1);
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1310,7 +1385,7 @@ namespace v2rayN.Forms
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendText(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayCore"));
|
AppendText(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayCore"));
|
||||||
downloadHandle.CheckUpdateAsync("Core");
|
downloadHandle.CheckUpdateAsync("Core");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1369,6 +1444,11 @@ namespace v2rayN.Forms
|
|||||||
Process.Start(Global.AboutUrl);
|
Process.Start(Global.AboutUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbV2rayWebsite_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start(Global.v2rayWebsiteUrl);
|
||||||
|
}
|
||||||
|
|
||||||
private void tsbPromotion_Click(object sender, EventArgs e)
|
private void tsbPromotion_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}?t={DateTime.Now.Ticks}");
|
Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}?t={DateTime.Now.Ticks}");
|
||||||
@@ -1415,6 +1495,14 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateSubscriptionProcess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// the subscription update process
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateSubscriptionProcess()
|
||||||
{
|
{
|
||||||
AppendText(false, UIRes.I18N("MsgUpdateSubscriptionStart"));
|
AppendText(false, UIRes.I18N("MsgUpdateSubscriptionStart"));
|
||||||
|
|
||||||
@@ -1479,6 +1567,11 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
bool bShow = tsbQRCodeSwitch.Checked;
|
||||||
|
scMain.Panel2Collapsed = !bShow;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Language
|
#region Language
|
||||||
@@ -1495,15 +1588,12 @@ namespace v2rayN.Forms
|
|||||||
private void SetCurrentLanguage(string value)
|
private void SetCurrentLanguage(string value)
|
||||||
{
|
{
|
||||||
Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value);
|
Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value);
|
||||||
Application.Restart();
|
//Application.Restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void tsbV2rayWebsite_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start(Global.v2rayWebsiteUrl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -118,52 +118,11 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>301, 534</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 142</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器列表</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>信息</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
||||||
<value>添加自定义配置服务器</value>
|
<value>添加[VMess]服务器</value>
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>195, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
@@ -177,17 +136,38 @@
|
|||||||
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
||||||
<value>添加[Socks]服务器</value>
|
<value>添加[Socks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
||||||
<value>添加[VMess]服务器</value>
|
<value>添加自定义配置服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyPACUrl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyPACUrl.Text" xml:space="preserve">
|
<data name="menuAddServers.Text" xml:space="preserve">
|
||||||
<value>复制本地PAC网址</value>
|
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuScanScreen.Text" xml:space="preserve">
|
||||||
|
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveServer.Text" xml:space="preserve">
|
||||||
|
<value>移除所选服务器(多选) (Delete)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
||||||
|
<value>移除重复的服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
@@ -195,11 +175,74 @@
|
|||||||
<data name="menuCopyServer.Text" xml:space="preserve">
|
<data name="menuCopyServer.Text" xml:space="preserve">
|
||||||
<value>克隆所选服务器</value>
|
<value>克隆所选服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Text" xml:space="preserve">
|
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
||||||
<value>退出</value>
|
<value>设为活动服务器 (Enter)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Text" xml:space="preserve">
|
||||||
|
<value>上移至顶 (T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Text" xml:space="preserve">
|
||||||
|
<value>上移 (U)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Text" xml:space="preserve">
|
||||||
|
<value>下移 (D)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
|
<value>下移至底 (B)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>全选 (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuPingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuTcpingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRealPingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSpeedServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
@@ -225,6 +268,38 @@
|
|||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
||||||
<value>批量导出订阅内容至剪贴板(多选)</value>
|
<value>批量导出订阅内容至剪贴板(多选)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>73, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbServer.Text" xml:space="preserve">
|
||||||
|
<value> 服务器 </value>
|
||||||
|
</data>
|
||||||
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>301, 534</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>
|
||||||
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||||
|
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
||||||
|
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
||||||
|
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
||||||
|
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
||||||
|
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
||||||
|
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
||||||
|
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
||||||
|
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
||||||
|
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
||||||
|
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
||||||
|
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
||||||
|
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>316, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuNotEnabledHttp.Text" xml:space="preserve">
|
||||||
|
<value>关闭Http代理</value>
|
||||||
|
</data>
|
||||||
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -243,95 +318,29 @@
|
|||||||
<data name="menuKeep.Text" xml:space="preserve">
|
<data name="menuKeep.Text" xml:space="preserve">
|
||||||
<value>仅开启Http代理,并清除系统代理</value>
|
<value>仅开启Http代理,并清除系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>316, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Text" xml:space="preserve">
|
|
||||||
<value>仅开启Http代理,不改变系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepPAC.Text" xml:space="preserve">
|
<data name="menuKeepPAC.Text" xml:space="preserve">
|
||||||
<value>仅开启PAC,并清除系统代理</value>
|
<value>仅开启PAC,并清除系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>316, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuKeepNothing.Text" xml:space="preserve">
|
||||||
|
<value>仅开启Http代理,不改变系统代理</value>
|
||||||
|
</data>
|
||||||
<data name="menuKeepPACNothing.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepPACNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepPACNothing.Text" xml:space="preserve">
|
<data name="menuKeepPACNothing.Text" xml:space="preserve">
|
||||||
<value>仅开启PAC,不改变系统代理</value>
|
<value>仅开启PAC,不改变系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>316, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuNotEnabledHttp.Text" xml:space="preserve">
|
|
||||||
<value>关闭Http代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
|
||||||
<value>移除重复的服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Text" xml:space="preserve">
|
|
||||||
<value>移除所选服务器(多选) (Delete)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||||
<value>扫描屏幕上的二维码</value>
|
<value>Http代理</value>
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
@@ -339,143 +348,50 @@
|
|||||||
<data name="menuServers.Text" xml:space="preserve">
|
<data name="menuServers.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
|
||||||
<value>设为活动服务器 (Enter)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
<data name="menuAddServers2.Text" xml:space="preserve">
|
||||||
<value>Http代理</value>
|
<value>从剪贴板导入批量URL</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTcpingServer.Text" xml:space="preserve">
|
<data name="menuScanScreen2.Text" xml:space="preserve">
|
||||||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
<value>扫描屏幕上的二维码</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
<data name="menuCopyPACUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>网速显示未启用</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuCopyPACUrl.Text" xml:space="preserve">
|
||||||
<value>297, 6</value>
|
<value>复制本地PAC网址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>220, 6</value>
|
<value>195, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||||
|
<value>更新订阅</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>192, 6</value>
|
<value>192, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>297, 6</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExit.Text" xml:space="preserve">
|
||||||
<value>297, 6</value>
|
<value>退出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>297, 6</value>
|
<value>196, 164</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>v2rayN 项目</value>
|
<value>服务器列表</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
<value>223, 22</value>
|
<value>网速显示未启用</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>简化PAC (请设置Core路由)</value>
|
<value>信息</value>
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>85, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
|
||||||
<value> 检查更新 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>v2rayCore</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
|
||||||
<value>PAC</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
|
||||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
|
|
||||||
GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Text" xml:space="preserve">
|
|
||||||
<value> 关闭窗口 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>69, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Text" xml:space="preserve">
|
|
||||||
<value> 帮助 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
|
||||||
<value> 参数设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Text" xml:space="preserve">
|
|
||||||
<value> 推广 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
|
||||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
|
|
||||||
QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
|
|
||||||
jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
|
|
||||||
6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
|
|
||||||
NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY
|
|
||||||
B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Text" xml:space="preserve">
|
|
||||||
<value> 重启服务 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>73, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Text" xml:space="preserve">
|
|
||||||
<value> 服务器 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>61, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.Text" xml:space="preserve">
|
|
||||||
<value> 订阅 </value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>124, 22</value>
|
<value>124, 22</value>
|
||||||
@@ -489,7 +405,112 @@
|
|||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||||
<value>更新订阅</value>
|
<value>更新订阅</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>61, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSub.Text" xml:space="preserve">
|
||||||
|
<value> 订阅 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>76, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
||||||
|
<value> 参数设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>148, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbReload.Text" xml:space="preserve">
|
||||||
|
<value> 重启服务 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>148, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbTestMe.Text" xml:space="preserve">
|
||||||
|
<value>测试当前服务状态</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbService.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
wwAADsMBx2+oZAAAATdJREFUWEftloENAiEMRW8ER3AEN9ANdARHcAPdwBF0A91AN9INtC+5JvUCJwWM
|
||||||
|
mvCTFw3QUiiU65qa/lUTYT6Ato9rJZyERwT6GFNdU+EihCYNwVhsqmgm3AR1fheOAitd9PCfNvp0HDbY
|
||||||
|
FolV2MmZZCzX9J0FG0TRTlwFdbahIVE7Qe1IR5bYVnXCyr2yO5F1MNUBec25YtjomcCXSxhr9DmrV2Gr
|
||||||
|
flyL4GSrYcm9tmnEZ7JsAC7DgWr5ydbXA8hOAcVjG8FTD6ocQgvXKrW8MqFWUfc1DAXgmRwVFaJQAHsh
|
||||||
|
VbYUU87diqWA934sl/TZ7wV2Lesx0gBwsO5/1Sl5PQhLQb+G+E+bfTm9KXsRAVgHrMK+jO9gbNEzzMSh
|
||||||
|
6DlM9nANoa+kdCeLXLNLFtc9b2r6EXXdE4e4mdByNuG1AAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbService.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>85, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbService.Text" xml:space="preserve">
|
||||||
|
<value> 当前服务 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
||||||
|
<value>v2rayN</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
||||||
|
<value>v2rayCore</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
||||||
|
<value>PAC</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>220, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
||||||
|
<value>简化PAC (请设置Core路由)</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>85, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
||||||
|
<value> 检查更新 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbAbout.Text" xml:space="preserve">
|
||||||
|
<value>v2rayN 项目</value>
|
||||||
|
</data>
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
||||||
<value>V2Ray 官网</value>
|
<value>V2Ray 官网</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>69, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbHelp.Text" xml:space="preserve">
|
||||||
|
<value> 帮助 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>68, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbPromotion.Text" xml:space="preserve">
|
||||||
|
<value> 推广 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
wwAADsMBx2+oZAAAADJJREFUWEftzrENACAIRUFGdVMdTZkAG4zFXfI68kMAAD8ap9lUbpfyaDV19QAA
|
||||||
|
8FDEBl3RImu5VcdbAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>76, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Text" xml:space="preserve">
|
||||||
|
<value> 关闭窗口 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
|
||||||
|
<value> 分享 </value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
27
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
27
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -33,6 +33,7 @@
|
|||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox();
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
this.cmblistenerType = new System.Windows.Forms.ComboBox();
|
this.cmblistenerType = new System.Windows.Forms.ComboBox();
|
||||||
this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox();
|
this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox();
|
||||||
@@ -65,10 +66,10 @@
|
|||||||
this.tabPage8 = new System.Windows.Forms.TabPage();
|
this.tabPage8 = new System.Windows.Forms.TabPage();
|
||||||
this.cmbroutingMode = new System.Windows.Forms.ComboBox();
|
this.cmbroutingMode = new System.Windows.Forms.ComboBox();
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
|
this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel();
|
||||||
this.btnSetDefRountingRule = new System.Windows.Forms.Button();
|
this.btnSetDefRountingRule = new System.Windows.Forms.Button();
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
this.labRoutingTips = new System.Windows.Forms.Label();
|
||||||
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage6 = new System.Windows.Forms.TabPage();
|
this.tabPage6 = new System.Windows.Forms.TabPage();
|
||||||
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
||||||
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
||||||
@@ -146,6 +147,7 @@
|
|||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
||||||
this.groupBox1.Controls.Add(this.label16);
|
this.groupBox1.Controls.Add(this.label16);
|
||||||
this.groupBox1.Controls.Add(this.cmblistenerType);
|
this.groupBox1.Controls.Add(this.cmblistenerType);
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
|
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
|
||||||
@@ -169,6 +171,12 @@
|
|||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// chkdefAllowInsecure
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure");
|
||||||
|
this.chkdefAllowInsecure.Name = "chkdefAllowInsecure";
|
||||||
|
this.chkdefAllowInsecure.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// label16
|
// label16
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label16, "label16");
|
resources.ApplyResources(this.label16, "label16");
|
||||||
@@ -388,12 +396,19 @@
|
|||||||
// panel3
|
// panel3
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
resources.ApplyResources(this.panel3, "panel3");
|
||||||
|
this.panel3.Controls.Add(this.linkLabelRoutingDoc);
|
||||||
this.panel3.Controls.Add(this.btnSetDefRountingRule);
|
this.panel3.Controls.Add(this.btnSetDefRountingRule);
|
||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
this.panel3.Controls.Add(this.labRoutingTips);
|
||||||
this.panel3.Controls.Add(this.cmbdomainStrategy);
|
this.panel3.Controls.Add(this.cmbdomainStrategy);
|
||||||
this.panel3.Controls.Add(this.label15);
|
|
||||||
this.panel3.Name = "panel3";
|
this.panel3.Name = "panel3";
|
||||||
//
|
//
|
||||||
|
// linkLabelRoutingDoc
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.linkLabelRoutingDoc, "linkLabelRoutingDoc");
|
||||||
|
this.linkLabelRoutingDoc.Name = "linkLabelRoutingDoc";
|
||||||
|
this.linkLabelRoutingDoc.TabStop = true;
|
||||||
|
this.linkLabelRoutingDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelRoutingDoc_LinkClicked);
|
||||||
|
//
|
||||||
// btnSetDefRountingRule
|
// btnSetDefRountingRule
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnSetDefRountingRule, "btnSetDefRountingRule");
|
resources.ApplyResources(this.btnSetDefRountingRule, "btnSetDefRountingRule");
|
||||||
@@ -418,11 +433,6 @@
|
|||||||
resources.GetString("cmbdomainStrategy.Items2")});
|
resources.GetString("cmbdomainStrategy.Items2")});
|
||||||
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
||||||
//
|
//
|
||||||
// label15
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label15, "label15");
|
|
||||||
this.label15.Name = "label15";
|
|
||||||
//
|
|
||||||
// tabPage6
|
// tabPage6
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||||
@@ -707,7 +717,6 @@
|
|||||||
private System.Windows.Forms.Label label14;
|
private System.Windows.Forms.Label label14;
|
||||||
private System.Windows.Forms.Panel panel3;
|
private System.Windows.Forms.Panel panel3;
|
||||||
private System.Windows.Forms.ComboBox cmbdomainStrategy;
|
private System.Windows.Forms.ComboBox cmbdomainStrategy;
|
||||||
private System.Windows.Forms.Label label15;
|
|
||||||
private System.Windows.Forms.ComboBox cmbroutingMode;
|
private System.Windows.Forms.ComboBox cmbroutingMode;
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled2;
|
private System.Windows.Forms.CheckBox chksniffingEnabled2;
|
||||||
@@ -723,5 +732,7 @@
|
|||||||
private System.Windows.Forms.Panel panel4;
|
private System.Windows.Forms.Panel panel4;
|
||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label label4;
|
||||||
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
||||||
|
private System.Windows.Forms.LinkLabel linkLabelRoutingDoc;
|
||||||
|
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.HttpProxyHandler;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -67,7 +68,9 @@ namespace v2rayN.Forms
|
|||||||
//remoteDNS
|
//remoteDNS
|
||||||
txtremoteDNS.Text = config.remoteDNS;
|
txtremoteDNS.Text = config.remoteDNS;
|
||||||
|
|
||||||
cmblistenerType.SelectedIndex = config.listenerType;
|
cmblistenerType.SelectedIndex = (int)config.listenerType;
|
||||||
|
|
||||||
|
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -262,7 +265,10 @@ namespace v2rayN.Forms
|
|||||||
//remoteDNS
|
//remoteDNS
|
||||||
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
||||||
|
|
||||||
config.listenerType = cmblistenerType.SelectedIndex;
|
config.listenerType = (ListenerType)Enum.ToObject(typeof(ListenerType), cmblistenerType.SelectedIndex);
|
||||||
|
|
||||||
|
config.defAllowInsecure = chkdefAllowInsecure.Checked;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,6 +441,11 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
labRoutingTips.Text = text;
|
labRoutingTips.Text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void linkLabelRoutingDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Process.Start("https://www.v2fly.org/chapter_02/03_routing.html");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ComboItem
|
class ComboItem
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -117,95 +117,24 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>参数设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value>确定(&O)</value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<value>NoControl</value>
|
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>222, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
||||||
<value>351, 14</value>
|
<value>底层传输安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>201, 23</value>
|
<value>53, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.Text" xml:space="preserve">
|
<data name="label16.Text" xml:space="preserve">
|
||||||
<value>一键设置默认自定义路由规则</value>
|
<value>Http代理</value>
|
||||||
</data>
|
|
||||||
<data name="chkAllowIn2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>102, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowIn2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口2</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>144, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
|
||||||
<value>允许来自局域网的连接</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
|
||||||
<value>开机自动启动(可能会不成功)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>384, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
|
||||||
<value>去重时保留序号较小的项</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Text" xml:space="preserve">
|
|
||||||
<value>记录本地日志(默认关闭)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启Mux多路复用(默认开启)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled2.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled2.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbdomainStrategy.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>81, 14</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbdomainStrategy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>186, 20</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="cmblistenerType.Items" xml:space="preserve">
|
<data name="cmblistenerType.Items" xml:space="preserve">
|
||||||
<value>关闭Http代理</value>
|
<value>关闭Http代理</value>
|
||||||
@@ -228,6 +157,117 @@
|
|||||||
<data name="cmblistenerType.Items6" xml:space="preserve">
|
<data name="cmblistenerType.Items6" xml:space="preserve">
|
||||||
<value>仅开启PAC,不改变系统代理</value>
|
<value>仅开启PAC,不改变系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>96, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled2.Text" xml:space="preserve">
|
||||||
|
<value>开启流量探测</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>96, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启流量探测</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="chkmuxEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启Mux多路复用(默认开启)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowIn2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>102, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowIn2.Text" xml:space="preserve">
|
||||||
|
<value>本地监听端口2</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>66, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled2.Text" xml:space="preserve">
|
||||||
|
<value>开启UDP</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>协议</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>协议</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>66, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启UDP</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>156, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Text" xml:space="preserve">
|
||||||
|
<value>记录本地日志(默认关闭)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>日志等级</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>本地监听端口</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
|
<value> Core:路由设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 89</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>642, 481</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage3.Text" xml:space="preserve">
|
||||||
|
<value> 1.代理的Domain或IP </value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>628, 449</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage4.Text" xml:space="preserve">
|
||||||
|
<value> 2.直连的Domain或IP </value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUserdirect.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>628, 449</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage5.Text" xml:space="preserve">
|
||||||
|
<value> 3.阻止的Domain或IP </value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUserblock.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>628, 449</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage8.Text" xml:space="preserve">
|
||||||
|
<value> 4.预定义规则 </value>
|
||||||
|
</data>
|
||||||
<data name="cmbroutingMode.Items" xml:space="preserve">
|
<data name="cmbroutingMode.Items" xml:space="preserve">
|
||||||
<value>全局</value>
|
<value>全局</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -246,57 +286,29 @@
|
|||||||
<data name="cmbroutingMode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbroutingMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>244, 20</value>
|
<value>244, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>29, 12</value>
|
<value>642, 72</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="linkLabelRoutingDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>自定义GFWList地址(不需自定义请填空白)</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="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>域名策略</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Text" xml:space="preserve">
|
|
||||||
<value>Http代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
<value>77, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="linkLabelRoutingDoc.Text" xml:space="preserve">
|
||||||
<value>本地监听端口</value>
|
<value>域名解析策略</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<value>29, 12</value>
|
<data name="btnSetDefRountingRule.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="btnSetDefRountingRule.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>协议</value>
|
<value>351, 14</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="btnSetDefRountingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>*设置用户PAC规则,用逗号(,)隔开</value>
|
<value>201, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnSetDefRountingRule.Text" xml:space="preserve">
|
||||||
<value>53, 12</value>
|
<value>一键设置默认自定义路由规则</value>
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>日志等级</value>
|
|
||||||
</data>
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="labRoutingTips.AutoSize" type="System.Boolean, mscorlib">
|
<data name="labRoutingTips.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -309,67 +321,58 @@
|
|||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
<data name="labRoutingTips.Text" xml:space="preserve">
|
||||||
<value>*设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP</value>
|
<value>*设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
|
||||||
<value>统计刷新频率</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>642, 72</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 89</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>642, 481</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
|
||||||
<value> Core:基础设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value> Core:路由设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
|
||||||
<value> 1.代理的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage4.Text" xml:space="preserve">
|
|
||||||
<value> 2.直连的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage5.Text" xml:space="preserve">
|
|
||||||
<value> 3.阻止的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Text" xml:space="preserve">
|
<data name="tabPage6.Text" xml:space="preserve">
|
||||||
<value> Core:KCP设置 </value>
|
<value> Core:KCP设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage7.Text" xml:space="preserve">
|
<data name="tabPage7.Text" xml:space="preserve">
|
||||||
<value> v2rayN设置 </value>
|
<value> v2rayN设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>634, 455</value>
|
<value>156, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage8.Text" xml:space="preserve">
|
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||||
<value> 4.预定义规则 </value>
|
<value>去重时保留序号较小的项</value>
|
||||||
|
</data>
|
||||||
|
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="lbFreshrate.Text" xml:space="preserve">
|
||||||
|
<value>统计刷新频率</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>372, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||||
|
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>144, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
||||||
|
<value>允许来自局域网的连接</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>自定义GFWList地址(不需自定义请填空白)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>180, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAutoRun.Text" xml:space="preserve">
|
||||||
|
<value>开机自动启动(可能会不成功)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage9.Text" xml:space="preserve">
|
<data name="tabPage9.Text" xml:space="preserve">
|
||||||
<value> 用户PAC设置 </value>
|
<value> 用户PAC设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label4.Text" xml:space="preserve">
|
||||||
<value>628, 449</value>
|
<value>*设置用户PAC规则,用逗号(,)隔开</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUserblock.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>628, 449</value>
|
<value>确定(&O)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUserdirect.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>628, 449</value>
|
<value>参数设置</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
10
v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs
generated
10
v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs
generated
@@ -31,7 +31,6 @@
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl));
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
this.txtUrl = new System.Windows.Forms.TextBox();
|
||||||
this.picQRCode = new System.Windows.Forms.PictureBox();
|
this.picQRCode = new System.Windows.Forms.PictureBox();
|
||||||
this.chkShow = new System.Windows.Forms.CheckBox();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
@@ -47,20 +46,12 @@
|
|||||||
this.picQRCode.Name = "picQRCode";
|
this.picQRCode.Name = "picQRCode";
|
||||||
this.picQRCode.TabStop = false;
|
this.picQRCode.TabStop = false;
|
||||||
//
|
//
|
||||||
// chkShow
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkShow, "chkShow");
|
|
||||||
this.chkShow.Name = "chkShow";
|
|
||||||
this.chkShow.UseVisualStyleBackColor = true;
|
|
||||||
this.chkShow.CheckedChanged += new System.EventHandler(this.chkShow_CheckedChanged);
|
|
||||||
//
|
|
||||||
// QRCodeControl
|
// QRCodeControl
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.picQRCode);
|
this.Controls.Add(this.picQRCode);
|
||||||
this.Controls.Add(this.txtUrl);
|
this.Controls.Add(this.txtUrl);
|
||||||
this.Controls.Add(this.chkShow);
|
|
||||||
this.Name = "QRCodeControl";
|
this.Name = "QRCodeControl";
|
||||||
this.Load += new System.EventHandler(this.QRCodeControl_Load);
|
this.Load += new System.EventHandler(this.QRCodeControl_Load);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
||||||
@@ -73,6 +64,5 @@
|
|||||||
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
private System.Windows.Forms.TextBox txtUrl;
|
||||||
private System.Windows.Forms.PictureBox picQRCode;
|
private System.Windows.Forms.PictureBox picQRCode;
|
||||||
private System.Windows.Forms.CheckBox chkShow;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
private void QRCodeControl_Load(object sender, System.EventArgs e)
|
private void QRCodeControl_Load(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
chkShow_CheckedChanged(null, null);
|
|
||||||
txtUrl.MouseUp += txtUrl_MouseUp;
|
txtUrl.MouseUp += txtUrl_MouseUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,16 +31,9 @@ namespace v2rayN.Forms
|
|||||||
txtUrl.Text = string.Empty;
|
txtUrl.Text = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
picQRCode.Image = QRCodeHelper.GetQRCode(url);
|
|
||||||
txtUrl.Text = url;
|
txtUrl.Text = url;
|
||||||
|
picQRCode.Image = QRCodeHelper.GetQRCode(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void chkShow_CheckedChanged(object sender, System.EventArgs e)
|
|
||||||
{
|
|
||||||
picQRCode.Visible =
|
|
||||||
txtUrl.Visible = chkShow.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,60 +117,15 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>QRCodeControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 441</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Text" xml:space="preserve">
|
|
||||||
<value>Sharing panel</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 355</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
|
||||||
<value>Zoom</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Bottom</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 371</value>
|
<value>0, 371</value>
|
||||||
</data>
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -180,4 +135,58 @@
|
|||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>txtUrl.Name" xml:space="preserve">
|
||||||
|
<value>txtUrl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.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=">>txtUrl.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 371</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||||
|
<value>Zoom</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>24</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.Name" xml:space="preserve">
|
||||||
|
<value>picQRCode</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</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.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 441</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>QRCodeControl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -117,7 +117,4 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="chkShow.Text" xml:space="preserve">
|
|
||||||
<value>显示分享内容</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
@@ -6,7 +6,7 @@ namespace v2rayN
|
|||||||
#region 常量
|
#region 常量
|
||||||
|
|
||||||
|
|
||||||
public const string v2rayWebsiteUrl = @"https://www.v2ray.com/";
|
public const string v2rayWebsiteUrl = @"https://www.v2fly.org/";
|
||||||
public const string AboutUrl = @"https://github.com/2dust/v2rayN";
|
public const string AboutUrl = @"https://github.com/2dust/v2rayN";
|
||||||
public const string UpdateUrl = AboutUrl + @"/releases";
|
public const string UpdateUrl = AboutUrl + @"/releases";
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@ namespace v2rayN
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string SpeedTestUrl = @"http://speedtest-sgp1.digitalocean.com/10mb.test";
|
public const string SpeedTestUrl = @"http://speedtest-sgp1.digitalocean.com/10mb.test";
|
||||||
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
||||||
|
public const string AvailabilityTestUrl = @"https://www.google.com/generate_204";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CustomRoutingListUrl
|
/// CustomRoutingListUrl
|
||||||
@@ -27,7 +28,7 @@ namespace v2rayN
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// PromotionUrl
|
/// PromotionUrl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string PromotionUrl = @"aHR0cHM6Ly8xLjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本软件配置文件名
|
/// 本软件配置文件名
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ using System.IO;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using System.Linq;
|
||||||
|
using v2rayN.Tool;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -119,6 +121,11 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.uiItem = new UIItem();
|
config.uiItem = new UIItem();
|
||||||
}
|
}
|
||||||
|
if (config.uiItem.mainLvColWidth == null)
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
|
||||||
//// 如果是用户升级,首次会有端口号为0的情况,不可用,这里处理
|
//// 如果是用户升级,首次会有端口号为0的情况,不可用,这里处理
|
||||||
//if (config.pacPort == 0)
|
//if (config.pacPort == 0)
|
||||||
//{
|
//{
|
||||||
@@ -206,6 +213,10 @@ namespace v2rayN.Handler
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
//添加
|
//添加
|
||||||
|
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
||||||
|
{
|
||||||
|
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
||||||
|
}
|
||||||
config.vmess.Add(vmessItem);
|
config.vmess.Add(vmessItem);
|
||||||
if (config.vmess.Count == 1)
|
if (config.vmess.Count == 1)
|
||||||
{
|
{
|
||||||
@@ -276,18 +287,19 @@ namespace v2rayN.Handler
|
|||||||
VmessItem vmessItem = new VmessItem
|
VmessItem vmessItem = new VmessItem
|
||||||
{
|
{
|
||||||
configVersion = config.vmess[index].configVersion,
|
configVersion = config.vmess[index].configVersion,
|
||||||
configType = config.vmess[index].configType,
|
|
||||||
address = config.vmess[index].address,
|
address = config.vmess[index].address,
|
||||||
port = config.vmess[index].port,
|
port = config.vmess[index].port,
|
||||||
id = config.vmess[index].id,
|
id = config.vmess[index].id,
|
||||||
alterId = config.vmess[index].alterId,
|
alterId = config.vmess[index].alterId,
|
||||||
security = config.vmess[index].security,
|
security = config.vmess[index].security,
|
||||||
network = config.vmess[index].network,
|
network = config.vmess[index].network,
|
||||||
|
remarks = string.Format("{0}-clone", config.vmess[index].remarks),
|
||||||
headerType = config.vmess[index].headerType,
|
headerType = config.vmess[index].headerType,
|
||||||
requestHost = config.vmess[index].requestHost,
|
requestHost = config.vmess[index].requestHost,
|
||||||
path = config.vmess[index].path,
|
path = config.vmess[index].path,
|
||||||
streamSecurity = config.vmess[index].streamSecurity,
|
streamSecurity = config.vmess[index].streamSecurity,
|
||||||
remarks = string.Format("{0}-clone", config.vmess[index].remarks)
|
allowInsecure = config.vmess[index].allowInsecure,
|
||||||
|
configType = config.vmess[index].configType
|
||||||
};
|
};
|
||||||
|
|
||||||
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
||||||
@@ -875,5 +887,78 @@ namespace v2rayN.Handler
|
|||||||
ToJsonFile(config);
|
ToJsonFile(config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int AddformMainLvColWidth(ref Config config, string name, int width)
|
||||||
|
{
|
||||||
|
if (config.uiItem.mainLvColWidth == null)
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
if (config.uiItem.mainLvColWidth.ContainsKey(name))
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth[name] = width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth.Add(name, width);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
public static int GetformMainLvColWidth(ref Config config, string name, int width)
|
||||||
|
{
|
||||||
|
if (config.uiItem.mainLvColWidth == null)
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
if (config.uiItem.mainLvColWidth.ContainsKey(name))
|
||||||
|
{
|
||||||
|
return config.uiItem.mainLvColWidth[name];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int SortServers(ref Config config, EServerColName name, bool asc)
|
||||||
|
{
|
||||||
|
if (config.vmess.Count <= 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case EServerColName.configType:
|
||||||
|
case EServerColName.remarks:
|
||||||
|
case EServerColName.address:
|
||||||
|
case EServerColName.port:
|
||||||
|
case EServerColName.security:
|
||||||
|
case EServerColName.network:
|
||||||
|
case EServerColName.testResult:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
string itemId = config.getItemId();
|
||||||
|
var items = config.vmess.AsQueryable();
|
||||||
|
|
||||||
|
if (asc)
|
||||||
|
{
|
||||||
|
config.vmess = items.OrderBy(name.ToString()).ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config.vmess = items.OrderByDescending(name.ToString()).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
var index_ = config.vmess.FindIndex(it => it.getItemId() == itemId);
|
||||||
|
if (index_ >= 0)
|
||||||
|
{
|
||||||
|
config.index = index_;
|
||||||
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,10 +54,10 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest";
|
private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest";
|
||||||
private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip";
|
private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip";
|
||||||
private readonly string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest";
|
private readonly string coreLatestUrl = "https://github.com/v2fly/v2ray-core/releases/latest";
|
||||||
private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip";
|
private const string coreUrl = "https://github.com/v2fly/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip";
|
||||||
|
|
||||||
public async Task CheckUpdateAsync(string type)
|
public async void CheckUpdateAsync(string type)
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol();
|
Utils.SetSecurityProtocol();
|
||||||
WebRequestHandler webRequestHandler = new WebRequestHandler
|
WebRequestHandler webRequestHandler = new WebRequestHandler
|
||||||
@@ -101,7 +101,7 @@ namespace v2rayN.Handler
|
|||||||
string filePath = Utils.GetPath("V2ray.exe");
|
string filePath = Utils.GetPath("V2ray.exe");
|
||||||
if (!File.Exists(filePath))
|
if (!File.Exists(filePath))
|
||||||
{
|
{
|
||||||
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases");
|
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2fly/v2ray-core/releases");
|
||||||
//ShowMsg(true, msg);
|
//ShowMsg(true, msg);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -136,13 +136,15 @@ namespace v2rayN.Handler
|
|||||||
string curVersion;
|
string curVersion;
|
||||||
string message;
|
string message;
|
||||||
string url;
|
string url;
|
||||||
if (type == "Core") {
|
if (type == "Core")
|
||||||
|
{
|
||||||
curVersion = "v" + getV2rayVersion();
|
curVersion = "v" + getV2rayVersion();
|
||||||
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
||||||
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
||||||
url = string.Format(coreUrl, version, osBit);
|
url = string.Format(coreUrl, version, osBit);
|
||||||
}
|
}
|
||||||
else if (type == "v2rayN") {
|
else if (type == "v2rayN")
|
||||||
|
{
|
||||||
curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
|
curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
|
||||||
message = string.Format(UIRes.I18N("IsLatestN"), curVersion);
|
message = string.Format(UIRes.I18N("IsLatestN"), curVersion);
|
||||||
url = string.Format(nUrl, version);
|
url = string.Format(nUrl, version);
|
||||||
@@ -172,8 +174,9 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
#region Download
|
#region Download
|
||||||
|
|
||||||
public void DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout)
|
public WebClientEx DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout)
|
||||||
{
|
{
|
||||||
|
WebClientEx ws = new WebClientEx();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol();
|
Utils.SetSecurityProtocol();
|
||||||
@@ -182,7 +185,7 @@ namespace v2rayN.Handler
|
|||||||
progressPercentage = -1;
|
progressPercentage = -1;
|
||||||
totalBytesToReceive = 0;
|
totalBytesToReceive = 0;
|
||||||
|
|
||||||
WebClientEx ws = new WebClientEx();
|
//WebClientEx ws = new WebClientEx();
|
||||||
DownloadTimeout = downloadTimeout;
|
DownloadTimeout = downloadTimeout;
|
||||||
if (webProxy != null)
|
if (webProxy != null)
|
||||||
{
|
{
|
||||||
@@ -199,6 +202,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
}
|
}
|
||||||
|
return ws;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
||||||
@@ -228,7 +232,6 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -239,7 +242,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
((WebClientEx)sender).Dispose();
|
((WebClientEx)sender).Dispose();
|
||||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||||
string speed = string.Format("<{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
|
string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
|
||||||
UpdateCompleted(this, new ResultEventArgs(true, speed));
|
UpdateCompleted(this, new ResultEventArgs(true, speed));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace v2rayN.Handler
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
Color color = ColorTranslator.FromHtml("#3399CC");
|
Color color = ColorTranslator.FromHtml("#3399CC");
|
||||||
int index = config.listenerType;
|
int index = (int)config.listenerType;
|
||||||
if (index > 0)
|
if (index > 0)
|
||||||
{
|
{
|
||||||
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
||||||
|
|||||||
@@ -11,26 +11,17 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
class SpeedtestHandler
|
class SpeedtestHandler
|
||||||
{
|
{
|
||||||
private DownloadHandle downloadHandle2;
|
|
||||||
private Config _config;
|
private Config _config;
|
||||||
private V2rayHandler _v2rayHandler;
|
private V2rayHandler _v2rayHandler;
|
||||||
private List<int> _selecteds;
|
private List<int> _selecteds;
|
||||||
Action<int, string> _updateFunc;
|
Action<int, string> _updateFunc;
|
||||||
|
|
||||||
private int testCounter = 0;
|
|
||||||
private int ItemIndex
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _selecteds[testCounter - 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SpeedtestHandler(ref Config config, ref V2rayHandler v2rayHandler, List<int> selecteds, string actionType, Action<int, string> update)
|
public SpeedtestHandler(ref Config config, ref V2rayHandler v2rayHandler, List<int> selecteds, string actionType, Action<int, string> update)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_v2rayHandler = v2rayHandler;
|
_v2rayHandler = v2rayHandler;
|
||||||
_selecteds = selecteds;
|
_selecteds = Utils.DeepCopy(selecteds);
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
|
|
||||||
if (actionType == "ping")
|
if (actionType == "ping")
|
||||||
@@ -85,7 +76,7 @@ namespace v2rayN.Handler
|
|||||||
RunPingSub((int index) =>
|
RunPingSub((int index) =>
|
||||||
{
|
{
|
||||||
long time = Utils.Ping(_config.vmess[index].address);
|
long time = Utils.Ping(_config.vmess[index].address);
|
||||||
_updateFunc(index, string.Format("{0}ms", time));
|
_updateFunc(index, FormatOut(time, "ms"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +85,7 @@ namespace v2rayN.Handler
|
|||||||
RunPingSub((int index) =>
|
RunPingSub((int index) =>
|
||||||
{
|
{
|
||||||
int time = GetTcpingTime(_config.vmess[index].address, _config.vmess[index].port);
|
int time = GetTcpingTime(_config.vmess[index].address, _config.vmess[index].port);
|
||||||
_updateFunc(index, string.Format("{0}ms", time));
|
_updateFunc(index, FormatOut(time, "ms"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,36 +100,31 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
//Thread.Sleep(5000);
|
//Thread.Sleep(5000);
|
||||||
int httpPort = _config.GetLocalPort("speedtest");
|
int httpPort = _config.GetLocalPort("speedtest");
|
||||||
Task[] tasks = new Task[_selecteds.Count];
|
List<Task> tasks = new List<Task>();
|
||||||
int i = -1;
|
|
||||||
foreach (int itemIndex in _selecteds)
|
foreach (int itemIndex in _selecteds)
|
||||||
{
|
{
|
||||||
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
tasks.Add(Task.Run(() =>
|
||||||
i++;
|
|
||||||
tasks[i] = Task.Run(() =>
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
||||||
int responseTime = -1;
|
int responseTime = -1;
|
||||||
string status = GetRealPingTime(_config.speedPingTestUrl, webProxy, out responseTime);
|
string status = GetRealPingTime(_config.speedPingTestUrl, webProxy, out responseTime);
|
||||||
string output = Utils.IsNullOrEmpty(status) ? string.Format("{0}ms", responseTime) : string.Format("{0}", status);
|
string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : FormatOut(status, "");
|
||||||
_updateFunc(itemIndex, output);
|
_updateFunc(itemIndex, output);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
});
|
}));
|
||||||
//Thread.Sleep(100);
|
//Thread.Sleep(100);
|
||||||
}
|
}
|
||||||
Task.WaitAll(tasks);
|
Task.WaitAll(tasks.ToArray());
|
||||||
|
|
||||||
Thread.Sleep(100);
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -150,8 +136,40 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int RunAvailabilityCheck() // alias: isLive
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int httpPort = _config.GetLocalPort(Global.InboundHttp);
|
||||||
|
|
||||||
|
Task<int> t = Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
int responseTime = -1;
|
||||||
|
string status = GetRealPingTime(Global.AvailabilityTestUrl, webProxy, out responseTime);
|
||||||
|
bool noError = Utils.IsNullOrEmpty(status);
|
||||||
|
return noError ? responseTime : -1;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return t.Result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void RunSpeedTest()
|
private void RunSpeedTest()
|
||||||
{
|
{
|
||||||
|
int testCounter = 0;
|
||||||
int pid = -1;
|
int pid = -1;
|
||||||
|
|
||||||
if (_config.vmess.Count <= 0)
|
if (_config.vmess.Count <= 0)
|
||||||
@@ -162,39 +180,41 @@ namespace v2rayN.Handler
|
|||||||
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||||
|
|
||||||
string url = _config.speedTestUrl;
|
string url = _config.speedTestUrl;
|
||||||
testCounter = 0;
|
DownloadHandle downloadHandle2 = new DownloadHandle();
|
||||||
if (downloadHandle2 == null)
|
downloadHandle2.UpdateCompleted += (sender2, args) =>
|
||||||
{
|
{
|
||||||
downloadHandle2 = new DownloadHandle();
|
_updateFunc(testCounter, args.Msg);
|
||||||
downloadHandle2.UpdateCompleted += (sender2, args) =>
|
};
|
||||||
{
|
downloadHandle2.Error += (sender2, args) =>
|
||||||
_updateFunc(ItemIndex, args.Msg);
|
|
||||||
if (args.Success) StartNext();
|
|
||||||
};
|
|
||||||
downloadHandle2.Error += (sender2, args) =>
|
|
||||||
{
|
|
||||||
_updateFunc(ItemIndex, args.GetException().Message);
|
|
||||||
StartNext();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
StartNext();
|
|
||||||
|
|
||||||
void StartNext()
|
|
||||||
{
|
{
|
||||||
if (testCounter >= _selecteds.Count)
|
_updateFunc(testCounter, args.GetException().Message);
|
||||||
|
};
|
||||||
|
|
||||||
|
var timeout = 12;
|
||||||
|
foreach (int itemIndex in _selecteds)
|
||||||
|
{
|
||||||
|
if (itemIndex >= _config.vmess.Count)
|
||||||
{
|
{
|
||||||
if (pid > 0) _v2rayHandler.V2rayStopPid(pid);
|
break;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
testCounter = itemIndex;
|
||||||
int httpPort = _config.GetLocalPort("speedtest");
|
int httpPort = _config.GetLocalPort("speedtest");
|
||||||
int index = _selecteds[testCounter];
|
|
||||||
|
|
||||||
testCounter++;
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + index);
|
var ws = downloadHandle2.DownloadFileAsync(url, webProxy, timeout - 2);
|
||||||
downloadHandle2.DownloadFileAsync(url, webProxy, 20);
|
|
||||||
|
Thread.Sleep(1000 * timeout);
|
||||||
|
|
||||||
|
ws.CancelAsync();
|
||||||
|
|
||||||
|
Thread.Sleep(1000 * 2);
|
||||||
}
|
}
|
||||||
|
if (pid > 0) _v2rayHandler.V2rayStopPid(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -263,5 +283,13 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
private string FormatOut(object time, string unit)
|
||||||
|
{
|
||||||
|
if (time.ToString().Equals("-1"))
|
||||||
|
{
|
||||||
|
return "Timeout";
|
||||||
|
}
|
||||||
|
return string.Format("{0}{1}", time, unit).PadLeft(6, ' ');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
pid = V2rayStartNew(configStr);
|
pid = V2rayStartNew(configStr);
|
||||||
//V2rayRestart();
|
//V2rayRestart();
|
||||||
// start with -config
|
// start with -config
|
||||||
@@ -174,8 +174,8 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
{
|
{
|
||||||
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases");
|
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2fly/v2ray-core/releases");
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
return fileName;
|
return fileName;
|
||||||
}
|
}
|
||||||
@@ -200,6 +200,7 @@ namespace v2rayN.Handler
|
|||||||
WorkingDirectory = Utils.StartupPath(),
|
WorkingDirectory = Utils.StartupPath(),
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true,
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
StandardOutputEncoding = Encoding.UTF8
|
StandardOutputEncoding = Encoding.UTF8
|
||||||
}
|
}
|
||||||
@@ -213,10 +214,16 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
p.Start();
|
p.Start();
|
||||||
|
p.PriorityClass = ProcessPriorityClass.High;
|
||||||
p.BeginOutputReadLine();
|
p.BeginOutputReadLine();
|
||||||
//processId = p.Id;
|
//processId = p.Id;
|
||||||
_process = p;
|
_process = p;
|
||||||
|
|
||||||
|
if (p.WaitForExit(1000))
|
||||||
|
{
|
||||||
|
throw new Exception(p.StandardError.ReadToEnd());
|
||||||
|
}
|
||||||
|
|
||||||
Global.processJob.AddProcess(p.Handle);
|
Global.processJob.AddProcess(p.Handle);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -248,6 +255,7 @@ namespace v2rayN.Handler
|
|||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
RedirectStandardInput = true,
|
RedirectStandardInput = true,
|
||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true,
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
StandardOutputEncoding = Encoding.UTF8
|
StandardOutputEncoding = Encoding.UTF8
|
||||||
}
|
}
|
||||||
@@ -266,6 +274,11 @@ namespace v2rayN.Handler
|
|||||||
p.StandardInput.Write(configStr);
|
p.StandardInput.Write(configStr);
|
||||||
p.StandardInput.Close();
|
p.StandardInput.Close();
|
||||||
|
|
||||||
|
if (p.WaitForExit(1000))
|
||||||
|
{
|
||||||
|
throw new Exception(p.StandardError.ReadToEnd());
|
||||||
|
}
|
||||||
|
|
||||||
Global.processJob.AddProcess(p.Handle);
|
Global.processJob.AddProcess(p.Handle);
|
||||||
return p.Id;
|
return p.Id;
|
||||||
}
|
}
|
||||||
@@ -273,7 +286,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
string msg = ex.Message;
|
string msg = ex.Message;
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,19 @@ using v2rayN.Mode;
|
|||||||
|
|
||||||
namespace v2rayN.HttpProxyHandler
|
namespace v2rayN.HttpProxyHandler
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 系统代理(http)模式
|
||||||
|
/// </summary>
|
||||||
|
public enum ListenerType
|
||||||
|
{
|
||||||
|
noHttpProxy = 0,
|
||||||
|
GlobalHttp = 1,
|
||||||
|
GlobalPac = 2,
|
||||||
|
HttpOpenAndClear = 3,
|
||||||
|
PacOpenAndClear = 4,
|
||||||
|
HttpOpenOnly = 5,
|
||||||
|
PacOpenOnly = 6
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统代理(http)总处理
|
/// 系统代理(http)总处理
|
||||||
/// 启动privoxy提供http协议
|
/// 启动privoxy提供http协议
|
||||||
@@ -12,29 +25,29 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
{
|
{
|
||||||
private static bool Update(Config config, bool forceDisable)
|
private static bool Update(Config config, bool forceDisable)
|
||||||
{
|
{
|
||||||
int type = config.listenerType;
|
ListenerType type = config.listenerType;
|
||||||
|
|
||||||
if (forceDisable)
|
if (forceDisable)
|
||||||
{
|
{
|
||||||
type = 0;
|
type = ListenerType.noHttpProxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (type != 0)
|
if (type != ListenerType.noHttpProxy)
|
||||||
{
|
{
|
||||||
int port = Global.httpPort;
|
int port = Global.httpPort;
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (type == 1)
|
if (type == ListenerType.GlobalHttp)
|
||||||
{
|
{
|
||||||
//PACServerHandle.Stop();
|
//PACServerHandle.Stop();
|
||||||
//ProxySetting.SetProxy($"{Global.Loopback}:{port}", Global.IEProxyExceptions, 2);
|
//ProxySetting.SetProxy($"{Global.Loopback}:{port}", Global.IEProxyExceptions, 2);
|
||||||
SysProxyHandle.SetIEProxy(true, true, $"{Global.Loopback}:{port}");
|
SysProxyHandle.SetIEProxy(true, true, $"{Global.Loopback}:{port}");
|
||||||
}
|
}
|
||||||
else if (type == 2)
|
else if (type == ListenerType.GlobalPac)
|
||||||
{
|
{
|
||||||
string pacUrl = GetPacUrl();
|
string pacUrl = GetPacUrl();
|
||||||
//ProxySetting.SetProxy(pacUrl, "", 4);
|
//ProxySetting.SetProxy(pacUrl, "", 4);
|
||||||
@@ -42,24 +55,24 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
//PACServerHandle.Stop();
|
//PACServerHandle.Stop();
|
||||||
PACServerHandle.Init(config);
|
PACServerHandle.Init(config);
|
||||||
}
|
}
|
||||||
else if (type == 3)
|
else if (type == ListenerType.HttpOpenAndClear)
|
||||||
{
|
{
|
||||||
//PACServerHandle.Stop();
|
//PACServerHandle.Stop();
|
||||||
SysProxyHandle.ResetIEProxy();
|
SysProxyHandle.ResetIEProxy();
|
||||||
}
|
}
|
||||||
else if (type == 4)
|
else if (type == ListenerType.PacOpenAndClear)
|
||||||
{
|
{
|
||||||
string pacUrl = GetPacUrl();
|
string pacUrl = GetPacUrl();
|
||||||
SysProxyHandle.ResetIEProxy();
|
SysProxyHandle.ResetIEProxy();
|
||||||
//PACServerHandle.Stop();
|
//PACServerHandle.Stop();
|
||||||
PACServerHandle.Init(config);
|
PACServerHandle.Init(config);
|
||||||
}
|
}
|
||||||
else if (type == 5)
|
else if (type == ListenerType.HttpOpenOnly)
|
||||||
{
|
{
|
||||||
//PACServerHandle.Stop();
|
//PACServerHandle.Stop();
|
||||||
//SysProxyHandle.ResetIEProxy();
|
//SysProxyHandle.ResetIEProxy();
|
||||||
}
|
}
|
||||||
else if (type == 6)
|
else if (type == ListenerType.PacOpenOnly)
|
||||||
{
|
{
|
||||||
string pacUrl = GetPacUrl();
|
string pacUrl = GetPacUrl();
|
||||||
//SysProxyHandle.ResetIEProxy();
|
//SysProxyHandle.ResetIEProxy();
|
||||||
@@ -114,7 +127,7 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (config.listenerType != 5 && config.listenerType != 6)
|
if (config.listenerType != ListenerType.HttpOpenOnly && config.listenerType != ListenerType.PacOpenOnly)
|
||||||
{
|
{
|
||||||
Update(config, true);
|
Update(config, true);
|
||||||
}
|
}
|
||||||
@@ -138,7 +151,7 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
public static void RestartHttpAgent(Config config, bool forced)
|
public static void RestartHttpAgent(Config config, bool forced)
|
||||||
{
|
{
|
||||||
bool isRestart = false;
|
bool isRestart = false;
|
||||||
if (config.listenerType == 0)
|
if (config.listenerType == ListenerType.noHttpProxy)
|
||||||
{
|
{
|
||||||
// 关闭http proxy时,直接返回
|
// 关闭http proxy时,直接返回
|
||||||
return;
|
return;
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.HttpProxyHandler;
|
||||||
|
|
||||||
|
|
||||||
namespace v2rayN.Mode
|
namespace v2rayN.Mode
|
||||||
{
|
{
|
||||||
@@ -107,9 +109,9 @@ namespace v2rayN.Mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 监听状态 0-not 1-http 2-PAC
|
/// 监听状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int listenerType
|
public ListenerType listenerType
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
@@ -167,7 +169,7 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义远程DNS
|
/// 自定义远程DNS
|
||||||
@@ -176,6 +178,15 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否允许不安全连接
|
||||||
|
/// </summary>
|
||||||
|
public bool defAllowInsecure
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订阅
|
/// 订阅
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -194,7 +205,7 @@ namespace v2rayN.Mode
|
|||||||
public List<string> userPacRule
|
public List<string> userPacRule
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 函数
|
#region 函数
|
||||||
|
|
||||||
@@ -295,7 +306,7 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
if (index < 0 || Utils.IsNullOrEmpty(vmess[index].allowInsecure))
|
if (index < 0 || Utils.IsNullOrEmpty(vmess[index].allowInsecure))
|
||||||
{
|
{
|
||||||
return true;
|
return defAllowInsecure;
|
||||||
}
|
}
|
||||||
return Convert.ToBoolean(vmess[index].allowInsecure);
|
return Convert.ToBoolean(vmess[index].allowInsecure);
|
||||||
}
|
}
|
||||||
@@ -693,10 +704,16 @@ namespace v2rayN.Mode
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class UIItem
|
public class UIItem
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public int mainQRCodeWidth { get; set; } = 600;
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Drawing.Size mainSize
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, int> mainLvColWidth
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
21
v2rayN/v2rayN/Mode/EServerColName.cs
Normal file
21
v2rayN/v2rayN/Mode/EServerColName.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public enum EServerColName
|
||||||
|
{
|
||||||
|
def = 0,
|
||||||
|
configType,
|
||||||
|
remarks,
|
||||||
|
address,
|
||||||
|
port,
|
||||||
|
security,
|
||||||
|
network,
|
||||||
|
subRemarks,
|
||||||
|
testResult,
|
||||||
|
|
||||||
|
todayDown,
|
||||||
|
todayUp,
|
||||||
|
totalDown,
|
||||||
|
totalUp
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -33,11 +33,6 @@ namespace v2rayN
|
|||||||
|
|
||||||
if (!IsDuplicateInstance())
|
if (!IsDuplicateInstance())
|
||||||
{
|
{
|
||||||
if (!UnzipLibs())
|
|
||||||
{
|
|
||||||
UI.ShowError($"Error preparing the environment(准备运行环境出错)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Utils.SaveLog("v2rayN start up " + Utils.GetVersion());
|
Utils.SaveLog("v2rayN start up " + Utils.GetVersion());
|
||||||
|
|
||||||
@@ -100,21 +95,5 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject);
|
Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool UnzipLibs()
|
|
||||||
{
|
|
||||||
string fileName = Utils.GetPath("libs.zip");
|
|
||||||
if (!FileManager.ByteArrayToFile(fileName, Resources.libs))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!FileManager.ZipExtractToFile(fileName))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
|||||||
// 方法是按如下所示使用“*”:
|
// 方法是按如下所示使用“*”:
|
||||||
//[assembly: AssemblyVersion("1.0.*")]
|
//[assembly: AssemblyVersion("1.0.*")]
|
||||||
//[assembly: AssemblyVersion("1.0.0")]
|
//[assembly: AssemblyVersion("1.0.0")]
|
||||||
[assembly: AssemblyFileVersion("3.9")]
|
[assembly: AssemblyFileVersion("3.19")]
|
||||||
|
|||||||
20
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
20
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
@@ -100,16 +100,6 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Byte[] 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static byte[] libs {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("libs", resourceCulture);
|
|
||||||
return ((byte[])(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -207,6 +197,16 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap share {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("share", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -118,55 +118,55 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="privoxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\privoxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="abp_js" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\abp.js.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="checkupdate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="libs" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\lib\libs.zip;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="minimize" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="notify" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\notify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="option" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="option" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\option.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="pac_txt" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\pac.txt.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="privoxy_conf" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\privoxy_conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
|
||||||
</data>
|
|
||||||
<data name="privoxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\privoxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="promotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\promotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="restart" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="restart" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\restart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="server" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\server.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="sub" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\sub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="sysproxy64_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="sysproxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="sysproxy_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\resources\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\resources\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="sub" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\sub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="server" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\server.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="notify" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\notify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="checkupdate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\checkupdate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="promotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\promotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="sysproxy64_exe" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="privoxy_conf" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\privoxy_conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
||||||
|
</data>
|
||||||
|
<data name="minimize" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\minimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="pac_txt" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pac.txt.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="abp_js" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\abp.js.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
BIN
v2rayN/v2rayN/Resources/share.png
Normal file
BIN
v2rayN/v2rayN/Resources/share.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 802 B |
15
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
15
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
@@ -475,11 +475,11 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Resolve V2ray successfully 的本地化字符串。
|
/// 查找类似 Resolve {0} successfully 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string MsgParsingV2rayCoreSuccessfully {
|
internal static string MsgParsingSuccessfully {
|
||||||
get {
|
get {
|
||||||
return ResourceManager.GetString("MsgParsingV2rayCoreSuccessfully", resourceCulture);
|
return ResourceManager.GetString("MsgParsingSuccessfully", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -780,5 +780,14 @@ namespace v2rayN.Resx {
|
|||||||
return ResourceManager.GetString("SuccessfullyImportedServerViaScan", resourceCulture);
|
return ResourceManager.GetString("SuccessfullyImportedServerViaScan", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 The ping of current service: {0} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string TestMeOutput {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("TestMeOutput", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -255,8 +255,8 @@
|
|||||||
<data name="MsgPACUpdateSuccessfully" xml:space="preserve">
|
<data name="MsgPACUpdateSuccessfully" xml:space="preserve">
|
||||||
<value>PAC update succeeded</value>
|
<value>PAC update succeeded</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgParsingV2rayCoreSuccessfully" xml:space="preserve">
|
<data name="MsgParsingSuccessfully" xml:space="preserve">
|
||||||
<value>Resolve V2ray successfully</value>
|
<value>Resolve {0} successfully</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgSimplifyPAC" xml:space="preserve">
|
<data name="MsgSimplifyPAC" xml:space="preserve">
|
||||||
<value>Simplify PAC Success</value>
|
<value>Simplify PAC Success</value>
|
||||||
@@ -264,12 +264,12 @@
|
|||||||
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
||||||
<value>Start getting subscriptions</value>
|
<value>Start getting subscriptions</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgStartUpdatingPAC" xml:space="preserve">
|
|
||||||
<value>Start updating PAC...</value>
|
|
||||||
</data>
|
|
||||||
<data name="MsgStartUpdating" xml:space="preserve">
|
<data name="MsgStartUpdating" xml:space="preserve">
|
||||||
<value>Start updating {0}...</value>
|
<value>Start updating {0}...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgStartUpdatingPAC" xml:space="preserve">
|
||||||
|
<value>Start updating PAC...</value>
|
||||||
|
</data>
|
||||||
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
||||||
<value>Subscription content decoding failed (non-BASE64 code)</value>
|
<value>Subscription content decoding failed (non-BASE64 code)</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -358,4 +358,7 @@
|
|||||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||||
<value>Scan import URL successfully</value>
|
<value>Scan import URL successfully</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
|
<value>The ping of current service: {0}</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -255,8 +255,8 @@
|
|||||||
<data name="MsgPACUpdateSuccessfully" xml:space="preserve">
|
<data name="MsgPACUpdateSuccessfully" xml:space="preserve">
|
||||||
<value>PAC更新成功</value>
|
<value>PAC更新成功</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgParsingV2rayCoreSuccessfully" xml:space="preserve">
|
<data name="MsgParsingSuccessfully" xml:space="preserve">
|
||||||
<value>解析V2ray成功</value>
|
<value>解析{0}成功</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgSimplifyPAC" xml:space="preserve">
|
<data name="MsgSimplifyPAC" xml:space="preserve">
|
||||||
<value>简化PAC成功</value>
|
<value>简化PAC成功</value>
|
||||||
@@ -264,12 +264,12 @@
|
|||||||
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
<data name="MsgStartGettingSubscriptions" xml:space="preserve">
|
||||||
<value>开始获取订阅内容</value>
|
<value>开始获取订阅内容</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgStartUpdatingPAC" xml:space="preserve">
|
|
||||||
<value>开始更新 PAC...</value>
|
|
||||||
</data>
|
|
||||||
<data name="MsgStartUpdating" xml:space="preserve">
|
<data name="MsgStartUpdating" xml:space="preserve">
|
||||||
<value>开始更新 {0}...</value>
|
<value>开始更新 {0}...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgStartUpdatingPAC" xml:space="preserve">
|
||||||
|
<value>开始更新 PAC...</value>
|
||||||
|
</data>
|
||||||
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
||||||
<value>订阅内容解码失败(非BASE64码)</value>
|
<value>订阅内容解码失败(非BASE64码)</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -358,4 +358,7 @@
|
|||||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||||
<value>扫描导入URL成功</value>
|
<value>扫描导入URL成功</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
|
<value>当前服务的真连接延迟: {0}</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
48
v2rayN/v2rayN/Tool/QueryableExtension.cs
Normal file
48
v2rayN/v2rayN/Tool/QueryableExtension.cs
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace v2rayN.Tool
|
||||||
|
{
|
||||||
|
public static class QueryableExtension
|
||||||
|
{
|
||||||
|
public static IOrderedQueryable<T> OrderBy<T>(this IQueryable<T> query, string propertyName)
|
||||||
|
{
|
||||||
|
return _OrderBy<T>(query, propertyName, false);
|
||||||
|
}
|
||||||
|
public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> query, string propertyName)
|
||||||
|
{
|
||||||
|
return _OrderBy<T>(query, propertyName, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static IOrderedQueryable<T> _OrderBy<T>(IQueryable<T> query, string propertyName, bool isDesc)
|
||||||
|
{
|
||||||
|
string methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal";
|
||||||
|
|
||||||
|
var memberProp = typeof(T).GetProperty(propertyName);
|
||||||
|
|
||||||
|
var method = typeof(QueryableExtension).GetMethod(methodname)
|
||||||
|
.MakeGenericMethod(typeof(T), memberProp.PropertyType);
|
||||||
|
|
||||||
|
return (IOrderedQueryable<T>)method.Invoke(null, new object[] { query, memberProp });
|
||||||
|
}
|
||||||
|
public static IOrderedQueryable<T> OrderByInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
|
||||||
|
{//public
|
||||||
|
return query.OrderBy(_GetLamba<T, TProp>(memberProperty));
|
||||||
|
}
|
||||||
|
public static IOrderedQueryable<T> OrderByDescendingInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
|
||||||
|
{//public
|
||||||
|
return query.OrderByDescending(_GetLamba<T, TProp>(memberProperty));
|
||||||
|
}
|
||||||
|
static Expression<Func<T, TProp>> _GetLamba<T, TProp>(PropertyInfo memberProperty)
|
||||||
|
{
|
||||||
|
if (memberProperty.PropertyType != typeof(TProp)) throw new Exception();
|
||||||
|
|
||||||
|
var thisArg = Expression.Parameter(typeof(T));
|
||||||
|
var lamba = Expression.Lambda<Func<T, TProp>>(Expression.Property(thisArg, memberProperty), thisArg);
|
||||||
|
|
||||||
|
return lamba;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -285,14 +285,14 @@ namespace v2rayN
|
|||||||
if (GBs > 0)
|
if (GBs > 0)
|
||||||
{
|
{
|
||||||
// multi GB
|
// multi GB
|
||||||
ulong TBs = GBs / factor;
|
/*ulong TBs = GBs / factor;
|
||||||
if (TBs > 0)
|
if (TBs > 0)
|
||||||
{
|
{
|
||||||
// 你是魔鬼吗? 用这么多流量
|
// 你是魔鬼吗? 用这么多流量
|
||||||
result = TBs + GBs % factor / (factor + 0.0);
|
result = TBs + GBs % factor / (factor + 0.0);
|
||||||
unit = "TB";
|
unit = "TB";
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
result = GBs + MBs % factor / (factor + 0.0);
|
result = GBs + MBs % factor / (factor + 0.0);
|
||||||
unit = "GB";
|
unit = "GB";
|
||||||
return;
|
return;
|
||||||
@@ -804,21 +804,14 @@ namespace v2rayN
|
|||||||
|
|
||||||
public static string UnGzip(byte[] buf)
|
public static string UnGzip(byte[] buf)
|
||||||
{
|
{
|
||||||
byte[] buffer = new byte[1024];
|
MemoryStream sb = new MemoryStream();
|
||||||
int n;
|
using (GZipStream input = new GZipStream(new MemoryStream(buf),
|
||||||
using (MemoryStream sb = new MemoryStream())
|
CompressionMode.Decompress,
|
||||||
|
false))
|
||||||
{
|
{
|
||||||
using (GZipStream input = new GZipStream(new MemoryStream(buf),
|
input.CopyTo(sb);
|
||||||
CompressionMode.Decompress,
|
|
||||||
false))
|
|
||||||
{
|
|
||||||
while ((n = input.Read(buffer, 0, buffer.Length)) > 0)
|
|
||||||
{
|
|
||||||
sb.Write(buffer, 0, n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Encoding.UTF8.GetString(sb.ToArray());
|
|
||||||
}
|
}
|
||||||
|
return Encoding.UTF8.GetString(sb.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<packages>
|
|
||||||
<package id="Grpc.Tools" version="2.24.0" targetFramework="net46" developmentDependency="true" />
|
|
||||||
</packages>
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.props" Condition="Exists('..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.props')" />
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
@@ -45,7 +44,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>none</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
@@ -74,33 +73,14 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject>v2rayN.Program</StartupObject>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Google.Protobuf, Version=3.9.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\Google.Protobuf.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Grpc.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\Grpc.Core.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Grpc.Core.Api, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\Grpc.Core.Api.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\Newtonsoft.Json.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\System.Buffers.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
@@ -109,32 +89,12 @@
|
|||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
<Reference Include="System.IO.Compression.FileSystem" />
|
<Reference Include="System.IO.Compression.FileSystem" />
|
||||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\System.Memory.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Messaging" />
|
<Reference Include="System.Messaging" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Net.Http.WebRequest" />
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="zxing, Version=0.16.2.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\zxing.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="zxing.presentation, Version=0.16.2.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>LIB\zxing.presentation.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Forms\AddServer4Form.cs">
|
<Compile Include="Forms\AddServer4Form.cs">
|
||||||
@@ -197,6 +157,7 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="HttpProxyHandler\SysProxyHandle.cs" />
|
<Compile Include="HttpProxyHandler\SysProxyHandle.cs" />
|
||||||
<Compile Include="Mode\EMove.cs" />
|
<Compile Include="Mode\EMove.cs" />
|
||||||
|
<Compile Include="Mode\EServerColName.cs" />
|
||||||
<Compile Include="Mode\ServerStatistics.cs" />
|
<Compile Include="Mode\ServerStatistics.cs" />
|
||||||
<Compile Include="Mode\SysproxyConfig.cs" />
|
<Compile Include="Mode\SysproxyConfig.cs" />
|
||||||
<Compile Include="Mode\EConfigType.cs" />
|
<Compile Include="Mode\EConfigType.cs" />
|
||||||
@@ -248,6 +209,7 @@
|
|||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Tool\FileManager.cs" />
|
<Compile Include="Tool\FileManager.cs" />
|
||||||
<Compile Include="Tool\Job.cs" />
|
<Compile Include="Tool\Job.cs" />
|
||||||
|
<Compile Include="Tool\QueryableExtension.cs" />
|
||||||
<Compile Include="Tool\UIRes.cs" />
|
<Compile Include="Tool\UIRes.cs" />
|
||||||
<Compile Include="Tool\UI.cs" />
|
<Compile Include="Tool\UI.cs" />
|
||||||
<Compile Include="Tool\Utils.cs" />
|
<Compile Include="Tool\Utils.cs" />
|
||||||
@@ -332,8 +294,6 @@
|
|||||||
<EmbeddedResource Include="app.config">
|
<EmbeddedResource Include="app.config">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<None Include="LIB\libs.zip" />
|
|
||||||
<None Include="packages.config" />
|
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
@@ -411,41 +371,43 @@
|
|||||||
<None Include="Resources\minimize.png" />
|
<None Include="Resources\minimize.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<None Include="Resources\share.png" />
|
||||||
<None Include="Resources\promotion.png" />
|
<None Include="Resources\promotion.png" />
|
||||||
<EmbeddedResource Include="Sample\BlankPac.txt" />
|
<EmbeddedResource Include="Sample\BlankPac.txt" />
|
||||||
<None Include="Resources\sub.png" />
|
<None Include="Resources\sub.png" />
|
||||||
<None Include="Resources\checkupdate.png" />
|
<None Include="Resources\checkupdate.png" />
|
||||||
<None Include="Resources\about.png" />
|
<None Include="Resources\about.png" />
|
||||||
<None Include="LIB\Google.Protobuf.dll" />
|
|
||||||
<None Include="LIB\Grpc.Core.Api.dll" />
|
|
||||||
<None Include="LIB\Grpc.Core.dll" />
|
|
||||||
<None Include="LIB\Newtonsoft.Json.dll" />
|
|
||||||
<None Include="LIB\System.Buffers.dll" />
|
|
||||||
<None Include="LIB\System.Memory.dll" />
|
|
||||||
<None Include="LIB\System.Runtime.CompilerServices.Unsafe.dll" />
|
|
||||||
<None Include="LIB\zxing.dll" />
|
|
||||||
<None Include="LIB\zxing.presentation.dll" />
|
|
||||||
<None Include="LIB\netstandard.dll" />
|
|
||||||
<Content Include="LIB\grpc_csharp_ext.x64.dll" />
|
|
||||||
<Content Include="LIB\grpc_csharp_ext.x86.dll" />
|
|
||||||
<Content Include="Resources\help.png" />
|
<Content Include="Resources\help.png" />
|
||||||
<None Include="Resources\notify.png" />
|
<None Include="Resources\notify.png" />
|
||||||
<Content Include="Resources\privoxy_conf.txt" />
|
<Content Include="Resources\privoxy_conf.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Google.Protobuf">
|
||||||
|
<Version>3.11.4</Version>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Grpc.Core">
|
||||||
|
<Version>2.27.0</Version>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Grpc.Tools">
|
||||||
|
<Version>2.27.0</Version>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Newtonsoft.Json">
|
||||||
|
<Version>12.0.3</Version>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="ZXing.Net">
|
||||||
|
<Version>0.16.5</Version>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>copy /y $(SolutionDir)v2rayUpgrade\$(OutDir)* $(TargetDir)
|
||||||
</PostBuildEvent>
|
|
||||||
|
del $(TargetDir)*.xml $(TargetDir)*.so $(TargetDir)*.dylib
|
||||||
|
if not "$(ConfigurationName)" == "Debug" del $(TargetDir)*.pdb</PostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets')" />
|
<Import Project="..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
||||||
<PropertyGroup>
|
|
||||||
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Error Condition="!Exists('..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.props'))" />
|
|
||||||
<Error Condition="!Exists('..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.targets'))" />
|
|
||||||
</Target>
|
|
||||||
<Import Project="..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.targets" Condition="Exists('..\packages\Grpc.Tools.2.24.0\build\Grpc.Tools.targets')" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace v2rayUpgrade
|
namespace v2rayUpgrade
|
||||||
@@ -41,13 +42,14 @@ namespace v2rayUpgrade
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
showWarn("Failed to close v2rayN(关闭v2rayN失败)." + ex.StackTrace);
|
// Access may be denied without admin right. The user may not be an administrator.
|
||||||
return;
|
showWarn("Failed to close v2rayN(关闭v2rayN失败).\n" +
|
||||||
|
"Close it manually, or the upgrade may fail.(请手动关闭正在运行的v2rayN,否则可能升级失败。\n\n" + ex.StackTrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!File.Exists(fileName))
|
if (!File.Exists(fileName))
|
||||||
{
|
{
|
||||||
if (File.Exists(defaultFilename))
|
if (File.Exists(defaultFilename))
|
||||||
@@ -61,27 +63,41 @@ namespace v2rayUpgrade
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string thisAppOldFile = Application.ExecutablePath + ".tmp";
|
||||||
|
File.Delete(thisAppOldFile);
|
||||||
string startKey = "v2rayN/";
|
string startKey = "v2rayN/";
|
||||||
|
|
||||||
|
|
||||||
using (ZipArchive archive = ZipFile.OpenRead(fileName))
|
using (ZipArchive archive = ZipFile.OpenRead(fileName))
|
||||||
{
|
{
|
||||||
foreach (ZipArchiveEntry entry in archive.Entries)
|
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||||
{
|
{
|
||||||
if (entry.Length == 0)
|
try
|
||||||
{
|
{
|
||||||
continue;
|
if (entry.Length == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
string fullName = entry.FullName;
|
||||||
|
if (fullName.StartsWith(startKey))
|
||||||
|
{
|
||||||
|
fullName = fullName.Substring(startKey.Length, fullName.Length - startKey.Length);
|
||||||
|
}
|
||||||
|
if (Application.ExecutablePath.ToLower() == GetPath(fullName).ToLower())
|
||||||
|
{
|
||||||
|
File.Move(Application.ExecutablePath, thisAppOldFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
string entryOuputPath = GetPath(fullName);
|
||||||
|
|
||||||
|
FileInfo fileInfo = new FileInfo(entryOuputPath);
|
||||||
|
fileInfo.Directory.Create();
|
||||||
|
entry.ExtractToFile(entryOuputPath, true);
|
||||||
}
|
}
|
||||||
string fullName = entry.FullName;
|
catch (Exception ex)
|
||||||
if (fullName.StartsWith(startKey))
|
|
||||||
{
|
{
|
||||||
fullName = fullName.Substring(startKey.Length, fullName.Length - startKey.Length);
|
sb.Append(ex.StackTrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
string entryOuputPath = GetPath(fullName);
|
|
||||||
|
|
||||||
FileInfo fileInfo = new FileInfo(entryOuputPath);
|
|
||||||
fileInfo.Directory.Create();
|
|
||||||
entry.ExtractToFile(entryOuputPath, true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,6 +106,12 @@ namespace v2rayUpgrade
|
|||||||
showWarn("Upgrade Failed(升级失败)." + ex.StackTrace);
|
showWarn("Upgrade Failed(升级失败)." + ex.StackTrace);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (sb.Length > 0)
|
||||||
|
{
|
||||||
|
showWarn("Upgrade Failed,Hold ctrl + c to copy to clipboard.\n" +
|
||||||
|
"(升级失败,按住ctrl+c可以复制到剪贴板)." + sb.ToString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Process.Start("v2rayN.exe");
|
Process.Start("v2rayN.exe");
|
||||||
MessageBox.Show("Upgrade successed(升级成功)", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
MessageBox.Show("Upgrade successed(升级成功)", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>none</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
|||||||
Reference in New Issue
Block a user