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