From 800807b47a3b5d482a836e16c7c7a18c245ef6f0 Mon Sep 17 00:00:00 2001 From: InterestingDarkness Date: Fri, 5 Aug 2022 15:06:44 +0800 Subject: [PATCH] Add Check for Pre-Release Updates --- v2rayN/v2rayN/Forms/MainForm.cs | 4 +- .../Forms/OptionSettingForm.Designer.cs | 9 + v2rayN/v2rayN/Forms/OptionSettingForm.cs | 2 + v2rayN/v2rayN/Forms/OptionSettingForm.resx | 4027 +++++++++-------- .../Forms/OptionSettingForm.zh-Hans.resx | 3 + v2rayN/v2rayN/Handler/LazyConfig.cs | 14 +- v2rayN/v2rayN/Handler/UpdateHandle.cs | 32 +- v2rayN/v2rayN/Mode/Config.cs | 2 + v2rayN/v2rayN/Mode/CoreInfo.cs | 2 +- v2rayN/v2rayN/Mode/GitHubRelease.cs | 69 + v2rayN/v2rayN/v2rayN.csproj | 2 + 11 files changed, 2146 insertions(+), 2020 deletions(-) create mode 100644 v2rayN/v2rayN/Mode/GitHubRelease.cs diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 8e2094ae..83100854 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1364,7 +1364,7 @@ namespace v2rayN.Forms menuExit_Click(null, null); } }; - (new UpdateHandle()).CheckUpdateGuiN(config, _updateUI); + (new UpdateHandle()).CheckUpdateGuiN(config, _updateUI, config.checkPreReleaseUpdate); } private void tsbCheckUpdateCore_Click(object sender, EventArgs e) @@ -1412,7 +1412,7 @@ namespace v2rayN.Forms AppendText(false, ResUI.MsgUpdateV2rayCoreSuccessfully); } }; - (new UpdateHandle()).CheckUpdateCore(type, config, _updateUI); + (new UpdateHandle()).CheckUpdateCore(type, config, _updateUI, config.checkPreReleaseUpdate); } private void tsbCheckUpdateGeo_Click(object sender, EventArgs e) diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs index 6862f728..0d67d9b7 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs @@ -75,6 +75,7 @@ this.label17 = new System.Windows.Forms.Label(); this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); + this.chkEnableCheckPreReleaseUpdate = new System.Windows.Forms.CheckBox(); this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox(); this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox(); this.btnSetLoopback = new System.Windows.Forms.Button(); @@ -407,6 +408,7 @@ this.tabPage7.Controls.Add(this.label17); this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval); this.tabPage7.Controls.Add(this.label3); + this.tabPage7.Controls.Add(this.chkEnableCheckPreReleaseUpdate); this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13); this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth); this.tabPage7.Controls.Add(this.btnSetLoopback); @@ -445,6 +447,12 @@ resources.ApplyResources(this.label3, "label3"); this.label3.Name = "label3"; // + // chkEnableCheckPreReleaseUpdate + // + resources.ApplyResources(this.chkEnableCheckPreReleaseUpdate, "chkEnableCheckPreReleaseUpdate"); + this.chkEnableCheckPreReleaseUpdate.Name = "chkEnableCheckPreReleaseUpdate"; + this.chkEnableCheckPreReleaseUpdate.UseVisualStyleBackColor = true; + // // chkEnableSecurityProtocolTls13 // resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13"); @@ -769,5 +777,6 @@ private System.Windows.Forms.NumericUpDown numStatisticsFreshRate; private System.Windows.Forms.ComboBox cmbdomainStrategy4Freedom; private System.Windows.Forms.Label label19; + private System.Windows.Forms.CheckBox chkEnableCheckPreReleaseUpdate; } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.cs b/v2rayN/v2rayN/Forms/OptionSettingForm.cs index 7b6a898b..4e02b5be 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.cs +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.cs @@ -98,6 +98,7 @@ namespace v2rayN.Forms txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString(); txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString(); + chkEnableCheckPreReleaseUpdate.Checked = config.checkPreReleaseUpdate; txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString(); } @@ -298,6 +299,7 @@ namespace v2rayN.Forms config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text); config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text); + config.checkPreReleaseUpdate = chkEnableCheckPreReleaseUpdate.Checked; config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text); return 0; } diff --git a/v2rayN/v2rayN/Forms/OptionSettingForm.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.resx index 81c054e8..32bc3c86 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.resx +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.resx @@ -117,1916 +117,359 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabPage6 - - - 351, 211 - - - groupBox1 - - - - 6 - - - Listening port - - - 8 - - - 317, 12 - - - panel2 - - - tabPage7 - - - tabPage2 - - - tabPage7 - 355, 16 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 97, 21 - - - error - - - 15, 129 - - - 0 - - - - NoControl - - - chkudpEnabled - - - 100, 20 - - - txtpass - - - 282, 23 - - - downlinkCapacity - - - mtu - - - 191, 12 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 1 - - - labCoreType4 - - - 506, 16 - - - 41 - - - 36 - - - 143, 20 - - - 10 - - - 120, 21 - - - True - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 223, 398 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Log level - - - 351, 157 - - - groupBox1 - - - panel1 - - - tabPage6 - - - 11 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 35 - - - 6 - - - 45, 150 - - - Enable UDP - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15, 131 - - - tabPage7 - - - 8, 41 - - - 45, 46 - - - 94, 21 - - - 390, 16 - - - groupBox1 - - - 2 - - - tabPage7 - - - 285, 25 - - - 15, 16 - - - 179, 12 - - - 97, 21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Statistics freshrate (second) - - - warning - - - 0 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - UseIP - - - txtlocalPort - - - System.Windows.Forms.Label, 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 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - True - - - 15 - - - groupBox2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 193, 162 - - - 342, 17 - - - 95, 12 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 27, 188 - - - 8 - - - tabPage7 - - - 236, 66 - - - 1 - - - groupBox1 - - - 13 - - - 4 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15, 39 - - - 124, 25 - - - True - - - cmbCoreType4 - - - 11 - - - 0 - - - 9 - - - protocol - - - True - - - tabPage6 - - - 3, 3, 3, 3 - - - True - - - chkEnableStatistics - - - OptionSettingForm - - - 9 - - - 12 - - - label14 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - Record local logs - - - Automatically adjust column width after updating subscription - - - Auth user - - - 3, 3, 3, 3 - - - label15 - - - 43 - - - labCoreType3 - - - 5 - - - True - - - 117, 68 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 33, 29 - - - 11 - - - 15, 192 - - - 117, 172 - - - Use semicolon (;) - - - 281, 12 - - - tabControl1 - - - 12 - - - 3, 3, 3, 3 - - - groupBox1 - - - lbFreshrate - - - labCoreType1 - - - 44 - - - 10 - - - 9 - - - 14 - - - 4, 4, 4, 4 - - - True - - - NoControl - - - 4, 22 - - - Core Type - - - 736, 453 - - - 59, 12 - - - 15, 108 - - - True - - - 2 - - - True - - - 31 - - - 0 - - - 36 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - none - - - 7 - - - 45, 98 - - - label10 - - - 94, 21 - - - 13 - - - True - - - 78, 21 - - - 3 - - - txtsystemProxyExceptions - - - 236, 104 - - - 42 - - - True - - - label11 - - - 12 - - - True - - - chkEnableAutoAdjustMainLvColWidth - - - 0 - - - 7 - - - NoControl - - - tabPage2 - - - chkEnableSecurityProtocolTls13 - - - 10 - - - 15, 160 - - - 97, 20 - - - 143, 20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 23 - - - cmbloglevel - - - 496, 61 - - - label16 - - - 20 - - - v2rayN settings - - - groupBox1 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - tabPage7 - - - 4 - - - 120, 16 - - - $this - - - groupBox1 - - - NoControl - - - cmbCoreType6 - - - True - - - 663, 37 - - - 41 - - - 97, 21 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tabPageCoreType - - - tabPageCoreType - - - 496, 27 - - - linkDnsObjectDoc - - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - cmbCoreType5 - - - tabPageCoreType - - - tabPageCoreType - - - 0, 463 - - - 143, 20 - - - True - - - Bottom - - - tti - - - 468, 16 - - - Enable Security Protocol TLS v1.3 (subscription/update/speedtest) - - - 94, 21 - - - 0 - - - NoControl - - - groupBox1 - - - 4 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage6 - - - 6 - - - groupBox2 - - - 3 - - - 9 - - - 94, 21 - - - tabPage6 - - - Settings - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 11 - - - 89, 12 - - - label12 - - - 0 - - - chkmuxEnabled - - - tabPageCoreType - - - 0 - - - Automatic update interval of and Geo (hours) - - - label2 - - - 3 - - - tabPageCoreType - - - groupBox1 - - - label6 - - - tabPage6 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - label13 - - - 46 - - - 0 - - - tabControl1 - - - 111, 100 - - - 2 - - - 37 - - - label18 - - - 0 - - - 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 - - - UseIPv6 - - - True - - - 7 - - - 1 - - - Automatic update interval of subscriptions (hours) - - - label19 - - - Custom DNS (multiple, separated by commas (,)) - - - 2 - - - 30, 376 - - - chklogEnabled - - - True - - - 345, 62 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 59, 12 - - - 4 - - - 5 - - - 8, 17 - - - 41 - - - 111, 24 - - - 97, 21 - - - &OK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - txtKcpmtu - - - 6 - - - Fill - - - 3, 3 - - - NoControl - - - 8, 52 - - - 4 - - - 102, 16 - - - Outbound Freedom domainStrategy - - - groupBox2 - - - Fill - - - groupBox1 - - - 6 - - - 736, 523 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage2 - - - txtKcpwriteBufferSize - - - 18, 28 - - - 62, 21 - - - 736, 10 - - - 236, 28 - - - groupBox2 - - - groupBox1 - - - NoControl - - - 8, 402 - - - 8 - 75, 23 - - 0 - - - 345, 100 - - - 39 - - - 3 - - - 15, 63 - - - Exception - - - cmbSystemProxyAdvancedProtocol - - - tabPage7 - - - 38 - - - chkIgnoreGeoUpdateCore - - - NoControl - - - chksniffingEnabled - - - tabPage7 - - - 5 - - - labCoreType6 - - - 198, 16 - - - numStatisticsFreshRate - - - 0, 0, 0, 0 - - - 15, 62 - - - 0, 10 - - - readBufferSize - - - NoControl - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 42 - - - 397, 65 - - - 42 - - - tabPageCoreType - - - tabPage2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 44 - - - tabPage7 - - - 53, 12 - - - 2 - - - tabPageCoreType - - - Core Type - - - True - - - 5 - - - 728, 427 - - + + 7 - - 8 - - - Tray right-click menu servers display limit - - - NoControl - - - 8, 28 - - - 9 - - - 59, 12 - - - chkKeepOlderDedupl - - - 45 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage7 - - - 6, 12 - - - 84, 16 - - - 329, 12 - - - 1 - - - NoControl - - - label5 - - - 59, 12 - - - 728, 427 - - - Core Type - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 728, 427 - - - True - - - 479, 41 - - - tabControl1 - - - 1 - - - tabPage1 - - - 45, 176 - - - 10 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 9 - - - 3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 43 - - - 47 - - - 59, 12 - - - allowInsecure - - - 36 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10 - - - tabPage7 - - - Core Type - - - 728, 427 - - - True - - - btnOK - - - True - - - 8 - - - cmbCoreType3 - - - 397, 27 - - - 42 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 41 - - - 42 - - - 45, 124 - - - tabPage7 - - - tabControl1 - - - 59, 12 - - - 10 - - - Core: basic settings - - - 6 - - - CoreType settings - - - 6 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPage3 - - - 263, 12 - - - panel2 - - - tabPage7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - chkAutoRun - - - 143, 20 - - - System.Windows.Forms.Label, 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 - - - tabPage2 - - - btnClose - - - 638, 349 - - - chkdefAllowInsecure - - - 1 - - - groupBox2 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 638, 219 - - - System.Windows.Forms.TextBox, 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 - - - 4 - - - tabPage3 - - - 40 - - - 143, 20 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - txtKcptti - - - NoControl - - - 23, 12 - - - 3, 3, 3, 3 - - - 23, 12 - - - 4, 22 - - - True - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 30 - - - 285, 61 - - - 45, 72 - - - System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPageCoreType - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - writeBufferSize - - - 117, 146 - - - Ignore Geo files when updating core - - - 736, 60 - - - 39 - - - 38 - - - txtKcpdownlinkCapacity - - - 117, 42 - - - label4 - - - Keep older when deduplication - - - label8 - - - 257, 158 - - - NoControl - - - True - &Cancel - - 15, 85 + + btnClose - - 4, 22 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 351, 184 + + panel2 - - NoControl - - - groupBox1 - - - chkAllowLANConn - - - txtautoUpdateSubInterval - - - tabPage7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 27, 215 - - - 89, 12 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 234, 16 - - - 89, 12 - - - 12 - - - Automatically start at system startup - - - congestion - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 107, 12 - - - groupBox1 - - - False - - - 97, 20 - - - 5 - - - 11 - - - tabPage6 - - - txtuser - - - tabControl1 - - - 107, 12 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 20 - - - 117, 120 - - - True - - - 143, 20 - - - 345, 24 - - - Top - - - 11 - - - True - - - NoControl - - - 4, 22 - - - NoControl - - - 8 - - - 59, 12 - - - 39 - - - 18, 66 - - - Allow connections from the LAN - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 18, 104 - - - Set Windows10 UWP Loopback - - - txtautoUpdateInterval - - - 9 - - - 246, 16 - - - tabPage1 - - - labCoreType2 - - - 2 - - - 94, 21 - - - Fill - - - True - - - 13 - - - txtKcpreadBufferSize - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - 6 - - - Turn on Mux Multiplexing - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4, 22 - - - tabPageCoreType - - - groupBox1 - - - 7 - - - 94, 21 - - - Turn on Sniffing - - - socks - - - tabPageCoreType - - - 117, 94 - - - 14 - - - 2 - - - 29 - - - http - - - True - - - NoControl - - - Vertical - - - 8 - - - True - - - tabPageCoreType - - - 37 - - - label1 - - - 5 - - - groupBox1 - - - 37 - - - $this - - - 728, 427 - - - 3 - - - label9 - - - True - - - tabPage7 - - - txttrayMenuServersLimit - - - Support DnsObject - - - True - - - 267, 16 - - - NoControl - - - txtKcpuplinkCapacity - - - 3 - - - tabPage6 - - - 40 - - - 224, 29 - - - 40 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 722, 421 - - - 4 + + 0 True - - 224, 65 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Vertical - - - Core Type - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4, 22 - - - cmbCoreType2 - - - 8, 346 - - - 38 - - + + NoControl - - UseIPv4 + + 397, 65 - - 20, 143 + + 79, 15 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Core Type - - - 44 - - - True - - - System proxy settings - - - 15 - - - 126, 16 - - - cmbCoreType1 - - - label3 - - - 5 - - - tabPage6 - - - 2 - - - label7 - - - NoControl - - - tabPage6 - - - 59, 12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - txtremoteDNS + + 39 Auth pass - - tabPage7 + + label16 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + True + + + NoControl + + + 224, 65 + + + 79, 15 + + + 38 + + + Auth user + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 1 + + + 496, 61 + + + 120, 25 + + + 37 + + + txtpass + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 2 + + + 285, 61 + + + 97, 25 + + + 36 + + + txtuser + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 3 + + + True + + + NoControl + + + 15, 192 + + + 133, 19 + + + 35 + + + allowInsecure + + + chkdefAllowInsecure + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 4 + + + True + + + 15, 63 + + + 269, 19 + + + 29 + + + Allow connections from the LAN + + + chkAllowLANConn + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 5 + + + True + + + NoControl + + + 496, 27 + + + 157, 19 + + + 31 + + + Turn on Sniffing + + + chksniffingEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 6 + + + True + + + 15, 129 + + + 229, 19 + + + 20 + + + Turn on Mux Multiplexing + + + chkmuxEnabled + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 7 + + + False + + + socks + + + http + + + 285, 25 + + + 97, 23 + + + 12 + + + cmbprotocol + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 8 + + + True + + + 224, 29 + + + 71, 15 + + + 11 + + + protocol + + + label1 System.Windows.Forms.Label, 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 + + groupBox1 - - 40 + + 9 - + + True + + + 397, 27 + + + 109, 19 + + + 10 + + + Enable UDP + + + chkudpEnabled + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 204, 16 + + groupBox1 - + + 10 + + True - - True + + 15, 160 - - 12 + + 165, 19 - - 47 + + 9 - - 2 + + Record local logs - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + chklogEnabled - - Core: DNS settings + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 45 + + groupBox1 - - label17 - - - 59, 12 - - - 27, 161 - - - 0, 0 - - - Enable Statistics (Realtime netspeed and traffic records. Require restart) - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 + + 11 debug @@ -2034,190 +477,1774 @@ info - - Core: KCP settings + + warning - - tabControl1 + + error - - labCoreType5 + + none - - 111, 62 + + 257, 158 - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 97, 23 - - 305, 12 + + 6 - - 38 + + cmbloglevel - - 1 - - - 4 - - - chkKcpcongestion - - - 1 - - - 0 - - - 84, 16 - - + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 33 + + groupBox1 - - 7 + + 12 - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 101, 12 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 269, 12 - - - 728, 427 - - - NoControl - - - tabPageCoreType - - - tabPage6 - - - 728, 427 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 638, 20 - - - 29 - - + True - - 6, 283 + + 193, 162 - - 11 + + 79, 15 - - 45 + + 8 - - cmbprotocol + + Log level - - 174, 16 + + label5 - + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 39 + + groupBox1 - - 4 + + 13 - + + 124, 25 + + + 78, 25 + + 3 - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + txtlocalPort - - tabPage6 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabPage2 - - - btnSetLoopback - - - True - - - cmbdomainStrategy4Freedom - - - Do not use proxy server for addresses beginning with - - - 0, 0 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - 75, 23 - - - 8, 371 - - - uplinkCapacity - - - 10 + + groupBox1 14 - + + True + + + 33, 29 + + + 119, 15 + + + 2 + + + Listening port + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 15 + + + Fill + + + 3, 3 + + + 967, 549 + + + 6 + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage1 + + + 0 + + + 4, 25 + + + 3, 3, 3, 3 + + + 973, 555 + + + 0 + + + Core: basic settings + + + tabPage1 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + tabControl1 - - Advanced proxy settings, protocol selection (optional) + + 0 AsIs - + + UseIP + + + UseIPv4 + + + UseIPv6 + + + 223, 398 + + + 100, 23 + + + 41 + + + cmbdomainStrategy4Freedom + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 0 + + + True + + + NoControl + + + 8, 402 + + + 255, 15 + + + 42 + + + Outbound Freedom domainStrategy + + + label19 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + tabPage2 + + + 1 + + + True + + NoControl + + 342, 17 + + + 0, 0, 0, 0 + + + 143, 15 + + + 40 + + + Support DnsObject + + + linkDnsObjectDoc + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 2 + + + 8, 41 + + + True + + + Vertical + + + 638, 349 + + + 39 + + + txtremoteDNS + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 3 + + + True + + + NoControl + + + 8, 17 + + + 375, 15 + + + 38 + + + Custom DNS (multiple, separated by commas (,)) + + + label14 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage2 + + + 4 + + + 4, 25 + + + 973, 555 + + + 4 + + + Core: DNS settings + + + tabPage2 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 1 + + + True + + + 20, 143 + + + 109, 19 + + + 20 + + + congestion + + + chkKcpcongestion + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 0 + + + 345, 100 + + + 94, 25 + + + 15 + + + txtKcpwriteBufferSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 1 + + + True + + + 236, 104 + + + 127, 15 + + + 14 + + + writeBufferSize + + + label10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 2 + + + 111, 100 + + + 94, 25 + + + 13 + + + txtKcpreadBufferSize + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 3 + + + True + + + 18, 104 + + + 119, 15 + + + 12 + + + readBufferSize + + + label11 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 4 + + + 345, 62 + + + 94, 25 + + + 11 + + + txtKcpdownlinkCapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 5 + + + True + + + 236, 66 + + + 135, 15 + + + 10 + + + downlinkCapacity + + + label8 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 6 + + + 111, 62 + + + 94, 25 + + + 9 + + + txtKcpuplinkCapacity + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 7 + + + True + + + 18, 66 + + + 119, 15 + + + 8 + + + uplinkCapacity + + + label9 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 8 + + + 345, 24 + + + 94, 25 + + + 7 + + + txtKcptti + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 9 + + + True + + + 236, 28 + + + 31, 15 + + + 6 + + + tti + + + label7 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 10 + + + 111, 24 + + + 94, 25 + + + 5 + + + txtKcpmtu + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 11 + + + True + + + 18, 28 + + + 31, 15 + + + 4 + + + mtu + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage6 + + + 12 + + + 4, 25 + + + 3, 3, 3, 3 + + + 973, 555 + + + 2 + + + Core: KCP settings + tabPage6 + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 2 + + + 663, 37 + + + 62, 25 + + + 47 + + + numStatisticsFreshRate + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 0 + + + 339, 222 + + + 97, 25 + + + 45 + + + txttrayMenuServersLimit + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 1 + + + True + + + NoControl + + + 15, 226 + + + 351, 15 + + + 44 + + + Tray right-click menu servers display limit + + + label17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 2 + + + 339, 195 + + + 97, 25 + + + 43 + + + txtautoUpdateSubInterval + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 3 + + + True + + + NoControl + + + 15, 199 + + + 407, 15 + + + 42 + + + Automatic update interval of subscriptions (hours) + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 4 + + + NoControl + + + 15, 153 + + + 506, 16 + + + 41 + + + Check for pre-release updates + + + chkEnableCheckPreReleaseUpdate + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 5 + + + 15, 131 + + + 506, 16 + + + 41 + + + Enable Security Protocol TLS v1.3 (subscription/update/speedtest) + + + chkEnableSecurityProtocolTls13 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 6 + + + True + + + NoControl + + + 15, 108 + + + 517, 19 + + + 40 + + + Automatically adjust column width after updating subscription + + + chkEnableAutoAdjustMainLvColWidth + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 7 + + + NoControl + + + 30, 376 + + + 282, 23 + + + 39 + + + Set Windows10 UWP Loopback + + + btnSetLoopback + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 8 + + + 339, 168 + + + 97, 25 + + + 38 + + + txtautoUpdateInterval + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 9 + + + True + + + NoControl + + + 15, 172 + + + 359, 15 + + + 37 + + + Automatic update interval of and Geo (hours) + + + label15 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 10 + + + True + + + NoControl + + + 15, 85 + + + 309, 19 + + + 36 + + + Ignore Geo files when updating core + + + chkIgnoreGeoUpdateCore + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 11 + + + True + + + NoControl + + + 15, 62 + + + 261, 19 + + + 33 + + + Keep older when deduplication + + + chkKeepOlderDedupl + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 12 + + + True + + + NoControl + + + 479, 41 + + + 239, 15 + + + 30 + + + Statistics freshrate (second) + + + lbFreshrate + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 13 + + + True + + + NoControl + + + 15, 39 + + + 621, 19 + + + 29 + + + Enable Statistics (Realtime netspeed and traffic records. Require restart) + + + chkEnableStatistics + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 14 + + + True + + + 15, 16 + + + 325, 19 + + + 23 + + + Automatically start at system startup + + + chkAutoRun + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage7 + + + 15 + + + 4, 25 + + + 3, 3, 3, 3 + + + 973, 555 + + + 3 + + + v2rayN settings + + + tabPage7 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 3 + + + 117, 172 + + + 143, 23 + + + 46 + + + cmbCoreType6 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 0 + + + True + + + NoControl + + + 45, 176 + + + 79, 15 + + + 47 + + + Core Type + + + labCoreType6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + 1 - + + 117, 146 + + + 143, 23 + + + 44 + + + cmbCoreType5 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 2 + + + True + + + NoControl + + + 45, 150 + + + 79, 15 + + + 45 + + + Core Type + + + labCoreType5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 3 + + + 117, 120 + + + 143, 23 + + + 42 + + + cmbCoreType4 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 4 + + + True + + + NoControl + + + 45, 124 + + + 79, 15 + + + 43 + + + Core Type + + + labCoreType4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 5 + + + 117, 94 + + + 143, 23 + + + 40 + + + cmbCoreType3 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 6 + + + True + + + NoControl + + + 45, 98 + + + 79, 15 + + + 41 + + + Core Type + + + labCoreType3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 7 + + + 117, 68 + + + 143, 23 + + + 38 + + + cmbCoreType2 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 8 + + + True + + + NoControl + + + 45, 72 + + + 79, 15 + + + 39 + + + Core Type + + + labCoreType2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 9 + + + 117, 42 + + + 143, 23 + + + 36 + + + cmbCoreType1 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 10 + + + True + + + NoControl + + + 45, 46 + + + 79, 15 + + + 37 + + + Core Type + + + labCoreType1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageCoreType + + + 11 + + + 4, 25 + + + 3, 3, 3, 3 + + + 973, 555 + + + 6 + + + CoreType settings + + + tabPageCoreType + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 4 + + + True + + + NoControl + + + 8, 346 + + + 439, 15 + + + 45 + + + Advanced proxy settings, protocol selection (optional) + + + label18 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + 8, 371 + + + 638, 23 + + + 44 + + + cmbSystemProxyAdvancedProtocol + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + + + True + + + NoControl + + + 6, 283 + + + 143, 15 + + + 42 + + + Use semicolon (;) + + + label13 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 2 + + + True + + + NoControl + + + 8, 28 + + + 423, 15 + + + 40 + + + Do not use proxy server for addresses beginning with + + + label12 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 3 + + + 8, 52 + + + True + + + Vertical + + + 638, 219 + + + 41 + + + txtsystemProxyExceptions + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 4 + + + Fill + + + 0, 0 + + + 973, 555 + + + 42 + + + Exception + + + groupBox2 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPage3 + + + 0 + + + 4, 25 + + + 973, 555 + + + 5 + + + System proxy settings + + + tabPage3 + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabControl1 + + + 5 + + + Fill + + + 0, 10 + + + 981, 584 + + + 10 + + + tabControl1 + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + 267, 16 + + + 75, 23 + + + 8 + + + &OK + + + btnOK + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel2 + + + 1 + + + Bottom + + + 0, 594 + + + 981, 60 + + + 11 + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + Top + + + 0, 0 + + + 981, 10 + + + 9 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + 2 True + + 8, 15 + + + 981, 654 + + + 5, 5, 5, 5 + + + Settings + + + OptionSettingForm + + + 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/OptionSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx index 20b1d8f5..09aed75f 100644 --- a/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/OptionSettingForm.zh-Hans.resx @@ -388,4 +388,7 @@ 参数设置 + + 检查Pre-Release更新 + \ No newline at end of file diff --git a/v2rayN/v2rayN/Handler/LazyConfig.cs b/v2rayN/v2rayN/Handler/LazyConfig.cs index 890123cd..c8671cd5 100644 --- a/v2rayN/v2rayN/Handler/LazyConfig.cs +++ b/v2rayN/v2rayN/Handler/LazyConfig.cs @@ -72,7 +72,7 @@ namespace v2rayN.Handler { coreType = ECoreType.v2rayN, coreUrl = Global.NUrl, - coreLatestUrl = Global.NUrl + "/latest", + coreReleaseApiUrl = Global.NUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.NUrl + "/download/{0}/v2rayN.zip", coreDownloadUrl64 = Global.NUrl + "/download/{0}/v2rayN.zip", }); @@ -83,7 +83,7 @@ namespace v2rayN.Handler coreExes = new List { "wv2ray", "v2ray" }, arguments = "", coreUrl = Global.v2flyCoreUrl, - coreLatestUrl = Global.v2flyCoreUrl + "/latest", + coreReleaseApiUrl = Global.v2flyCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip", coreDownloadUrl64 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip", match = "V2Ray", @@ -96,7 +96,7 @@ namespace v2rayN.Handler coreExes = new List { "v2ray" }, arguments = "run", coreUrl = Global.SagerNetCoreUrl, - coreLatestUrl = Global.SagerNetCoreUrl + "/latest", + coreReleaseApiUrl = Global.SagerNetCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.SagerNetCoreUrl + "/download/{0}/v2ray-windows-{1}.zip", coreDownloadUrl64 = Global.SagerNetCoreUrl + "/download/{0}/v2ray-windows-{1}.zip", match = "V2Ray", @@ -109,7 +109,7 @@ namespace v2rayN.Handler coreExes = new List { "xray" }, arguments = "", coreUrl = Global.xrayCoreUrl, - coreLatestUrl = Global.xrayCoreUrl + "/latest", + coreReleaseApiUrl = Global.xrayCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip", coreDownloadUrl64 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip", match = "Xray", @@ -122,7 +122,7 @@ namespace v2rayN.Handler coreExes = new List { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" }, arguments = "-f config.json", coreUrl = Global.clashCoreUrl, - coreLatestUrl = Global.clashCoreUrl + "/latest", + coreReleaseApiUrl = Global.clashCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.clashCoreUrl + "/download/{0}/clash-windows-386-{0}.zip", coreDownloadUrl64 = Global.clashCoreUrl + "/download/{0}/clash-windows-amd64-{0}.zip", match = "v", @@ -135,7 +135,7 @@ namespace v2rayN.Handler coreExes = new List { "Clash.Meta-windows-amd64-compatible", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" }, arguments = "-f config.json", coreUrl = Global.clashMetaCoreUrl, - coreLatestUrl = Global.clashMetaCoreUrl + "/latest", + coreReleaseApiUrl = Global.clashMetaCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-386-{0}.zip", coreDownloadUrl64 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-amd64-compatible-{0}.zip", match = "v", @@ -148,7 +148,7 @@ namespace v2rayN.Handler coreExes = new List { "hysteria-tun-windows-6.0-amd64", "hysteria-tun-windows-6.0-386", "hysteria" }, arguments = "", coreUrl = Global.hysteriaCoreUrl, - coreLatestUrl = Global.hysteriaCoreUrl + "/latest", + coreReleaseApiUrl = Global.hysteriaCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"), coreDownloadUrl32 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-386.exe", coreDownloadUrl64 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-amd64.exe", }); diff --git a/v2rayN/v2rayN/Handler/UpdateHandle.cs b/v2rayN/v2rayN/Handler/UpdateHandle.cs index cf430a01..4e56f3ad 100644 --- a/v2rayN/v2rayN/Handler/UpdateHandle.cs +++ b/v2rayN/v2rayN/Handler/UpdateHandle.cs @@ -1,11 +1,14 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; +using Newtonsoft.Json; using v2rayN.Base; using v2rayN.Mode; using v2rayN.Resx; @@ -31,7 +34,7 @@ namespace v2rayN.Handler } } - public void CheckUpdateGuiN(Config config, Action update) + public void CheckUpdateGuiN(Config config, Action update, bool preRelease) { _config = config; _updateFunc = update; @@ -97,11 +100,11 @@ namespace v2rayN.Handler } }; _updateFunc(false, string.Format(ResUI.MsgStartUpdating, "v2rayN")); - CheckUpdateAsync(ECoreType.v2rayN); + CheckUpdateAsync(ECoreType.v2rayN, preRelease); } - public void CheckUpdateCore(ECoreType type, Config config, Action update) + public void CheckUpdateCore(ECoreType type, Config config, Action update, bool preRelease) { _config = config; _updateFunc = update; @@ -152,7 +155,7 @@ namespace v2rayN.Handler } }; _updateFunc(false, string.Format(ResUI.MsgStartUpdating, "Core")); - CheckUpdateAsync(type); + CheckUpdateAsync(type, preRelease); } @@ -305,17 +308,17 @@ namespace v2rayN.Handler #region private - private async void CheckUpdateAsync(ECoreType type) + private async void CheckUpdateAsync(ECoreType type, bool preRelease) { try { var coreInfo = LazyConfig.Instance.GetCoreInfo(type); - string url = coreInfo.coreLatestUrl; + string url = coreInfo.coreReleaseApiUrl; - var result = await (new DownloadHandle()).UrlRedirectAsync(url, true); + var result = await (new DownloadHandle()).DownloadStringAsync(url, true, ""); if (!Utils.IsNullOrEmpty(result)) { - responseHandler(type, result); + responseHandler(type, result, preRelease); } else { @@ -391,11 +394,20 @@ namespace v2rayN.Handler return ""; } } - private void responseHandler(ECoreType type, string redirectUrl) + private void responseHandler(ECoreType type, string gitHubReleaseApi, bool preRelease) { try { - string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1); + var gitHubReleases = JsonConvert.DeserializeObject>(gitHubReleaseApi); + string version; + if (preRelease) + { + version = gitHubReleases!.First().TagName; + } + else + { + version = gitHubReleases!.First(r => r.Prerelease == false).TagName; + } var coreInfo = LazyConfig.Instance.GetCoreInfo(type); string curVersion; diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs index b498ef18..4397c1fa 100644 --- a/v2rayN/v2rayN/Mode/Config.cs +++ b/v2rayN/v2rayN/Mode/Config.cs @@ -137,6 +137,8 @@ namespace v2rayN.Mode public int autoUpdateInterval { get; set; } = 0; public int autoUpdateSubInterval { get; set; } = 0; + + public bool checkPreReleaseUpdate { get; set; } = false; public bool enableSecurityProtocolTls13 { diff --git a/v2rayN/v2rayN/Mode/CoreInfo.cs b/v2rayN/v2rayN/Mode/CoreInfo.cs index c47bc709..29a9d756 100644 --- a/v2rayN/v2rayN/Mode/CoreInfo.cs +++ b/v2rayN/v2rayN/Mode/CoreInfo.cs @@ -14,7 +14,7 @@ namespace v2rayN.Mode public string coreUrl { get; set; } - public string coreLatestUrl { get; set; } + public string coreReleaseApiUrl { get; set; } public string coreDownloadUrl32 { get; set; } diff --git a/v2rayN/v2rayN/Mode/GitHubRelease.cs b/v2rayN/v2rayN/Mode/GitHubRelease.cs new file mode 100644 index 00000000..9296d991 --- /dev/null +++ b/v2rayN/v2rayN/Mode/GitHubRelease.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace v2rayN.Mode; + +public class Asset +{ + [JsonProperty("url")] public string Url { get; set; } + + [JsonProperty("id")] public int Id { get; set; } + + [JsonProperty("node_id")] public string NodeId { get; set; } + + [JsonProperty("name")] public string Name { get; set; } + + [JsonProperty("label")] public object Label { get; set; } + + [JsonProperty("content_type")] public string ContentType { get; set; } + + [JsonProperty("state")] public string State { get; set; } + + [JsonProperty("size")] public int Size { get; set; } + + [JsonProperty("download_count")] public int DownloadCount { get; set; } + + [JsonProperty("created_at")] public DateTime CreatedAt { get; set; } + + [JsonProperty("updated_at")] public DateTime UpdatedAt { get; set; } + + [JsonProperty("browser_download_url")] public string BrowserDownloadUrl { get; set; } +} + +public class GitHubRelease +{ + [JsonProperty("url")] public string Url { get; set; } + + [JsonProperty("assets_url")] public string AssetsUrl { get; set; } + + [JsonProperty("upload_url")] public string UploadUrl { get; set; } + + [JsonProperty("html_url")] public string HtmlUrl { get; set; } + + [JsonProperty("id")] public int Id { get; set; } + + [JsonProperty("node_id")] public string NodeId { get; set; } + + [JsonProperty("tag_name")] public string TagName { get; set; } + + [JsonProperty("target_commitish")] public string TargetCommitish { get; set; } + + [JsonProperty("name")] public string Name { get; set; } + + [JsonProperty("draft")] public bool Draft { get; set; } + + [JsonProperty("prerelease")] public bool Prerelease { get; set; } + + [JsonProperty("created_at")] public DateTime CreatedAt { get; set; } + + [JsonProperty("published_at")] public DateTime PublishedAt { get; set; } + + [JsonProperty("assets")] public List Assets { get; set; } + + [JsonProperty("tarball_url")] public string TarballUrl { get; set; } + + [JsonProperty("zipball_url")] public string ZipballUrl { get; set; } + + [JsonProperty("body")] public string Body { get; set; } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj index 10d89345..95273060 100644 --- a/v2rayN/v2rayN/v2rayN.csproj +++ b/v2rayN/v2rayN/v2rayN.csproj @@ -2,6 +2,7 @@ + preview Debug AnyCPU {0A9785E6-D256-4B73-9757-4EF59955FD1E} @@ -209,6 +210,7 @@ +