diff --git a/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs b/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
index 06312421..27b7c91c 100644
--- a/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
+++ b/v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
@@ -55,15 +55,14 @@
//
// btnClose
//
- resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// groupBox1
//
- resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.label13);
this.groupBox1.Controls.Add(this.cmbSecurity);
this.groupBox1.Controls.Add(this.txtRemarks);
@@ -75,6 +74,7 @@
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.txtAddress);
this.groupBox1.Controls.Add(this.label1);
+ resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
@@ -85,7 +85,6 @@
//
// cmbSecurity
//
- resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbSecurity.FormattingEnabled = true;
this.cmbSecurity.Items.AddRange(new object[] {
@@ -94,9 +93,8 @@
resources.GetString("cmbSecurity.Items2"),
resources.GetString("cmbSecurity.Items3"),
resources.GetString("cmbSecurity.Items4"),
- resources.GetString("cmbSecurity.Items5"),
- resources.GetString("cmbSecurity.Items6"),
- resources.GetString("cmbSecurity.Items7")});
+ resources.GetString("cmbSecurity.Items5")});
+ resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
this.cmbSecurity.Name = "cmbSecurity";
//
// txtRemarks
@@ -146,9 +144,9 @@
//
// panel2
//
- resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK);
+ resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// btnOK
@@ -165,22 +163,22 @@
//
// menuServer
//
- resources.ApplyResources(this.menuServer, "menuServer");
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.MenuItem1});
+ resources.ApplyResources(this.menuServer, "menuServer");
this.menuServer.Name = "menuServer";
//
// MenuItem1
//
- resources.ApplyResources(this.MenuItem1, "MenuItem1");
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuItemImportClipboard});
this.MenuItem1.Name = "MenuItem1";
+ resources.ApplyResources(this.MenuItem1, "MenuItem1");
//
// menuItemImportClipboard
//
- resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard");
this.menuItemImportClipboard.Name = "menuItemImportClipboard";
+ resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard");
this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click);
//
// AddServer3Form
diff --git a/v2rayN/v2rayN/Forms/AddServer3Form.resx b/v2rayN/v2rayN/Forms/AddServer3Form.resx
index 272c310f..f17e4d82 100644
--- a/v2rayN/v2rayN/Forms/AddServer3Form.resx
+++ b/v2rayN/v2rayN/Forms/AddServer3Form.resx
@@ -118,489 +118,483 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 396, 17
+
+
+ 75, 23
+
+
+
+ 4
+
+
+ &Cancel
+
+
+ btnClose
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 0
+
+
+ True
+
+
+ 337, 158
+
113, 12
-
- 53, 12
+
+ 22
-
- label6
+
+ * Fill in manually
-
- groupBox1
+
+ label13
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
+
System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 547, 25
-
-
-
- 11
-
-
- $this
-
groupBox1
-
- 8
-
-
-
- Bottom
-
-
- Import configuration file
-
-
- groupBox1
-
-
- panel1
-
-
- 3
-
-
- Password
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBox1
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuItemImportClipboard
-
-
- Fill
-
-
- groupBox1
-
-
- 8
-
-
- 89, 12
-
-
- 127, 27
-
-
- System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
0
- aes-256-cfb
+ aes-256-gcm
-
- 6
+
+ aes-128-gcm
-
- 5
+
+ chacha20-poly1305
-
- 303, 17
+
+ chacha20-ietf-poly1305
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ none
-
- 4
-
-
- MenuItem1
-
-
- 0
-
-
- 359, 21
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 396, 17
-
-
- 8
-
-
- 0, 0
-
-
- label1
-
-
- 547, 60
-
-
- 0, 25
-
-
- Encryption
-
-
- groupBox1
-
-
- True
-
-
- 22
-
-
- 162, 21
+
+ plain
127, 123
-
- 127, 91
+
+ 194, 20
-
+
+ 6
+
+
+ cmbSecurity
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
groupBox1
-
- panel2
+
+ 1
-
- 5
+
+ 127, 154
-
+
+ 194, 21
+
+
+ 11
+
+
+ txtRemarks
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
2
+
+ True
+
+
+ 12, 155
+
+
+ 95, 12
+
+
+ 10
+
Alias (remarks)
-
+
+ label6
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
groupBox1
-
+
+ 3
+
+
True
+
+ 12, 124
+
+
+ 65, 12
+
+
+ 8
+
+
+ Encryption
+
label5
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 4
+
+
+ 127, 91
+
+
+ *
+
+
+ 278, 21
+
+
+ 5
+
txtId
System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 12, 31
-
-
+
groupBox1
-
- 1
-
-
- AddServer3Form
-
-
- 194, 21
-
-
- groupBox1
-
-
- 127, 59
-
-
- 0
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 71, 12
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 12, 124
-
-
- 2
-
-
- 10
-
-
- txtPort
-
-
- aes-128-cfb
-
-
- 547, 10
-
-
- 0, 35
-
5
-
- 235, 22
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Edit or add a [Shadowsocks] server
-
-
- &OK
-
-
- chacha20
-
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- btnClose
-
-
- panel2
-
-
- 0
-
-
- 3
+
+ True
12, 93
-
- 194, 20
+
+ 53, 12
-
- 10
+
+ 4
-
- chacha20-ietf
+
+ Password
-
- True
+
+ label3
-
- panel2
-
-
+
System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ groupBox1
+
+
+ 6
+
+
+ 127, 59
+
194, 21
+
+ 3
+
+
+ txtPort
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 7
+
+
+ True
+
+
+ 12, 62
+
+
+ 71, 12
+
+
+ 2
+
+
+ Server port
+
+
+ label2
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 8
+
+
+ 127, 27
+
+
+ 359, 21
+
1
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ txtAddress
-
- 6
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 1
+
+ groupBox1
-
- 7
+
+ 9
-
- label13
+
+ True
-
- aes-256-gcm
+
+ 12, 31
-
+
+ 89, 12
+
+
+ 0
+
+
+ Server address
+
+
+ label1
+
+
System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
groupBox1
-
- v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+ 10
-
- label3
+
+
+ Fill
-
- Server port
-
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 0, 231
-
-
- 9
-
-
- aes-128-gcm
-
-
- 4
-
-
- &Cancel
-
-
- True
-
-
- 6, 12
-
-
- True
-
-
- Server address
-
-
- menuServer
-
-
- txtAddress
-
-
- 127, 154
-
-
- chacha20-poly1305
-
-
- 95, 12
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- * Fill in manually
-
-
- 7
-
-
- label2
-
-
- 12, 62
-
-
- 547, 291
-
-
- chacha20-ietf-poly1305
-
-
- btnOK
-
-
- cmbSecurity
-
-
- $this
+
+ 0, 35
547, 196
-
+
3
-
- 75, 23
-
-
- 6
-
-
- 337, 158
-
-
- 65, 12
-
-
- 4
-
-
- 2
-
-
- 1
-
-
- *
-
-
- 75, 23
-
-
- Import URL from clipboard
-
-
- groupBox1
-
Server
-
- txtRemarks
+
+ groupBox1
-
- 12, 155
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- True
+
+ $this
-
- 278, 21
+
+ 0
+
+
+ 303, 17
+
+
+ 75, 23
+
+
+ 5
+
+
+ &OK
+
+
+ btnOK
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 1
+
+
+ Bottom
+
+
+ 0, 231
+
+
+ 547, 60
+
+
+ 7
+
+
+ panel2
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
Top
-
+
+ 0, 25
+
+
+ 547, 10
+
+
+ 6
+
+
+ panel1
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 2
+
+
+ 17, 17
+
+
+ 235, 22
+
+
+ Import URL from clipboard
+
+
+ 162, 21
+
+
+ Import configuration file
+
+
+ 0, 0
+
+
+ 547, 25
+
+
+ 8
+
+
+ menuServer
+
+
+ System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
3
True
-
- 17, 17
-
+
+ 6, 12
+
+
+ 547, 291
+
+
+ Edit or add a [Shadowsocks] server
+
+
+ MenuItem1
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemImportClipboard
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ AddServer3Form
+
+
+ v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx
index 55fb406d..08f3f3fc 100644
--- a/v2rayN/v2rayN/Forms/MainForm.resx
+++ b/v2rayN/v2rayN/Forms/MainForm.resx
@@ -123,181 +123,181 @@
- 3, 21
+ 3, 17
327, 17
- 423, 24
+ 355, 22
Add [VMess] server
- 423, 24
+ 355, 22
Add [VLESS] server
- 423, 24
+ 355, 22
Add [Shadowsocks] server
- 423, 24
+ 355, 22
Add [Socks] server
- 423, 24
+ 355, 22
Add [Trojan] server
- 423, 24
+ 355, 22
Add a custom configuration server
- 423, 24
+ 355, 22
Import bulk URL from clipboard (Ctrl+V)
- 423, 24
+ 355, 22
Scan QR code on the screen (Ctrl+S)
- 420, 6
+ 352, 6
- 423, 24
+ 355, 22
Remove selected servers (Delete)
- 423, 24
+ 355, 22
Remove duplicate servers
- 423, 24
+ 355, 22
Clone selected server
- 423, 24
+ 355, 22
Set as active server (Enter)
- 420, 6
+ 352, 6
- 423, 24
+ 355, 22
Move to top (T)
- 423, 24
+ 355, 22
Up (U)
- 423, 24
+ 355, 22
Down (D)
- 423, 24
+ 355, 22
Move to bottom (B)
- 423, 24
+ 355, 22
Select All (Ctrl+A)
- 420, 6
+ 352, 6
- 423, 24
+ 355, 22
Test servers ping (Ctrl+P)
- 423, 24
+ 355, 22
Test servers with tcping (Ctrl+O)
- 423, 24
+ 355, 22
Test servers real delay (Ctrl+R)
- 423, 24
+ 355, 22
Test servers download speed (Ctrl+T)
- 423, 24
+ 355, 22
Test current service status
- 423, 24
+ 355, 22
Clear all service statistics
- 420, 6
+ 352, 6
- 423, 24
+ 355, 22
Export selected server for client configuration
- 423, 24
+ 355, 22
Export selected server for server configuration
- 423, 24
+ 355, 22
Export share URLs to clipboard (Ctrl+C)
- 423, 24
+ 355, 22
Export subscription (base64) share to clipboard
@@ -306,7 +306,7 @@
Magenta
- 77, 56
+ 64, 53
Servers
@@ -315,7 +315,7 @@
ImageAboveText
- 424, 708
+ 356, 622
cmsLv
@@ -347,7 +347,7 @@
0, 0
- 1003, 472
+ 686, 307
@@ -387,7 +387,7 @@
4, 4, 4, 4
- 256, 472
+ 256, 307
2
@@ -420,10 +420,10 @@
100
- 1263, 472
+ 946, 307
- 1003
+ 686
0
@@ -450,64 +450,64 @@
NoControl
- 324, 26
+ 262, 22
Clear system proxy
- 324, 26
+ 262, 22
Set system proxy (global mode)
- 324, 26
+ 262, 22
Do not change system proxy
- 309, 24
+ 264, 22
Http proxy
- 309, 24
+ 264, 22
Server
- 309, 24
+ 264, 22
Import bulk URL from clipboard
- 309, 24
+ 264, 22
Scan QR code on the screen
- 309, 24
+ 264, 22
Update subscriptions
- 306, 6
+ 261, 6
- 309, 24
+ 264, 22
Exit
- 310, 154
+ 265, 142
cmsMain
@@ -528,10 +528,10 @@
Fill
- 0, 69
+ 0, 66
- 1269, 496
+ 952, 327
0
@@ -555,7 +555,7 @@
Fill
- 3, 21
+ 3, 17
0
@@ -567,7 +567,7 @@
Vertical
- 1263, 126
+ 946, 154
3
@@ -591,43 +591,43 @@
微软雅黑, 8pt
- 65, 20
+ 52, 21
SOCKS5:
- 0, 20
+ 0, 21
微软雅黑, 8pt
- 305, 20
+ 206, 21
微软雅黑, 8pt
- 48, 20
+ 39, 21
HTTP:
- 0, 20
+ 0, 21
微软雅黑, 8pt
- 305, 20
+ 206, 21
微软雅黑, 8pt
- 305, 20
+ 206, 21
False
@@ -639,7 +639,7 @@
No
- 220, 20
+ 220, 21
SPEED Disabled
@@ -648,13 +648,13 @@
MiddleRight
- 0, 20
+ 0, 21
- 3, 147
+ 3, 171
- 1263, 26
+ 946, 26
0
@@ -678,10 +678,10 @@
Bottom
- 0, 565
+ 0, 393
- 1269, 176
+ 952, 200
3
@@ -705,10 +705,10 @@
Top
- 0, 59
+ 0, 56
- 1269, 10
+ 952, 10
2
@@ -729,16 +729,16 @@
409, 17
- 6, 59
+ 6, 56
- 153, 26
+ 125, 22
Settings
- 153, 26
+ 125, 22
Updates
@@ -747,7 +747,7 @@
Magenta
- 122, 56
+ 99, 53
Subscriptions
@@ -759,7 +759,7 @@
Magenta
- 54, 56
+ 45, 53
Share
@@ -771,16 +771,16 @@
ImageAboveText
- 6, 59
+ 6, 56
- 203, 26
+ 161, 22
OptionSetting
- 203, 26
+ 161, 22
RoutingSetting
@@ -789,7 +789,7 @@
Magenta
- 83, 56
+ 67, 53
Settings
@@ -798,12 +798,12 @@
ImageAboveText
- 6, 59
+ 6, 56
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
@@ -818,7 +818,7 @@
Magenta
- 120, 56
+ 97, 53
Restart service
@@ -827,22 +827,22 @@
ImageAboveText
- 6, 59
+ 6, 56
- 250, 26
+ 203, 22
v2rayN (this software)
- 250, 26
+ 203, 22
Update v2flyCore
- 250, 26
+ 203, 22
Update XrayCore
@@ -851,7 +851,7 @@
Magenta
- 155, 56
+ 128, 53
Check for updates
@@ -860,31 +860,31 @@
ImageAboveText
- 6, 59
+ 6, 56
- 230, 26
+ 187, 22
v2rayN Project
- 230, 26
+ 187, 22
V2Ray Website
- 227, 6
+ 184, 6
- 230, 26
+ 187, 22
Language-[English]
- 230, 26
+ 187, 22
语言-[中文简体]
@@ -893,7 +893,7 @@
Magenta
- 58, 56
+ 48, 53
Help
@@ -905,7 +905,7 @@
Magenta
- 107, 56
+ 89, 53
Promotion
@@ -914,12 +914,12 @@
ImageAboveText
- 6, 59
+ 6, 56
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
@@ -927,7 +927,7 @@
Magenta
- 61, 56
+ 52, 53
Close
@@ -939,7 +939,7 @@
0, 0
- 1269, 59
+ 952, 56
1
@@ -963,13 +963,13 @@
65
- 8, 15
+ 6, 12
- 1269, 741
+ 952, 593
- 5, 5, 5, 5
+ 4, 4, 4, 4
v2rayN
diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx
index 855817b0..d9472064 100644
--- a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx
+++ b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx
@@ -271,7 +271,7 @@
33
- *Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP
+ *Set the rules, separated by commas (,); The comma in the regular is replaced by <COMMA>
labRoutingTips
@@ -420,6 +420,54 @@
2
+
+ btnClose
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel4
+
+
+ 0
+
+
+ btnOK
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel4
+
+
+ 1
+
+
+ Bottom
+
+
+ 0, 516
+
+
+ 742, 60
+
+
+ 10
+
+
+ panel4
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
NoControl
@@ -474,44 +522,53 @@
1
-
- Bottom
+
+ groupBox2
-
- 0, 516
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 742, 60
+
+ panel2
-
- 10
+
+ 0
-
- panel4
+
+ groupBox1
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- $this
+
+ panel2
-
+
1
-
+
Fill
-
- 3, 17
+
+ 0, 121
-
- True
+
+ 742, 395
-
- 344, 375
+
+ 11
-
- 25
+
+ panel2
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
txtIP
@@ -552,20 +609,32 @@
0
-
+
Fill
-
+
3, 17
-
+
True
-
- 386, 375
+
+ 344, 375
-
- 24
+
+ 25
+
+
+ txtIP
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox2
+
+
+ 0
txtDomain
@@ -606,28 +675,31 @@
1
-
+
Fill
-
- 0, 121
+
+ 3, 17
-
- 742, 395
+
+ True
-
- 11
+
+ 386, 375
-
- panel2
+
+ 24
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ txtDomain
-
- $this
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
+ groupBox1
+
+
0
diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx
index c080de59..bac9081a 100644
--- a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx
+++ b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx
@@ -118,7 +118,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- *设置的路由规则,用逗号(,)分隔
+ *设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代
diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
index 8261890c..0edd1e88 100644
--- a/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
+++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
@@ -55,6 +55,7 @@
this.menuImportRulesFromPreset = new System.Windows.Forms.ToolStripMenuItem();
this.menuImportRulesFromFile = new System.Windows.Forms.ToolStripMenuItem();
this.menuImportRulesFromClipboard = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuImportRulesFromUrl = new System.Windows.Forms.ToolStripMenuItem();
this.panel2.SuspendLayout();
this.panel1.SuspendLayout();
this.cmsLv.SuspendLayout();
@@ -65,17 +66,17 @@
//
// btnClose
//
- this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.btnClose, "btnClose");
+ this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// panel2
//
+ resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK);
- resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// btnOK
@@ -87,9 +88,9 @@
//
// panel1
//
+ resources.ApplyResources(this.panel1, "panel1");
this.panel1.Controls.Add(this.linkLabelRoutingDoc);
this.panel1.Controls.Add(this.cmbdomainStrategy);
- resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
//
// linkLabelRoutingDoc
@@ -101,19 +102,19 @@
//
// cmbdomainStrategy
//
+ resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbdomainStrategy.FormattingEnabled = true;
this.cmbdomainStrategy.Items.AddRange(new object[] {
resources.GetString("cmbdomainStrategy.Items"),
resources.GetString("cmbdomainStrategy.Items1"),
resources.GetString("cmbdomainStrategy.Items2")});
- resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
//
// lvRoutings
//
- this.lvRoutings.ContextMenuStrip = this.cmsLv;
resources.ApplyResources(this.lvRoutings, "lvRoutings");
+ this.lvRoutings.ContextMenuStrip = this.cmsLv;
this.lvRoutings.FullRowSelect = true;
this.lvRoutings.GridLines = true;
this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
@@ -129,6 +130,7 @@
//
// cmsLv
//
+ resources.ApplyResources(this.cmsLv, "cmsLv");
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuAdd,
@@ -141,116 +143,123 @@
this.menuMoveDown,
this.menuMoveBottom});
this.cmsLv.Name = "cmsLv";
- resources.ApplyResources(this.cmsLv, "cmsLv");
+ this.cmsLv.OwnerItem = this.MenuItem1;
//
// menuAdd
//
- this.menuAdd.Name = "menuAdd";
resources.ApplyResources(this.menuAdd, "menuAdd");
+ this.menuAdd.Name = "menuAdd";
this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click);
//
// menuRemove
//
- this.menuRemove.Name = "menuRemove";
resources.ApplyResources(this.menuRemove, "menuRemove");
+ this.menuRemove.Name = "menuRemove";
this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click);
//
// menuSelectAll
//
- this.menuSelectAll.Name = "menuSelectAll";
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
+ this.menuSelectAll.Name = "menuSelectAll";
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
//
// menuExportSelectedRules
//
- this.menuExportSelectedRules.Name = "menuExportSelectedRules";
resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules");
+ this.menuExportSelectedRules.Name = "menuExportSelectedRules";
this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click);
//
// toolStripSeparator3
//
- this.toolStripSeparator3.Name = "toolStripSeparator3";
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
+ this.toolStripSeparator3.Name = "toolStripSeparator3";
//
// menuMoveTop
//
- this.menuMoveTop.Name = "menuMoveTop";
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
+ this.menuMoveTop.Name = "menuMoveTop";
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
//
// menuMoveUp
//
- this.menuMoveUp.Name = "menuMoveUp";
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
+ this.menuMoveUp.Name = "menuMoveUp";
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
//
// menuMoveDown
//
- this.menuMoveDown.Name = "menuMoveDown";
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
+ this.menuMoveDown.Name = "menuMoveDown";
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
//
// menuMoveBottom
//
- this.menuMoveBottom.Name = "menuMoveBottom";
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
+ this.menuMoveBottom.Name = "menuMoveBottom";
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
//
// MenuItem1
//
+ resources.ApplyResources(this.MenuItem1, "MenuItem1");
this.MenuItem1.DropDown = this.cmsLv;
this.MenuItem1.Name = "MenuItem1";
- resources.ApplyResources(this.MenuItem1, "MenuItem1");
//
// tabControl2
//
- this.tabControl2.Controls.Add(this.tabPage2);
resources.ApplyResources(this.tabControl2, "tabControl2");
+ this.tabControl2.Controls.Add(this.tabPage2);
this.tabControl2.Name = "tabControl2";
this.tabControl2.SelectedIndex = 0;
//
// tabPage2
//
- this.tabPage2.Controls.Add(this.lvRoutings);
resources.ApplyResources(this.tabPage2, "tabPage2");
+ this.tabPage2.Controls.Add(this.lvRoutings);
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
// menuServer
//
+ resources.ApplyResources(this.menuServer, "menuServer");
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.MenuItem1,
this.toolStripMenuItem1});
- resources.ApplyResources(this.menuServer, "menuServer");
this.menuServer.Name = "menuServer";
//
// toolStripMenuItem1
//
+ resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuImportRulesFromPreset,
this.menuImportRulesFromFile,
- this.menuImportRulesFromClipboard});
+ this.menuImportRulesFromClipboard,
+ this.menuImportRulesFromUrl});
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
//
// menuImportRulesFromPreset
//
- this.menuImportRulesFromPreset.Name = "menuImportRulesFromPreset";
resources.ApplyResources(this.menuImportRulesFromPreset, "menuImportRulesFromPreset");
+ this.menuImportRulesFromPreset.Name = "menuImportRulesFromPreset";
this.menuImportRulesFromPreset.Click += new System.EventHandler(this.menuImportRulesFromPreset_Click);
//
// menuImportRulesFromFile
//
- this.menuImportRulesFromFile.Name = "menuImportRulesFromFile";
resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile");
+ this.menuImportRulesFromFile.Name = "menuImportRulesFromFile";
this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click);
//
// menuImportRulesFromClipboard
//
- this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard";
resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard");
+ this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard";
this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click);
//
+ // menuImportRulesFromUrl
+ //
+ resources.ApplyResources(this.menuImportRulesFromUrl, "menuImportRulesFromUrl");
+ this.menuImportRulesFromUrl.Name = "menuImportRulesFromUrl";
+ this.menuImportRulesFromUrl.Click += new System.EventHandler(this.menuImportRulesFromUrl_Click);
+ //
// RoutingSettingForm
//
resources.ApplyResources(this, "$this");
@@ -302,5 +311,6 @@
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromFile;
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromClipboard;
private System.Windows.Forms.ToolStripMenuItem menuExportSelectedRules;
+ private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromUrl;
}
}
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.cs b/v2rayN/v2rayN/Forms/RoutingSettingForm.cs
index b51d56d6..a086d132 100644
--- a/v2rayN/v2rayN/Forms/RoutingSettingForm.cs
+++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.cs
@@ -24,7 +24,7 @@ namespace v2rayN.Forms
config.rules = new List();
}
InitRoutingsView();
- RefreshRoutingsView();
+ RefreshRoutingsView();
}
private void InitRoutingsView()
@@ -220,7 +220,7 @@ namespace v2rayN.Forms
}
}
-
+
private void lvRoutings_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control)
@@ -307,6 +307,22 @@ namespace v2rayN.Forms
UI.Show(UIRes.I18N("OperationSuccess"));
}
}
+ private void menuImportRulesFromUrl_Click(object sender, EventArgs e)
+ {
+ var fm = new RoutingSubSettingForm();
+ if (fm.ShowDialog() != DialogResult.OK)
+ {
+ return;
+ }
+ var url = fm.Url;
+ DownloadHandle downloadHandle = new DownloadHandle();
+ string clipboardData = downloadHandle.WebDownloadStringSync(url);
+ if (ConfigHandler.AddBatchRoutingRules(ref config, clipboardData) == 0)
+ {
+ RefreshRoutingsView();
+ UI.Show(UIRes.I18N("OperationSuccess"));
+ }
+ }
#endregion
diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.resx b/v2rayN/v2rayN/Forms/RoutingSettingForm.resx
index b773ce33..5e7a353e 100644
--- a/v2rayN/v2rayN/Forms/RoutingSettingForm.resx
+++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.resx
@@ -117,224 +117,317 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- NoControl
-
-
-
- 568, 17
-
-
- 75, 23
-
-
-
- 4
-
-
- &Cancel
-
-
- btnClose
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel2
-
-
- 0
-
-
- btnOK
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel2
-
-
- 1
-
-
- Bottom
-
-
- 0, 613
-
-
- 765, 60
-
-
- 7
-
-
- panel2
-
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
+
+ System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
3
-
- NoControl
-
-
- 475, 17
-
-
- 75, 23
-
-
- 5
-
-
- &OK
-
-
- btnOK
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel2
-
-
- 1
-
-
- linkLabelRoutingDoc
-
-
- System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel1
-
-
- 0
-
cmbdomainStrategy
-
- System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Fill
+
+
+ Down (D)
+
+
+
+ 765, 25
+
+
+ Bottom
+
+
+ Edit and Function
panel1
-
- 1
-
-
- Top
-
-
- 0, 25
-
-
- 765, 51
-
-
- 11
-
panel1
-
- System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
+
$this
-
- 2
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- True
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- NoControl
+
+ 4
-
- 6, 21
-
-
- 0, 0, 0, 0
-
-
- 95, 12
-
-
- 19
-
-
- Domain strategy
-
-
- linkLabelRoutingDoc
-
-
- System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- panel1
-
-
- 0
-
-
- AsIs
-
-
- IPIfNonMatch
-
-
- IPOnDemand
-
-
- 116, 17
-
-
- 165, 20
-
-
- 16
-
-
- cmbdomainStrategy
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- panel1
+
+
+ 15
-
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 4, 22
+
+
+ 6, 21
+
+
+ $this
+
+
+ NoControl
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Routing Settings
+
+
+ Remove selected
+
+
+ tabPage2
+
+
+ menuExportSelectedRules
+
+
+ 202, 22
+
+
+ 475, 17
+
+
+ Domain strategy
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ MenuItem1
+
+
+ 0
+
+
+ 757, 511
+
+
1
-
- 17, 17
-
-
- 203, 186
+
+ 6, 12
+
+
+ IPOnDemand
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Fill
+
+
+ Export Selected Rules
+
+
+ 0, 0
+
+
+ 765, 60
+
+
+ 0, 25
+
+
+ 95, 21
+
+
+ menuServer
+
+
+ Import Rules
+
+
+ 120, 21
+
+
+ 19
+
+
+ Import Rules From Url
+
+
+ System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 2
+
+
+ menuSelectAll
+
+
+ menuMoveTop
+
+
+ 202, 22
cmsLv
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 5
-
- Fill
+
+ menuMoveDown
+
+
+ 165, 20
+
+
+ menuImportRulesFromFile
+
+
+ Add
+
+
+ 247, 22
+
+
+ toolStripSeparator3
+
+
+ True
+
+
+ tabPage2
+
+
+ toolStripMenuItem1
+
+
+ menuMoveBottom
+
+
+ menuImportRulesFromUrl
+
+
+ 95, 12
+
+
+ Import Rules From File
+
+
+ 202, 22
+
+
+ 765, 537
+
+
+ 1
+
+
+ RoutingSettingForm
+
+
+ panel2
+
+
+ Import Rules From Preset
+
+
+ 202, 22
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ btnClose
+
+
+ Up (U)
+
+
+ 12
+
+
+ 203, 186
+
+
+ btnOK
+
+
+ 116, 17
+
+
+ 14
+
+
+ NoControl
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 3, 3
+
+
+ menuImportRulesFromClipboard
+
+
+ Import Rules From Clipboard
+
+
+ menuAdd
+
+
+ 0, 76
+
+
+ IPIfNonMatch
+
+
+ 247, 22
+
+
+ panel2
+
+
+ Move to top (T)
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 765, 51
+
+
+ 751, 505
+
+
+ 202, 22
@@ -353,295 +446,166 @@
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
-
- 3, 3
+
+ menuImportRulesFromPreset
-
- 751, 505
+
+ &OK
-
- 12
+
+ 0, 0, 0, 0
-
- lvRoutings
+
+ 247, 22
+
+
+ $this
v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
- tabPage2
-
-
- 0
-
-
- 202, 22
-
-
- Add
-
-
- 202, 22
-
-
- Remove selected
-
-
- 202, 22
-
-
- Select All (Ctrl+A)
-
-
- 202, 22
-
-
- Export Selected Rules
-
-
- 199, 6
-
-
- 202, 22
-
-
- Move to top (T)
-
-
- 202, 22
-
-
- Up (U)
-
-
- 202, 22
-
-
- Down (D)
-
-
- 202, 22
-
-
- Move to bottom (B)
-
-
- 120, 21
-
-
- Edit and Function
-
-
- tabPage2
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl2
-
-
- 0
-
-
- Fill
-
-
- 0, 76
-
-
- 765, 537
-
-
- 14
-
-
- tabControl2
-
-
- System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 1
-
-
- 4, 22
-
-
- 3, 3, 3, 3
-
-
- 757, 511
-
-
- 0
-
-
- RuleList
-
-
- tabPage2
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tabControl2
-
-
- 0
-
-
- 139, 17
-
-
- 247, 22
-
-
- Import Rules From Preset
-
-
- 247, 22
-
-
- Import Rules From File
-
-
- 247, 22
-
-
- Import Rules From Clipboard
-
-
- 95, 21
-
-
- Import Rules
-
-
- 0, 0
-
-
- 765, 25
-
-
- 15
-
-
- menuServer
-
-
- System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 4
-
-
- True
-
-
- 6, 12
-
-
- 765, 673
-
-
- Routing Settings
-
-
- menuAdd
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuRemove
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuSelectAll
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuExportSelectedRules
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- toolStripSeparator3
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuMoveTop
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuMoveUp
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuMoveDown
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuMoveBottom
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- MenuItem1
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- toolStripMenuItem1
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuImportRulesFromPreset
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuImportRulesFromFile
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- menuImportRulesFromClipboard
+
+ 16
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- RoutingSettingForm
+
+ AsIs
+
+
+ 202, 22
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Move to bottom (B)
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 11
+
+
+ panel2
+
+
+ 7
+
+
+ 0
v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+ tabControl2
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 3, 3, 3, 3
+
+
+ 0, 613
+
+
+ menuMoveUp
+
+
+ RuleList
+
+
+ Select All (Ctrl+A)
+
+
+ &Cancel
+
+
+ 199, 6
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 4
+
+
+ panel1
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 247, 22
+
+
+ 202, 22
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ lvRoutings
+
+
+ linkLabelRoutingDoc
+
+
+ 202, 22
+
+
+ menuRemove
+
+
+ NoControl
+
+
+ 765, 673
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 75, 23
+
+
+ 1
+
+
+ 0
+
+
+ 75, 23
+
+
+ tabControl2
+
+
+ 0
+
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 568, 17
+
+
+ 0
+
+
+ Top
+
+
+ True
+
+
+ 17, 17
+
+
+ 139, 17
+
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx
index c4e5f695..7e6ffcf9 100644
--- a/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx
+++ b/v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx
@@ -243,6 +243,12 @@
从剪贴板中导入规则
+
+ 184, 22
+
+
+ 从Url中导入规则
+
92, 21
diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs
new file mode 100644
index 00000000..e085f27f
--- /dev/null
+++ b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs
@@ -0,0 +1,106 @@
+namespace v2rayN.Forms
+{
+ partial class RoutingSubSettingForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSubSettingForm));
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.btnClose = new System.Windows.Forms.Button();
+ this.btnOK = new System.Windows.Forms.Button();
+ this.panCon = new System.Windows.Forms.Panel();
+ this.txtUrl = new System.Windows.Forms.TextBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.panel2.SuspendLayout();
+ this.panCon.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panel2
+ //
+ this.panel2.Controls.Add(this.btnClose);
+ this.panel2.Controls.Add(this.btnOK);
+ resources.ApplyResources(this.panel2, "panel2");
+ this.panel2.Name = "panel2";
+ //
+ // btnClose
+ //
+ this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ resources.ApplyResources(this.btnClose, "btnClose");
+ this.btnClose.Name = "btnClose";
+ this.btnClose.UseVisualStyleBackColor = true;
+ this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+ //
+ // btnOK
+ //
+ resources.ApplyResources(this.btnOK, "btnOK");
+ this.btnOK.Name = "btnOK";
+ this.btnOK.UseVisualStyleBackColor = true;
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ //
+ // panCon
+ //
+ resources.ApplyResources(this.panCon, "panCon");
+ this.panCon.Controls.Add(this.txtUrl);
+ this.panCon.Controls.Add(this.label3);
+ this.panCon.Name = "panCon";
+ //
+ // txtUrl
+ //
+ resources.ApplyResources(this.txtUrl, "txtUrl");
+ this.txtUrl.Name = "txtUrl";
+ //
+ // label3
+ //
+ resources.ApplyResources(this.label3, "label3");
+ this.label3.Name = "label3";
+ //
+ // RoutingSubSettingForm
+ //
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.btnClose;
+ this.Controls.Add(this.panCon);
+ this.Controls.Add(this.panel2);
+ this.Name = "RoutingSubSettingForm";
+ this.Load += new System.EventHandler(this.RoutingSubSettingForm_Load);
+ this.panel2.ResumeLayout(false);
+ this.panCon.ResumeLayout(false);
+ this.panCon.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.Button btnClose;
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.Panel panCon;
+ private System.Windows.Forms.TextBox txtUrl;
+ private System.Windows.Forms.Label label3;
+ }
+}
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs
new file mode 100644
index 00000000..7ccb683d
--- /dev/null
+++ b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using v2rayN.Handler;
+using v2rayN.Mode;
+
+namespace v2rayN.Forms
+{
+ public partial class RoutingSubSettingForm : BaseForm
+ {
+ public string Url;
+ public RoutingSubSettingForm()
+ {
+ InitializeComponent();
+ }
+
+ private void RoutingSubSettingForm_Load(object sender, EventArgs e)
+ {
+ if (config.ruleSubItem == null)
+ {
+ config.ruleSubItem = new List();
+ }
+ if (config.ruleSubItem.Count <= 0)
+ {
+ config.ruleSubItem.Add(new SubItem
+ {
+ remarks = "def",
+ url = Global.CustomRoutingListUrl + "custom_routing_rules"
+ });
+ }
+ txtUrl.Text = config.ruleSubItem[0].url;
+ }
+
+ private void btnOK_Click(object sender, EventArgs e)
+ {
+ var url = txtUrl.Text.Trim();
+
+ if (Utils.IsNullOrEmpty(url))
+ {
+ return;
+ }
+ Url = url;
+ config.ruleSubItem[0].url = url;
+ ConfigHandler.SaveRuleSubItem(ref config);
+
+ this.DialogResult = DialogResult.OK;
+ }
+
+ private void btnClose_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.Cancel;
+ }
+
+ }
+}
diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx
new file mode 100644
index 00000000..144946ab
--- /dev/null
+++ b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ NoControl
+
+
+
+ 448, 17
+
+
+ 75, 23
+
+
+
+ 4
+
+
+ &Cancel
+
+
+ btnClose
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 0
+
+
+ NoControl
+
+
+ 355, 17
+
+
+ 75, 23
+
+
+ 5
+
+
+ &OK
+
+
+ btnOK
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 1
+
+
+ Bottom
+
+
+ 0, 166
+
+
+ 545, 60
+
+
+ 8
+
+
+ panel2
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
+
+ True
+
+
+ 83, 19
+
+
+ True
+
+
+ 450, 113
+
+
+ 25
+
+
+ txtUrl
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panCon
+
+
+ 0
+
+
+ True
+
+
+ NoControl
+
+
+ 12, 19
+
+
+ 23, 12
+
+
+ 24
+
+
+ Url
+
+
+ label3
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panCon
+
+
+ 1
+
+
+ Fill
+
+
+ 0, 0
+
+
+ 545, 166
+
+
+ 11
+
+
+ panCon
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ True
+
+
+ 6, 12
+
+
+ 545, 226
+
+
+ RoutingSubSetting
+
+
+ RoutingSubSettingForm
+
+
+ v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx
new file mode 100644
index 00000000..614f26d1
--- /dev/null
+++ b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 取消(&C)
+
+
+ 确定(&O)
+
+
+
+ 65, 12
+
+
+ 地址 (url)
+
+
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs
index 478fbbd0..0eaf0665 100644
--- a/v2rayN/v2rayN/Global.cs
+++ b/v2rayN/v2rayN/Global.cs
@@ -20,7 +20,7 @@ namespace v2rayN
public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test";
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
public const string AvailabilityTestUrl = @"https://www.google.com/generate_204";
-
+
///
/// CustomRoutingListUrl
///
@@ -96,7 +96,7 @@ namespace v2rayN
///
/// 阻止 tag值
///
- public const string blockTag = "block";
+ public const string blockTag = "block";
///
///
@@ -189,6 +189,7 @@ namespace v2rayN
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
+ public const string RoutingRuleComma = "";
#endregion
#region 全局变量
diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs
index abdd02f5..5f905f84 100644
--- a/v2rayN/v2rayN/Handler/ConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs
@@ -136,6 +136,10 @@ namespace v2rayN.Handler
{
config.subItem = new List();
}
+ if (config.ruleSubItem == null)
+ {
+ config.ruleSubItem = new List();
+ }
if (config == null
|| config.index < 0
@@ -525,6 +529,12 @@ namespace v2rayN.Handler
vmessItem.id = vmessItem.id.TrimEx();
vmessItem.security = vmessItem.security.TrimEx();
+ var securitys = new HashSet() { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
+ if (!securitys.Contains(vmessItem.security))
+ {
+ return -1;
+ }
+
if (index >= 0)
{
//修改
@@ -1125,5 +1135,29 @@ namespace v2rayN.Handler
return 0;
}
+
+ ///
+ /// SaveRuleSubItem
+ ///
+ ///
+ ///
+ public static int SaveRuleSubItem(ref Config config)
+ {
+ if (config.ruleSubItem == null || config.ruleSubItem.Count <= 0)
+ {
+ return -1;
+ }
+
+ foreach (SubItem sub in config.ruleSubItem)
+ {
+ if (Utils.IsNullOrEmpty(sub.id))
+ {
+ sub.id = Utils.GetGUID();
+ }
+ }
+
+ ToJsonFile(config);
+ return 0;
+ }
}
}
diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs
index dd1d057a..66612ac8 100644
--- a/v2rayN/v2rayN/Handler/DownloadHandle.cs
+++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs
@@ -266,8 +266,8 @@ namespace v2rayN.Handler
{
((WebClientEx)sender).Dispose();
TimeSpan ts = (DateTime.Now - totalDatetime);
- string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
- UpdateCompleted(this, new ResultEventArgs(true, speed));
+ string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.0"));
+ UpdateCompleted(this, new ResultEventArgs(true, speed.PadLeft(8, ' ')));
return;
}
@@ -276,8 +276,8 @@ namespace v2rayN.Handler
{
TimeSpan ts = (DateTime.Now - totalDatetime);
- string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
- UpdateCompleted(this, new ResultEventArgs(true, speed));
+ string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.0"));
+ UpdateCompleted(this, new ResultEventArgs(true, speed.PadLeft(8, ' ')));
}
else
{
diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
index 91523091..fb0bd5dd 100644
--- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
+++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs
@@ -289,7 +289,7 @@ namespace v2rayN.Handler
{
return "Timeout";
}
- return string.Format("{0}{1}", time, unit).PadLeft(6, ' ');
+ return string.Format("{0}{1}", time, unit).PadLeft(8, ' ');
}
}
}
diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
index 6fa3ecb6..43ef1752 100644
--- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
@@ -146,7 +146,7 @@ namespace v2rayN.Handler
try
{
Inbounds inbound = v2rayConfig.inbounds[0];
- //端口
+ inbound.tag = Global.InboundSocks;
inbound.port = config.inbound[0].localPort;
inbound.protocol = config.inbound[0].protocol;
if (config.allowLANConn)
@@ -157,12 +157,13 @@ namespace v2rayN.Handler
{
inbound.listen = Global.Loopback;
}
- //开启udp
+ //udp
inbound.settings.udp = config.inbound[0].udpEnabled;
inbound.sniffing.enabled = config.inbound[0].sniffingEnabled;
//http
Inbounds inbound2 = v2rayConfig.inbounds[1];
+ inbound2.tag = Global.InboundHttp;
inbound2.port = config.GetLocalPort(Global.InboundHttp);
inbound2.protocol = Global.InboundHttp;
inbound2.listen = inbound.listen;
@@ -231,6 +232,10 @@ namespace v2rayN.Handler
var it = Utils.DeepCopy(rules);
it.ip = null;
it.type = "field";
+ for (int k = 0; k < it.domain.Count; k++)
+ {
+ it.domain[k] = it.domain[k].Replace(Global.RoutingRuleComma, ",");
+ }
//if (Utils.IsNullOrEmpty(it.port))
//{
// it.port = null;
diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs
index b1b63fe5..da2983bd 100644
--- a/v2rayN/v2rayN/Mode/Config.cs
+++ b/v2rayN/v2rayN/Mode/Config.cs
@@ -165,6 +165,10 @@ namespace v2rayN.Mode
{
get; set;
}
+ public List ruleSubItem
+ {
+ get; set;
+ }
public ECoreType coreType
{
diff --git a/v2rayN/v2rayN/Properties/AssemblyInfo.cs b/v2rayN/v2rayN/Properties/AssemblyInfo.cs
index c8e96058..1b7c1162 100644
--- a/v2rayN/v2rayN/Properties/AssemblyInfo.cs
+++ b/v2rayN/v2rayN/Properties/AssemblyInfo.cs
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
-[assembly: AssemblyFileVersion("4.5")]
+[assembly: AssemblyFileVersion("4.6")]
diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj
index ea9c4b89..5776ed1f 100644
--- a/v2rayN/v2rayN/v2rayN.csproj
+++ b/v2rayN/v2rayN/v2rayN.csproj
@@ -131,6 +131,12 @@
RoutingSettingDetailsForm.cs
+
+ Form
+
+
+ RoutingSubSettingForm.cs
+
@@ -303,9 +309,17 @@
RoutingSettingDetailsForm.cs
+ Designer
RoutingSettingDetailsForm.cs
+ Designer
+
+
+ RoutingSubSettingForm.cs
+
+
+ RoutingSubSettingForm.cs
SubSettingControl.cs
diff --git a/v2rayN/v2rayN/v2rayN.csproj.user b/v2rayN/v2rayN/v2rayN.csproj.user
index a36e9eb4..778969a8 100644
--- a/v2rayN/v2rayN/v2rayN.csproj.user
+++ b/v2rayN/v2rayN/v2rayN.csproj.user
@@ -9,7 +9,7 @@
zh-CN
false
- ShowAllFiles
+ ProjectFiles
false