Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ec0607fec | ||
|
|
aa41a8675e | ||
|
|
19f9bff6fe | ||
|
|
4e65732a4e | ||
|
|
47c843bf09 | ||
|
|
a7741a0b7d | ||
|
|
6f3fbdfe17 | ||
|
|
3be93df63f | ||
|
|
6259539c87 | ||
|
|
9654009650 | ||
|
|
62e796cf5a | ||
|
|
af820bb0f2 | ||
|
|
8f5bb3591b | ||
|
|
7eafae98d4 | ||
|
|
1d4e5baafb | ||
|
|
9894aa053f | ||
|
|
4ada8fea27 | ||
|
|
4d013a206b | ||
|
|
2d8a707bed |
@@ -162,7 +162,7 @@ namespace v2rayN.Base
|
||||
}
|
||||
}
|
||||
|
||||
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<double> progress, CancellationToken token)
|
||||
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<string> progress, CancellationToken token)
|
||||
{
|
||||
if (string.IsNullOrEmpty(url))
|
||||
{
|
||||
@@ -176,15 +176,15 @@ namespace v2rayN.Base
|
||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
||||
}
|
||||
|
||||
var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||
var canReportProgress = total != -1 && progress != null;
|
||||
//var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||
//var canReportProgress = total != -1 && progress != null;
|
||||
|
||||
using (var stream = await response.Content.ReadAsStreamAsync())
|
||||
{
|
||||
var totalRead = 0L;
|
||||
var buffer = new byte[1024 * 64];
|
||||
var isMoreToRead = true;
|
||||
var progressPercentage = 0;
|
||||
string progressSpeed = string.Empty;
|
||||
DateTime totalDatetime = DateTime.Now;
|
||||
|
||||
do
|
||||
@@ -215,14 +215,13 @@ namespace v2rayN.Base
|
||||
// TODO:
|
||||
totalRead += read;
|
||||
|
||||
if (canReportProgress)
|
||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||
var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
|
||||
if (progress != null)
|
||||
{
|
||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||
var speed = totalRead * 1d / ts.TotalMilliseconds / 1000;
|
||||
var percent = Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100);
|
||||
if (progressPercentage != percent)
|
||||
if (progressSpeed != speed)
|
||||
{
|
||||
progressPercentage = percent;
|
||||
progressSpeed = speed;
|
||||
progress.Report(speed);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ namespace v2rayN.Forms
|
||||
return;
|
||||
}
|
||||
|
||||
address = Path.Combine(Utils.GetConfigPath(), address);
|
||||
address = Utils.GetConfigPath(address);
|
||||
Process.Start(address);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ namespace v2rayN.Forms
|
||||
public partial class BaseForm : Form
|
||||
{
|
||||
protected static Config config;
|
||||
protected static System.Drawing.Icon icon;
|
||||
|
||||
public BaseForm()
|
||||
{
|
||||
@@ -19,16 +18,14 @@ namespace v2rayN.Forms
|
||||
{
|
||||
try
|
||||
{
|
||||
if (icon == null)
|
||||
string file = Utils.GetPath(Global.CustomIconName);
|
||||
if (System.IO.File.Exists(file))
|
||||
{
|
||||
string file = Utils.GetPath(Global.CustomIconName);
|
||||
if (!System.IO.File.Exists(file))
|
||||
{
|
||||
return;
|
||||
}
|
||||
icon = new System.Drawing.Icon(file);
|
||||
this.Icon = new System.Drawing.Icon(file);
|
||||
return;
|
||||
}
|
||||
this.Icon = icon;
|
||||
|
||||
this.Icon = Properties.Resources.NotifyIcon1;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -345,7 +345,7 @@ namespace v2rayN.Forms
|
||||
{
|
||||
menuServers.DropDownItems.Clear();
|
||||
|
||||
if (lstVmess.Count > 30)
|
||||
if (lstVmess.Count > config.trayMenuServersLimit)
|
||||
{
|
||||
menuServers.DropDownItems.Add(new ToolStripMenuItem(ResUI.TooManyServersTip));
|
||||
return;
|
||||
@@ -1273,7 +1273,7 @@ namespace v2rayN.Forms
|
||||
|
||||
mainMsgControl.DisplayToolStatus(config);
|
||||
|
||||
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||
notifyMain.Icon = this.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
1
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
1
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
@@ -61,6 +61,7 @@ namespace v2rayN.Forms
|
||||
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
||||
this.txtMsgBox.Name = "txtMsgBox";
|
||||
this.txtMsgBox.ReadOnly = true;
|
||||
this.txtMsgBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMsgBox_KeyDown);
|
||||
//
|
||||
// cmsMsgBox
|
||||
//
|
||||
|
||||
@@ -375,9 +375,6 @@
|
||||
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>131, 18</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>zh-Hans</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
||||
@@ -166,4 +166,7 @@
|
||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
||||
<value>信息</value>
|
||||
</data>
|
||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||
<value>网速显示未启用</value>
|
||||
</data>
|
||||
</root>
|
||||
73
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
73
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -68,6 +68,8 @@
|
||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox();
|
||||
@@ -96,6 +98,8 @@
|
||||
this.labCoreType1 = new System.Windows.Forms.Label();
|
||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.label18 = new System.Windows.Forms.Label();
|
||||
this.cmbSystemProxyAdvancedProtocol = new System.Windows.Forms.ComboBox();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.txtsystemProxyExceptions = new System.Windows.Forms.TextBox();
|
||||
@@ -116,34 +120,33 @@
|
||||
//
|
||||
// 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);
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Controls.Add(this.tabPage6);
|
||||
this.tabControl1.Controls.Add(this.tabPage7);
|
||||
this.tabControl1.Controls.Add(this.tabPageCoreType);
|
||||
this.tabControl1.Controls.Add(this.tabPage3);
|
||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Controls.Add(this.groupBox1);
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.label16);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.Controls.Add(this.txtpass);
|
||||
@@ -160,6 +163,7 @@
|
||||
this.groupBox1.Controls.Add(this.label5);
|
||||
this.groupBox1.Controls.Add(this.txtlocalPort);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
@@ -209,8 +213,8 @@
|
||||
//
|
||||
// cmbprotocol
|
||||
//
|
||||
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
||||
this.cmbprotocol.FormattingEnabled = true;
|
||||
this.cmbprotocol.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbprotocol.Items"),
|
||||
@@ -236,7 +240,6 @@
|
||||
//
|
||||
// cmbloglevel
|
||||
//
|
||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
||||
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbloglevel.FormattingEnabled = true;
|
||||
this.cmbloglevel.Items.AddRange(new object[] {
|
||||
@@ -245,6 +248,7 @@
|
||||
resources.GetString("cmbloglevel.Items2"),
|
||||
resources.GetString("cmbloglevel.Items3"),
|
||||
resources.GetString("cmbloglevel.Items4")});
|
||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
||||
this.cmbloglevel.Name = "cmbloglevel";
|
||||
//
|
||||
// label5
|
||||
@@ -264,10 +268,10 @@
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
||||
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
||||
this.tabPage2.Controls.Add(this.label14);
|
||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -290,7 +294,6 @@
|
||||
//
|
||||
// tabPage6
|
||||
//
|
||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
||||
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
||||
this.tabPage6.Controls.Add(this.label10);
|
||||
@@ -304,6 +307,7 @@
|
||||
this.tabPage6.Controls.Add(this.label7);
|
||||
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
||||
this.tabPage6.Controls.Add(this.label6);
|
||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||
this.tabPage6.Name = "tabPage6";
|
||||
this.tabPage6.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -375,7 +379,8 @@
|
||||
//
|
||||
// tabPage7
|
||||
//
|
||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
|
||||
this.tabPage7.Controls.Add(this.label17);
|
||||
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
|
||||
this.tabPage7.Controls.Add(this.label3);
|
||||
this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13);
|
||||
@@ -389,9 +394,20 @@
|
||||
this.tabPage7.Controls.Add(this.lbFreshrate);
|
||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||
this.tabPage7.Name = "tabPage7";
|
||||
this.tabPage7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// txttrayMenuServersLimit
|
||||
//
|
||||
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
|
||||
this.txttrayMenuServersLimit.Name = "txttrayMenuServersLimit";
|
||||
//
|
||||
// label17
|
||||
//
|
||||
resources.ApplyResources(this.label17, "label17");
|
||||
this.label17.Name = "label17";
|
||||
//
|
||||
// txtautoUpdateSubInterval
|
||||
//
|
||||
resources.ApplyResources(this.txtautoUpdateSubInterval, "txtautoUpdateSubInterval");
|
||||
@@ -445,9 +461,9 @@
|
||||
//
|
||||
// cbFreshrate
|
||||
//
|
||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
||||
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbFreshrate.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
||||
this.cbFreshrate.Name = "cbFreshrate";
|
||||
//
|
||||
// lbFreshrate
|
||||
@@ -469,7 +485,6 @@
|
||||
//
|
||||
// tabPageCoreType
|
||||
//
|
||||
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
|
||||
this.tabPageCoreType.Controls.Add(this.labCoreType6);
|
||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
|
||||
@@ -482,14 +497,15 @@
|
||||
this.tabPageCoreType.Controls.Add(this.labCoreType2);
|
||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
|
||||
this.tabPageCoreType.Controls.Add(this.labCoreType1);
|
||||
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
||||
this.tabPageCoreType.Name = "tabPageCoreType";
|
||||
this.tabPageCoreType.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cmbCoreType6
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
||||
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType6.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
||||
this.cmbCoreType6.Name = "cmbCoreType6";
|
||||
//
|
||||
// labCoreType6
|
||||
@@ -499,9 +515,9 @@
|
||||
//
|
||||
// cmbCoreType5
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
||||
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType5.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
||||
this.cmbCoreType5.Name = "cmbCoreType5";
|
||||
//
|
||||
// labCoreType5
|
||||
@@ -511,9 +527,9 @@
|
||||
//
|
||||
// cmbCoreType4
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
||||
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType4.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
||||
this.cmbCoreType4.Name = "cmbCoreType4";
|
||||
//
|
||||
// labCoreType4
|
||||
@@ -523,9 +539,9 @@
|
||||
//
|
||||
// cmbCoreType3
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
||||
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType3.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
||||
this.cmbCoreType3.Name = "cmbCoreType3";
|
||||
//
|
||||
// labCoreType3
|
||||
@@ -535,9 +551,9 @@
|
||||
//
|
||||
// cmbCoreType2
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
||||
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType2.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
||||
this.cmbCoreType2.Name = "cmbCoreType2";
|
||||
//
|
||||
// labCoreType2
|
||||
@@ -547,9 +563,9 @@
|
||||
//
|
||||
// cmbCoreType1
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
||||
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType1.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
||||
this.cmbCoreType1.Name = "cmbCoreType1";
|
||||
//
|
||||
// labCoreType1
|
||||
@@ -559,20 +575,33 @@
|
||||
//
|
||||
// tabPage3
|
||||
//
|
||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
||||
this.tabPage3.Controls.Add(this.groupBox2);
|
||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Controls.Add(this.label18);
|
||||
this.groupBox2.Controls.Add(this.cmbSystemProxyAdvancedProtocol);
|
||||
this.groupBox2.Controls.Add(this.label13);
|
||||
this.groupBox2.Controls.Add(this.label12);
|
||||
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
// label18
|
||||
//
|
||||
resources.ApplyResources(this.label18, "label18");
|
||||
this.label18.Name = "label18";
|
||||
//
|
||||
// cmbSystemProxyAdvancedProtocol
|
||||
//
|
||||
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
|
||||
this.cmbSystemProxyAdvancedProtocol.Name = "cmbSystemProxyAdvancedProtocol";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
resources.ApplyResources(this.label13, "label13");
|
||||
@@ -590,9 +619,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
|
||||
@@ -713,5 +742,9 @@
|
||||
private System.Windows.Forms.TextBox txtuser;
|
||||
private System.Windows.Forms.TextBox txtautoUpdateSubInterval;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txttrayMenuServersLimit;
|
||||
private System.Windows.Forms.Label label17;
|
||||
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
|
||||
private System.Windows.Forms.Label label18;
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,8 @@ namespace v2rayN.Forms
|
||||
|
||||
private void OptionSettingForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
|
||||
|
||||
InitBase();
|
||||
|
||||
InitKCP();
|
||||
@@ -58,6 +60,8 @@ namespace v2rayN.Forms
|
||||
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
||||
|
||||
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
||||
|
||||
cmbSystemProxyAdvancedProtocol.Text = config.systemProxyAdvancedProtocol;
|
||||
}
|
||||
|
||||
|
||||
@@ -111,10 +115,12 @@ namespace v2rayN.Forms
|
||||
}
|
||||
|
||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
||||
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
||||
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
||||
|
||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
||||
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
||||
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
||||
}
|
||||
|
||||
private void InitCoreType()
|
||||
@@ -251,6 +257,8 @@ namespace v2rayN.Forms
|
||||
|
||||
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
||||
|
||||
config.systemProxyAdvancedProtocol = cmbSystemProxyAdvancedProtocol.Text.TrimEx();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -305,11 +313,12 @@ namespace v2rayN.Forms
|
||||
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
||||
|
||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
||||
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
||||
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
||||
config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.Checked;
|
||||
|
||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
||||
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
||||
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -339,6 +348,6 @@ namespace v2rayN.Forms
|
||||
{
|
||||
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -121,15 +121,120 @@
|
||||
<value>取消(&C)</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>662, 469</value>
|
||||
</data>
|
||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value> Core:基础设置 </value>
|
||||
</data>
|
||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage2.Text" xml:space="preserve">
|
||||
<value> Core:DNS设置 </value>
|
||||
</data>
|
||||
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage6.Text" xml:space="preserve">
|
||||
<value> Core:KCP设置 </value>
|
||||
</data>
|
||||
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>248, 211</value>
|
||||
</data>
|
||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>185, 12</value>
|
||||
</data>
|
||||
<data name="label17.Text" xml:space="preserve">
|
||||
<value>托盘右键菜单服务器展示数量限制</value>
|
||||
</data>
|
||||
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>248, 184</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>173, 12</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>自动更新订阅的间隔(单位小时)</value>
|
||||
</data>
|
||||
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
||||
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
||||
</data>
|
||||
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>204, 16</value>
|
||||
</data>
|
||||
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
||||
<value>自动调整服务器列宽在更新订阅后</value>
|
||||
</data>
|
||||
<data name="btnSetLoopback.Text" xml:space="preserve">
|
||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
||||
</data>
|
||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>248, 157</value>
|
||||
</data>
|
||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>191, 12</value>
|
||||
</data>
|
||||
<data name="label15.Text" xml:space="preserve">
|
||||
<value>自动更新Geo文件的间隔(单位小时)</value>
|
||||
</data>
|
||||
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 16</value>
|
||||
</data>
|
||||
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
||||
<value>更新Core时忽略Geo文件</value>
|
||||
</data>
|
||||
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>156, 16</value>
|
||||
</data>
|
||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||
<value>去重时保留序号较小的项</value>
|
||||
</data>
|
||||
<data name="cbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>431, 37</value>
|
||||
</data>
|
||||
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>339, 41</value>
|
||||
</data>
|
||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>77, 12</value>
|
||||
</data>
|
||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
||||
<value>统计刷新频率</value>
|
||||
</data>
|
||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 16</value>
|
||||
</data>
|
||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
|
||||
</data>
|
||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 16</value>
|
||||
</data>
|
||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
||||
<value>开机自动启动(可能会不成功)</value>
|
||||
</data>
|
||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage7.Text" xml:space="preserve">
|
||||
<value> v2rayN设置 </value>
|
||||
</data>
|
||||
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPageCoreType.Text" xml:space="preserve">
|
||||
<value> Core类型设置 </value>
|
||||
</data>
|
||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage3.Text" xml:space="preserve">
|
||||
<value> 系统代理设置 </value>
|
||||
</data>
|
||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>662, 469</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>648, 437</value>
|
||||
</data>
|
||||
@@ -220,12 +325,6 @@
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>本地监听端口</value>
|
||||
</data>
|
||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage2.Text" xml:space="preserve">
|
||||
<value> Core:DNS设置 </value>
|
||||
</data>
|
||||
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>161, 12</value>
|
||||
</data>
|
||||
@@ -238,90 +337,6 @@
|
||||
<data name="label14.Text" xml:space="preserve">
|
||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||
</data>
|
||||
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage6.Text" xml:space="preserve">
|
||||
<value> Core:KCP设置 </value>
|
||||
</data>
|
||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage7.Text" xml:space="preserve">
|
||||
<value> v2rayN设置 </value>
|
||||
</data>
|
||||
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>248, 159</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>173, 12</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>自动更新订阅的间隔(单位小时)</value>
|
||||
</data>
|
||||
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
||||
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
||||
</data>
|
||||
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>204, 16</value>
|
||||
</data>
|
||||
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
||||
<value>自动调整服务器列宽在更新订阅后</value>
|
||||
</data>
|
||||
<data name="btnSetLoopback.Text" xml:space="preserve">
|
||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
||||
</data>
|
||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>248, 134</value>
|
||||
</data>
|
||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>191, 12</value>
|
||||
</data>
|
||||
<data name="label15.Text" xml:space="preserve">
|
||||
<value>自动更新Geo文件的间隔(单位小时)</value>
|
||||
</data>
|
||||
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 16</value>
|
||||
</data>
|
||||
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
||||
<value>更新Core时忽略Geo文件</value>
|
||||
</data>
|
||||
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>156, 16</value>
|
||||
</data>
|
||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||
<value>去重时保留序号较小的项</value>
|
||||
</data>
|
||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>77, 12</value>
|
||||
</data>
|
||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
||||
<value>统计刷新频率</value>
|
||||
</data>
|
||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>372, 16</value>
|
||||
</data>
|
||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
||||
</data>
|
||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 16</value>
|
||||
</data>
|
||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
||||
<value>开机自动启动(可能会不成功)</value>
|
||||
</data>
|
||||
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPageCoreType.Text" xml:space="preserve">
|
||||
<value> Core类型设置 </value>
|
||||
</data>
|
||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage3.Text" xml:space="preserve">
|
||||
<value> 系统代理设置 </value>
|
||||
</data>
|
||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
@@ -358,4 +373,7 @@
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>参数设置</value>
|
||||
</data>
|
||||
<data name="label18.Text" xml:space="preserve">
|
||||
<value>高级代理设置, 协议选择(可选)</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -42,6 +42,7 @@
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
||||
this.panel4 = new System.Windows.Forms.Panel();
|
||||
this.chkAutoSort = new System.Windows.Forms.CheckBox();
|
||||
this.btnClose = new System.Windows.Forms.Button();
|
||||
this.btnOK = new System.Windows.Forms.Button();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
@@ -63,7 +64,6 @@
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
resources.ApplyResources(this.panel3, "panel3");
|
||||
this.panel3.Controls.Add(this.chkEnabled);
|
||||
this.panel3.Controls.Add(this.clbInboundTag);
|
||||
this.panel3.Controls.Add(this.label2);
|
||||
@@ -74,6 +74,7 @@
|
||||
this.panel3.Controls.Add(this.labRoutingTips);
|
||||
this.panel3.Controls.Add(this.label4);
|
||||
this.panel3.Controls.Add(this.cmbOutboundTag);
|
||||
resources.ApplyResources(this.panel3, "panel3");
|
||||
this.panel3.Name = "panel3";
|
||||
//
|
||||
// chkEnabled
|
||||
@@ -84,8 +85,8 @@
|
||||
//
|
||||
// clbInboundTag
|
||||
//
|
||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
||||
this.clbInboundTag.CheckOnClick = true;
|
||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
||||
this.clbInboundTag.FormattingEnabled = true;
|
||||
this.clbInboundTag.Items.AddRange(new object[] {
|
||||
resources.GetString("clbInboundTag.Items"),
|
||||
@@ -100,8 +101,8 @@
|
||||
//
|
||||
// clbProtocol
|
||||
//
|
||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
||||
this.clbProtocol.CheckOnClick = true;
|
||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
||||
this.clbProtocol.FormattingEnabled = true;
|
||||
this.clbProtocol.Items.AddRange(new object[] {
|
||||
resources.GetString("clbProtocol.Items"),
|
||||
@@ -127,8 +128,8 @@
|
||||
//
|
||||
// labRoutingTips
|
||||
//
|
||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
||||
this.labRoutingTips.Name = "labRoutingTips";
|
||||
//
|
||||
// label4
|
||||
@@ -138,26 +139,33 @@
|
||||
//
|
||||
// cmbOutboundTag
|
||||
//
|
||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
||||
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbOutboundTag.FormattingEnabled = true;
|
||||
this.cmbOutboundTag.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbOutboundTag.Items"),
|
||||
resources.GetString("cmbOutboundTag.Items1"),
|
||||
resources.GetString("cmbOutboundTag.Items2")});
|
||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
||||
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
||||
//
|
||||
// panel4
|
||||
//
|
||||
resources.ApplyResources(this.panel4, "panel4");
|
||||
this.panel4.Controls.Add(this.chkAutoSort);
|
||||
this.panel4.Controls.Add(this.btnClose);
|
||||
this.panel4.Controls.Add(this.btnOK);
|
||||
resources.ApplyResources(this.panel4, "panel4");
|
||||
this.panel4.Name = "panel4";
|
||||
//
|
||||
// chkAutoSort
|
||||
//
|
||||
resources.ApplyResources(this.chkAutoSort, "chkAutoSort");
|
||||
this.chkAutoSort.Name = "chkAutoSort";
|
||||
this.chkAutoSort.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// 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);
|
||||
@@ -171,15 +179,15 @@
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
resources.ApplyResources(this.panel2, "panel2");
|
||||
this.panel2.Controls.Add(this.groupBox2);
|
||||
this.panel2.Controls.Add(this.groupBox1);
|
||||
resources.ApplyResources(this.panel2, "panel2");
|
||||
this.panel2.Name = "panel2";
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Controls.Add(this.txtIP);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
@@ -190,8 +198,8 @@
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.txtDomain);
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
@@ -214,6 +222,7 @@
|
||||
this.panel3.ResumeLayout(false);
|
||||
this.panel3.PerformLayout();
|
||||
this.panel4.ResumeLayout(false);
|
||||
this.panel4.PerformLayout();
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
@@ -245,5 +254,6 @@
|
||||
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.CheckBox chkEnabled;
|
||||
private System.Windows.Forms.CheckBox chkAutoSort;
|
||||
}
|
||||
}
|
||||
@@ -48,8 +48,16 @@ namespace v2rayN.Forms
|
||||
}
|
||||
rulesItem.inboundTag = inboundTag;
|
||||
rulesItem.outboundTag = cmbOutboundTag.Text;
|
||||
rulesItem.domain = Utils.String2ListSorted(txtDomain.Text);
|
||||
rulesItem.ip = Utils.String2ListSorted(txtIP.Text);
|
||||
if (chkAutoSort.Checked)
|
||||
{
|
||||
rulesItem.domain = Utils.String2ListSorted(txtDomain.Text);
|
||||
rulesItem.ip = Utils.String2ListSorted(txtIP.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
rulesItem.domain = Utils.String2List(txtDomain.Text);
|
||||
rulesItem.ip = Utils.String2List(txtIP.Text);
|
||||
}
|
||||
|
||||
var protocol = new List<string>();
|
||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -170,4 +170,7 @@
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>路由规则详情设置</value>
|
||||
</data>
|
||||
<data name="chkAutoSort.Text" xml:space="preserve">
|
||||
<value>保存时Domain和IP自动排序</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -199,6 +199,13 @@ namespace v2rayN
|
||||
public const string StatisticLogOverall = "StatisticLogOverall.json";
|
||||
|
||||
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 static readonly List<string> IEProxyProtocols = new List<string> {
|
||||
"{ip}:{http_port}",
|
||||
"socks={ip}:{socks_port}",
|
||||
"http={ip}:{http_port};https={ip}:{http_port};ftp={ip}:{http_port};socks={ip}:{socks_port}",
|
||||
"http=http://{ip}:{http_port};https=http://{ip}:{http_port}",
|
||||
""
|
||||
};
|
||||
|
||||
public const string RoutingRuleComma = "<COMMA>";
|
||||
|
||||
|
||||
@@ -284,7 +284,17 @@ namespace v2rayN.Handler
|
||||
vmessItem.indexId = string.Empty;
|
||||
vmessItem.remarks = string.Format("{0}-clone", item.remarks);
|
||||
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
if (vmessItem.configType == EConfigType.Custom)
|
||||
{
|
||||
vmessItem.address = Utils.GetConfigPath(vmessItem.address);
|
||||
if (AddCustomServer(ref config, vmessItem, false) == 0)
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
}
|
||||
}
|
||||
|
||||
ToJsonFile(config);
|
||||
@@ -442,7 +452,7 @@ namespace v2rayN.Handler
|
||||
|
||||
try
|
||||
{
|
||||
File.Copy(fileName, Path.Combine(Utils.GetConfigPath(), newFileName));
|
||||
File.Copy(fileName, Utils.GetConfigPath(newFileName));
|
||||
if (blDelete)
|
||||
{
|
||||
File.Delete(fileName);
|
||||
@@ -940,14 +950,39 @@ namespace v2rayN.Handler
|
||||
vmessItem.address = fileName;
|
||||
vmessItem.remarks = "clash_custom";
|
||||
}
|
||||
//Is hysteria configuration
|
||||
else if (clipboardData.IndexOf("server") >= 0
|
||||
&& clipboardData.IndexOf("up") >= 0
|
||||
&& clipboardData.IndexOf("down") >= 0
|
||||
&& clipboardData.IndexOf("listen") >= 0)
|
||||
{
|
||||
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||
File.WriteAllText(fileName, clipboardData);
|
||||
|
||||
vmessItem.coreType = ECoreType.hysteria;
|
||||
vmessItem.address = fileName;
|
||||
vmessItem.remarks = "hysteria_custom";
|
||||
}
|
||||
//Is naiveproxy configuration
|
||||
else if (clipboardData.IndexOf("listen") >= 0
|
||||
&& clipboardData.IndexOf("proxy") >= 0)
|
||||
{
|
||||
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||
File.WriteAllText(fileName, clipboardData);
|
||||
|
||||
vmessItem.coreType = ECoreType.naiveproxy;
|
||||
vmessItem.address = fileName;
|
||||
vmessItem.remarks = "naiveproxy_custom";
|
||||
}
|
||||
//Is Other configuration
|
||||
else
|
||||
{
|
||||
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.txt");
|
||||
File.WriteAllText(fileName, clipboardData);
|
||||
return -1;
|
||||
//var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.txt");
|
||||
//File.WriteAllText(fileName, clipboardData);
|
||||
|
||||
vmessItem.address = fileName;
|
||||
vmessItem.remarks = "other_custom";
|
||||
//vmessItem.address = fileName;
|
||||
//vmessItem.remarks = "other_custom";
|
||||
}
|
||||
|
||||
if (!Utils.IsNullOrEmpty(subid))
|
||||
@@ -1206,6 +1241,10 @@ namespace v2rayN.Handler
|
||||
{
|
||||
config.routingIndex = 0;
|
||||
}
|
||||
if (config.trayMenuServersLimit <= 0)
|
||||
{
|
||||
config.trayMenuServersLimit = 30;
|
||||
}
|
||||
|
||||
Global.reloadV2ray = true;
|
||||
|
||||
|
||||
@@ -46,12 +46,12 @@ namespace v2rayN.Handler
|
||||
Proxy = webProxy
|
||||
});
|
||||
|
||||
var progress = new Progress<double>();
|
||||
var progress = new Progress<string>();
|
||||
progress.ProgressChanged += (sender, value) =>
|
||||
{
|
||||
if (UpdateCompleted != null)
|
||||
{
|
||||
string msg = string.Format("{0} M/s", value.ToString("#0.0")).PadLeft(9, ' ');
|
||||
string msg = string.Format("{0} M/s", value).PadLeft(9, ' ');
|
||||
UpdateCompleted(this, new ResultEventArgs(false, msg));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -32,12 +32,59 @@ namespace v2rayN.Handler
|
||||
{
|
||||
try
|
||||
{
|
||||
int index = (int)config.sysProxyType;
|
||||
|
||||
//Load from routing setting
|
||||
var createdIcon = GetNotifyIcon4Routing(config);
|
||||
if (createdIcon != null)
|
||||
{
|
||||
return createdIcon;
|
||||
}
|
||||
|
||||
//Load from local file
|
||||
var fileName = Utils.GetPath($"NotifyIcon{index + 1}.ico");
|
||||
if (File.Exists(fileName))
|
||||
{
|
||||
return new Icon(fileName);
|
||||
}
|
||||
switch (index)
|
||||
{
|
||||
case 0:
|
||||
return Properties.Resources.NotifyIcon1;
|
||||
case 1:
|
||||
return Properties.Resources.NotifyIcon2;
|
||||
case 2:
|
||||
return Properties.Resources.NotifyIcon3;
|
||||
}
|
||||
|
||||
return Properties.Resources.NotifyIcon1;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Utils.SaveLog(ex.Message, ex);
|
||||
return def;
|
||||
}
|
||||
}
|
||||
private Icon GetNotifyIcon4Routing(Config config)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!config.enableRoutingAdvanced)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var item = config.routings[config.routingIndex];
|
||||
if (Utils.IsNullOrEmpty(item.customIcon) || !File.Exists(item.customIcon))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
Color color = ColorTranslator.FromHtml("#3399CC");
|
||||
int index = (int)config.sysProxyType;
|
||||
if (index > 0)
|
||||
{
|
||||
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
||||
//color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]);
|
||||
}
|
||||
|
||||
int width = 128;
|
||||
@@ -47,24 +94,8 @@ namespace v2rayN.Handler
|
||||
Graphics graphics = Graphics.FromImage(bitmap);
|
||||
SolidBrush drawBrush = new SolidBrush(color);
|
||||
|
||||
var customIcon = false;
|
||||
if (config.enableRoutingAdvanced)
|
||||
{
|
||||
var item = config.routings[config.routingIndex];
|
||||
if (!Utils.IsNullOrEmpty(item.customIcon) && File.Exists(item.customIcon))
|
||||
{
|
||||
graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
||||
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
|
||||
customIcon = true;
|
||||
}
|
||||
}
|
||||
if (!customIcon)
|
||||
{
|
||||
graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height));
|
||||
int zoom = 16;
|
||||
graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2);
|
||||
}
|
||||
|
||||
graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
||||
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
|
||||
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
||||
|
||||
drawBrush.Dispose();
|
||||
@@ -76,7 +107,7 @@ namespace v2rayN.Handler
|
||||
catch (Exception ex)
|
||||
{
|
||||
Utils.SaveLog(ex.Message, ex);
|
||||
return def;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ namespace v2rayN.Handler
|
||||
try
|
||||
{
|
||||
int port = config.GetLocalPort(Global.InboundHttp);
|
||||
int portSocks = config.GetLocalPort(Global.InboundSocks);
|
||||
if (port <= 0)
|
||||
{
|
||||
return false;
|
||||
@@ -67,7 +68,20 @@ namespace v2rayN.Handler
|
||||
if (type == ESysProxyType.ForcedChange)
|
||||
{
|
||||
var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
|
||||
SetIEProxy(true, $"{Global.Loopback}:{port}", strExceptions);
|
||||
|
||||
var strProxy = string.Empty;
|
||||
if (Utils.IsNullOrEmpty(config.systemProxyAdvancedProtocol))
|
||||
{
|
||||
strProxy = $"{Global.Loopback}:{port}";
|
||||
}
|
||||
else
|
||||
{
|
||||
strProxy = config.systemProxyAdvancedProtocol
|
||||
.Replace("{ip}", Global.Loopback)
|
||||
.Replace("{http_port}", port.ToString())
|
||||
.Replace("{socks_port}", portSocks.ToString());
|
||||
}
|
||||
SetIEProxy(true, strProxy, strExceptions);
|
||||
}
|
||||
else if (type == ESysProxyType.ForcedClear)
|
||||
{
|
||||
@@ -96,41 +110,6 @@ namespace v2rayN.Handler
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetIEProxy(bool enable, bool global, string strProxy)
|
||||
{
|
||||
//Read();
|
||||
|
||||
//if (!_userSettings.UserSettingsRecorded)
|
||||
//{
|
||||
// // record user settings
|
||||
// ExecSysproxy("query");
|
||||
// //ParseQueryStr(_queryStr);
|
||||
//}
|
||||
|
||||
string arguments;
|
||||
if (enable)
|
||||
{
|
||||
arguments = global
|
||||
? $"global {strProxy} {Global.IEProxyExceptions}"
|
||||
: $"pac {strProxy}";
|
||||
}
|
||||
else
|
||||
{
|
||||
// restore user settings
|
||||
string flags = _userSettings.Flags;
|
||||
string proxy_server = _userSettings.ProxyServer ?? "-";
|
||||
string bypass_list = _userSettings.BypassList ?? "-";
|
||||
string pac_url = _userSettings.PacUrl ?? "-";
|
||||
arguments = $"set {flags} {proxy_server} {bypass_list} {pac_url}";
|
||||
|
||||
// have to get new settings
|
||||
_userSettings.UserSettingsRecorded = false;
|
||||
}
|
||||
|
||||
//Save();
|
||||
ExecSysproxy(arguments);
|
||||
}
|
||||
|
||||
|
||||
public static void SetIEProxy(bool global, string strProxy, string strExceptions)
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using v2rayN.Base;
|
||||
@@ -178,6 +179,16 @@ namespace v2rayN.Handler
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
//Turn off system proxy
|
||||
bool bSysProxyType = false;
|
||||
if (!blProxy && config.sysProxyType == ESysProxyType.ForcedChange)
|
||||
{
|
||||
bSysProxyType = true;
|
||||
config.sysProxyType = ESysProxyType.ForcedClear;
|
||||
SysProxyHandle.UpdateSysProxy(config, false);
|
||||
Thread.Sleep(3000);
|
||||
}
|
||||
|
||||
foreach (var item in config.subItem)
|
||||
{
|
||||
if (item.enabled == false)
|
||||
@@ -217,7 +228,14 @@ namespace v2rayN.Handler
|
||||
}
|
||||
_updateFunc(false, $"-------------------------------------------------------");
|
||||
}
|
||||
//restore system proxy
|
||||
if (bSysProxyType)
|
||||
{
|
||||
config.sysProxyType = ESysProxyType.ForcedChange;
|
||||
SysProxyHandle.UpdateSysProxy(config, false);
|
||||
}
|
||||
_updateFunc(true, $"{ResUI.MsgUpdateSubscriptionEnd}");
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -158,19 +158,19 @@ namespace v2rayN.Handler
|
||||
if (config.inbound[0].allowLANConn)
|
||||
{
|
||||
Inbounds inbound3 = GetInbound(config.inbound[0], Global.InboundSocks2, 2, true);
|
||||
inbound3.listen = "0.0.0.0";
|
||||
v2rayConfig.inbounds.Add(inbound3);
|
||||
|
||||
Inbounds inbound4 = GetInbound(config.inbound[0], Global.InboundHttp2, 3, false);
|
||||
inbound4.listen = "0.0.0.0";
|
||||
v2rayConfig.inbounds.Add(inbound4);
|
||||
|
||||
//auth
|
||||
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
||||
{
|
||||
inbound3.listen = "0.0.0.0";
|
||||
inbound3.settings.auth = "password";
|
||||
inbound3.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||
|
||||
inbound4.listen = "0.0.0.0";
|
||||
inbound4.settings.auth = "password";
|
||||
inbound4.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||
}
|
||||
@@ -941,7 +941,7 @@ namespace v2rayN.Handler
|
||||
string addressFileName = node.address;
|
||||
if (!File.Exists(addressFileName))
|
||||
{
|
||||
addressFileName = Path.Combine(Utils.GetConfigPath(), addressFileName);
|
||||
addressFileName = Utils.GetConfigPath(addressFileName);
|
||||
}
|
||||
if (!File.Exists(addressFileName))
|
||||
{
|
||||
|
||||
@@ -124,7 +124,8 @@ namespace v2rayN.Mode
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string systemProxyAdvancedProtocol { get; set; }
|
||||
|
||||
public int autoUpdateInterval { get; set; } = 0;
|
||||
|
||||
public int autoUpdateSubInterval { get; set; } = 0;
|
||||
@@ -134,6 +135,8 @@ namespace v2rayN.Mode
|
||||
get; set;
|
||||
}
|
||||
|
||||
public int trayMenuServersLimit { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region other entities
|
||||
|
||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
||||
// 方法是按如下所示使用“*”:
|
||||
//[assembly: AssemblyVersion("1.0.*")]
|
||||
//[assembly: AssemblyVersion("1.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.16")]
|
||||
[assembly: AssemblyFileVersion("5.21")]
|
||||
|
||||
30
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
30
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
@@ -110,6 +110,36 @@ namespace v2rayN.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon NotifyIcon1 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("NotifyIcon1", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon NotifyIcon2 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("NotifyIcon2", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon NotifyIcon3 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("NotifyIcon3", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
|
||||
@@ -157,4 +157,13 @@
|
||||
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="NotifyIcon1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\NotifyIcon1.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="NotifyIcon2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\NotifyIcon2.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="NotifyIcon3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\NotifyIcon3.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
v2rayN/v2rayN/Resources/NotifyIcon1.ico
Normal file
BIN
v2rayN/v2rayN/Resources/NotifyIcon1.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
BIN
v2rayN/v2rayN/Resources/NotifyIcon2.ico
Normal file
BIN
v2rayN/v2rayN/Resources/NotifyIcon2.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
v2rayN/v2rayN/Resources/NotifyIcon3.ico
Normal file
BIN
v2rayN/v2rayN/Resources/NotifyIcon3.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
@@ -474,6 +474,9 @@
|
||||
<None Include="Resources\minimize.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\NotifyIcon1.ico" />
|
||||
<Content Include="Resources\NotifyIcon2.ico" />
|
||||
<Content Include="Resources\NotifyIcon3.ico" />
|
||||
<EmbeddedResource Include="Sample\SampleInbound.txt" />
|
||||
<None Include="Resources\share.png" />
|
||||
<None Include="Resources\promotion.png" />
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 60 KiB |
Reference in New Issue
Block a user