Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e65732a4e | ||
|
|
47c843bf09 | ||
|
|
a7741a0b7d | ||
|
|
6f3fbdfe17 | ||
|
|
3be93df63f | ||
|
|
6259539c87 | ||
|
|
9654009650 | ||
|
|
62e796cf5a | ||
|
|
af820bb0f2 | ||
|
|
8f5bb3591b | ||
|
|
7eafae98d4 | ||
|
|
1d4e5baafb | ||
|
|
9894aa053f | ||
|
|
4ada8fea27 | ||
|
|
4d013a206b | ||
|
|
2d8a707bed | ||
|
|
0e55a859ea | ||
|
|
0b1ec520f4 | ||
|
|
fcc5f29882 | ||
|
|
d431c63245 | ||
|
|
15f8db64e7 | ||
|
|
c2ea14151e | ||
|
|
977f0428e2 | ||
|
|
f110446738 | ||
|
|
90289120d3 | ||
|
|
688f206555 | ||
|
|
38c739c45d |
@@ -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))
|
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));
|
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 total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||||
var canReportProgress = total != -1 && progress != null;
|
//var canReportProgress = total != -1 && progress != null;
|
||||||
|
|
||||||
using (var stream = await response.Content.ReadAsStreamAsync())
|
using (var stream = await response.Content.ReadAsStreamAsync())
|
||||||
{
|
{
|
||||||
var totalRead = 0L;
|
var totalRead = 0L;
|
||||||
var buffer = new byte[1024 * 64];
|
var buffer = new byte[1024 * 64];
|
||||||
var isMoreToRead = true;
|
var isMoreToRead = true;
|
||||||
var progressPercentage = 0;
|
string progressSpeed = string.Empty;
|
||||||
DateTime totalDatetime = DateTime.Now;
|
DateTime totalDatetime = DateTime.Now;
|
||||||
|
|
||||||
do
|
do
|
||||||
@@ -215,14 +215,13 @@ namespace v2rayN.Base
|
|||||||
// TODO:
|
// TODO:
|
||||||
totalRead += read;
|
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);
|
if (progressSpeed != speed)
|
||||||
var speed = totalRead * 1d / ts.TotalMilliseconds / 1000;
|
|
||||||
var percent = Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100);
|
|
||||||
if (progressPercentage != percent)
|
|
||||||
{
|
{
|
||||||
progressPercentage = percent;
|
progressSpeed = speed;
|
||||||
progress.Report(speed);
|
progress.Report(speed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
||||||
cmbCoreType.Items.Add("clash");
|
cmbCoreType.Items.Add("clash");
|
||||||
|
cmbCoreType.Items.Add("clash_meta");
|
||||||
cmbCoreType.Items.Add("hysteria");
|
cmbCoreType.Items.Add("hysteria");
|
||||||
|
cmbCoreType.Items.Add("naiveproxy");
|
||||||
cmbCoreType.Items.Add(string.Empty);
|
cmbCoreType.Items.Add(string.Empty);
|
||||||
|
|
||||||
txtAddress.ReadOnly = true;
|
txtAddress.ReadOnly = true;
|
||||||
@@ -150,7 +152,7 @@ namespace v2rayN.Forms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
address = Path.Combine(Utils.GetConfigPath(), address);
|
address = Utils.GetConfigPath(address);
|
||||||
Process.Start(address);
|
Process.Start(address);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ namespace v2rayN.Forms
|
|||||||
public partial class BaseForm : Form
|
public partial class BaseForm : Form
|
||||||
{
|
{
|
||||||
protected static Config config;
|
protected static Config config;
|
||||||
protected static System.Drawing.Icon icon;
|
|
||||||
|
|
||||||
public BaseForm()
|
public BaseForm()
|
||||||
{
|
{
|
||||||
@@ -19,16 +18,14 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (icon == null)
|
string file = Utils.GetPath(Global.CustomIconName);
|
||||||
|
if (System.IO.File.Exists(file))
|
||||||
{
|
{
|
||||||
string file = Utils.GetPath(Global.CustomIconName);
|
this.Icon = new System.Drawing.Icon(file);
|
||||||
if (!System.IO.File.Exists(file))
|
return;
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
icon = new System.Drawing.Icon(file);
|
|
||||||
}
|
}
|
||||||
this.Icon = icon;
|
|
||||||
|
this.Icon = Properties.Resources.NotifyIcon1;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
160
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
160
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -70,22 +70,7 @@
|
|||||||
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
||||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
this.mainMsgControl = new v2rayN.Forms.MainMsgControl();
|
||||||
this.txtMsgBox = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.ssMain = new System.Windows.Forms.StatusStrip();
|
|
||||||
this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
||||||
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -146,9 +131,6 @@
|
|||||||
this.splitContainer1.Panel2.SuspendLayout();
|
this.splitContainer1.Panel2.SuspendLayout();
|
||||||
this.splitContainer1.SuspendLayout();
|
this.splitContainer1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.gbMsgTitle.SuspendLayout();
|
|
||||||
this.cmsMsgBox.SuspendLayout();
|
|
||||||
this.ssMain.SuspendLayout();
|
|
||||||
this.cmsMain.SuspendLayout();
|
this.cmsMain.SuspendLayout();
|
||||||
this.tsMain.SuspendLayout();
|
this.tsMain.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@@ -226,7 +208,6 @@
|
|||||||
this.menuExport2ShareUrl,
|
this.menuExport2ShareUrl,
|
||||||
this.menuExport2SubContent});
|
this.menuExport2SubContent});
|
||||||
this.cmsLv.Name = "cmsLv";
|
this.cmsLv.Name = "cmsLv";
|
||||||
this.cmsLv.OwnerItem = this.tsbServer;
|
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
resources.ApplyResources(this.cmsLv, "cmsLv");
|
||||||
//
|
//
|
||||||
// menuAddVmessServer
|
// menuAddVmessServer
|
||||||
@@ -447,7 +428,7 @@
|
|||||||
//
|
//
|
||||||
// splitContainer1.Panel2
|
// splitContainer1.Panel2
|
||||||
//
|
//
|
||||||
this.splitContainer1.Panel2.Controls.Add(this.gbMsgTitle);
|
this.splitContainer1.Panel2.Controls.Add(this.mainMsgControl);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
@@ -456,119 +437,10 @@
|
|||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
// gbMsgTitle
|
// mainMsgControl
|
||||||
//
|
//
|
||||||
this.gbMsgTitle.Controls.Add(this.txtMsgBox);
|
resources.ApplyResources(this.mainMsgControl, "mainMsgControl");
|
||||||
this.gbMsgTitle.Controls.Add(this.ssMain);
|
this.mainMsgControl.Name = "mainMsgControl";
|
||||||
resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle");
|
|
||||||
this.gbMsgTitle.Name = "gbMsgTitle";
|
|
||||||
this.gbMsgTitle.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtMsgBox
|
|
||||||
//
|
|
||||||
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
|
||||||
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
|
||||||
this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox;
|
|
||||||
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
|
||||||
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
|
|
||||||
//
|
|
||||||
this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuMsgBoxSelectAll,
|
|
||||||
this.menuMsgBoxCopy,
|
|
||||||
this.menuMsgBoxCopyAll,
|
|
||||||
this.menuMsgBoxClear,
|
|
||||||
this.menuMsgBoxAddRoutingRule,
|
|
||||||
this.menuMsgBoxFilter});
|
|
||||||
this.cmsMsgBox.Name = "cmsMsgBox";
|
|
||||||
resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox");
|
|
||||||
//
|
|
||||||
// menuMsgBoxSelectAll
|
|
||||||
//
|
|
||||||
this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll");
|
|
||||||
this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopy
|
|
||||||
//
|
|
||||||
this.menuMsgBoxCopy.Name = "menuMsgBoxCopy";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy");
|
|
||||||
this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopyAll
|
|
||||||
//
|
|
||||||
this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll");
|
|
||||||
this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxClear
|
|
||||||
//
|
|
||||||
this.menuMsgBoxClear.Name = "menuMsgBoxClear";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear");
|
|
||||||
this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxAddRoutingRule
|
|
||||||
//
|
|
||||||
this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule");
|
|
||||||
this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxFilter
|
|
||||||
//
|
|
||||||
this.menuMsgBoxFilter.Name = "menuMsgBoxFilter";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter");
|
|
||||||
this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click);
|
|
||||||
//
|
|
||||||
// ssMain
|
|
||||||
//
|
|
||||||
this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.toolSslInboundInfo,
|
|
||||||
this.toolSslBlank1,
|
|
||||||
this.toolSslRoutingRule,
|
|
||||||
this.toolSslBlank2,
|
|
||||||
this.toolSslServerSpeed,
|
|
||||||
this.toolSslBlank4});
|
|
||||||
resources.ApplyResources(this.ssMain, "ssMain");
|
|
||||||
this.ssMain.Name = "ssMain";
|
|
||||||
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
|
||||||
//
|
|
||||||
// toolSslInboundInfo
|
|
||||||
//
|
|
||||||
this.toolSslInboundInfo.Name = "toolSslInboundInfo";
|
|
||||||
resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo");
|
|
||||||
//
|
|
||||||
// toolSslBlank1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
|
|
||||||
this.toolSslBlank1.Name = "toolSslBlank1";
|
|
||||||
this.toolSslBlank1.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslRoutingRule
|
|
||||||
//
|
|
||||||
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
|
||||||
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
|
||||||
//
|
|
||||||
// toolSslBlank2
|
|
||||||
//
|
|
||||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
|
||||||
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
|
||||||
this.toolSslBlank2.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslServerSpeed
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
|
||||||
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
|
||||||
//
|
|
||||||
// toolSslBlank4
|
|
||||||
//
|
|
||||||
this.toolSslBlank4.Name = "toolSslBlank4";
|
|
||||||
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
|
||||||
//
|
//
|
||||||
// notifyMain
|
// notifyMain
|
||||||
//
|
//
|
||||||
@@ -945,11 +817,6 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||||
this.splitContainer1.ResumeLayout(false);
|
this.splitContainer1.ResumeLayout(false);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
this.gbMsgTitle.ResumeLayout(false);
|
|
||||||
this.gbMsgTitle.PerformLayout();
|
|
||||||
this.cmsMsgBox.ResumeLayout(false);
|
|
||||||
this.ssMain.ResumeLayout(false);
|
|
||||||
this.ssMain.PerformLayout();
|
|
||||||
this.cmsMain.ResumeLayout(false);
|
this.cmsMain.ResumeLayout(false);
|
||||||
this.tsMain.ResumeLayout(false);
|
this.tsMain.ResumeLayout(false);
|
||||||
this.tsMain.PerformLayout();
|
this.tsMain.PerformLayout();
|
||||||
@@ -961,8 +828,6 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
private System.Windows.Forms.GroupBox gbMsgTitle;
|
|
||||||
private System.Windows.Forms.TextBox txtMsgBox;
|
|
||||||
private v2rayN.Base.ListViewFlickerFree lvServers;
|
private v2rayN.Base.ListViewFlickerFree lvServers;
|
||||||
private System.Windows.Forms.NotifyIcon notifyMain;
|
private System.Windows.Forms.NotifyIcon notifyMain;
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMain;
|
private System.Windows.Forms.ContextMenuStrip cmsMain;
|
||||||
@@ -1023,10 +888,6 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans;
|
private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans;
|
||||||
private System.Windows.Forms.ToolStripButton tsbPromotion;
|
private System.Windows.Forms.ToolStripButton tsbPromotion;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer;
|
private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer;
|
||||||
private System.Windows.Forms.StatusStrip ssMain;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
||||||
@@ -1045,27 +906,18 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem menuClearServerStatistics;
|
private System.Windows.Forms.ToolStripMenuItem menuClearServerStatistics;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRoutings;
|
private System.Windows.Forms.ToolStripMenuItem menuRoutings;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMsgBox;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbBackupGuiNConfig;
|
private System.Windows.Forms.ToolStripMenuItem tsbBackupGuiNConfig;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeo;
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeo;
|
||||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy;
|
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy;
|
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting;
|
private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting;
|
||||||
private System.Windows.Forms.TabControl tabGroup;
|
private System.Windows.Forms.TabControl tabGroup;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbGroupSetting;
|
private System.Windows.Forms.ToolStripMenuItem tsbGroupSetting;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveToGroup;
|
private System.Windows.Forms.ToolStripMenuItem menuMoveToGroup;
|
||||||
|
private MainMsgControl mainMsgControl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,16 +3,14 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Tool;
|
|
||||||
using System.Linq;
|
|
||||||
using v2rayN.Resx;
|
using v2rayN.Resx;
|
||||||
|
using v2rayN.Tool;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -21,7 +19,6 @@ namespace v2rayN.Forms
|
|||||||
private V2rayHandler v2rayHandler;
|
private V2rayHandler v2rayHandler;
|
||||||
private List<VmessItem> lstSelecteds = new List<VmessItem>();
|
private List<VmessItem> lstSelecteds = new List<VmessItem>();
|
||||||
private StatisticsHandler statistics = null;
|
private StatisticsHandler statistics = null;
|
||||||
private string MsgFilter = string.Empty;
|
|
||||||
private List<VmessItem> lstVmess = null;
|
private List<VmessItem> lstVmess = null;
|
||||||
private string groupId = string.Empty;
|
private string groupId = string.Empty;
|
||||||
|
|
||||||
@@ -348,7 +345,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
menuServers.DropDownItems.Clear();
|
menuServers.DropDownItems.Clear();
|
||||||
|
|
||||||
if (lstVmess.Count > 30)
|
if (lstVmess.Count > config.trayMenuServersLimit)
|
||||||
{
|
{
|
||||||
menuServers.DropDownItems.Add(new ToolStripMenuItem(ResUI.TooManyServersTip));
|
menuServers.DropDownItems.Add(new ToolStripMenuItem(ResUI.TooManyServersTip));
|
||||||
return;
|
return;
|
||||||
@@ -392,13 +389,6 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(e.ClickedItem.Text))
|
|
||||||
{
|
|
||||||
Utils.SetClipboardData(e.ClickedItem.Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e)
|
private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -527,7 +517,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
if (Global.reloadV2ray)
|
if (Global.reloadV2ray)
|
||||||
{
|
{
|
||||||
ClearMsg();
|
mainMsgControl.ClearMsg();
|
||||||
}
|
}
|
||||||
await Task.Run(() =>
|
await Task.Run(() =>
|
||||||
{
|
{
|
||||||
@@ -767,8 +757,8 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void tsbTestMe_Click(object sender, EventArgs e)
|
private void tsbTestMe_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string result = (new DownloadHandle()).RunAvailabilityCheck(null) + "ms";
|
var updateHandle = new UpdateHandle();
|
||||||
AppendText(false, string.Format(ResUI.TestMeOutput, result));
|
updateHandle.RunAvailabilityCheck(UpdateTaskHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuClearStatistic_Click(object sender, EventArgs e)
|
private void menuClearStatistic_Click(object sender, EventArgs e)
|
||||||
@@ -1038,68 +1028,17 @@ namespace v2rayN.Forms
|
|||||||
AppendText(notify, msg);
|
AppendText(notify, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate void AppendTextDelegate(string text);
|
|
||||||
void AppendText(bool notify, string msg)
|
void AppendText(bool notify, string msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AppendText(msg);
|
mainMsgControl.AppendText(msg);
|
||||||
if (notify)
|
if (notify)
|
||||||
{
|
{
|
||||||
notifyMsg(msg);
|
notifyMsg(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch { }
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AppendText(string text)
|
|
||||||
{
|
|
||||||
if (this.txtMsgBox.InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(new AppendTextDelegate(AppendText), new object[] { text });
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(MsgFilter))
|
|
||||||
{
|
|
||||||
if (!Regex.IsMatch(text, MsgFilter))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//this.txtMsgBox.AppendText(text);
|
|
||||||
ShowMsg(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 提示信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
private void ShowMsg(string msg)
|
|
||||||
{
|
|
||||||
if (txtMsgBox.Lines.Length > 999)
|
|
||||||
{
|
|
||||||
ClearMsg();
|
|
||||||
}
|
|
||||||
this.txtMsgBox.AppendText(msg);
|
|
||||||
if (!msg.EndsWith(Environment.NewLine))
|
|
||||||
{
|
|
||||||
this.txtMsgBox.AppendText(Environment.NewLine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除信息
|
|
||||||
/// </summary>
|
|
||||||
private void ClearMsg()
|
|
||||||
{
|
|
||||||
txtMsgBox.Invoke((Action)delegate
|
|
||||||
{
|
|
||||||
txtMsgBox.Clear();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -1143,7 +1082,7 @@ namespace v2rayN.Forms
|
|||||||
this.Activate();
|
this.Activate();
|
||||||
this.ShowInTaskbar = true;
|
this.ShowInTaskbar = true;
|
||||||
//this.notifyIcon1.Visible = false;
|
//this.notifyIcon1.Visible = false;
|
||||||
this.txtMsgBox.ScrollToCaret();
|
mainMsgControl.ScrollToCaret();
|
||||||
|
|
||||||
int index = GetLvSelectedIndex(false);
|
int index = GetLvSelectedIndex(false);
|
||||||
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
||||||
@@ -1211,7 +1150,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
up /= (ulong)(config.statisticsFreshRate / 1000f);
|
up /= (ulong)(config.statisticsFreshRate / 1000f);
|
||||||
down /= (ulong)(config.statisticsFreshRate / 1000f);
|
down /= (ulong)(config.statisticsFreshRate / 1000f);
|
||||||
toolSslServerSpeed.Text = string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down));
|
mainMsgControl.SetToolSslInfo("speed", string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down)));
|
||||||
|
|
||||||
foreach (var it in statistics)
|
foreach (var it in statistics)
|
||||||
{
|
{
|
||||||
@@ -1331,26 +1270,12 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
ConfigHandler.SaveConfig(ref config, false);
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
DisplayToolStatus();
|
|
||||||
|
mainMsgControl.DisplayToolStatus(config);
|
||||||
|
|
||||||
|
notifyMain.Icon = this.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisplayToolStatus()
|
|
||||||
{
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.Append($"{Global.InboundSocks} {Global.Loopback}:{config.GetLocalPort(Global.InboundSocks)}");
|
|
||||||
sb.Append(" | ");
|
|
||||||
sb.Append($"{Global.InboundHttp} {Global.Loopback}:{config.GetLocalPort(Global.InboundHttp)}");
|
|
||||||
|
|
||||||
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
|
||||||
{
|
|
||||||
sb.Append(" | ");
|
|
||||||
sb.Append($"{ResUI.SystemProxy} {Global.Loopback}:{config.GetLocalPort(Global.InboundHttp2)}");
|
|
||||||
}
|
|
||||||
|
|
||||||
toolSslInboundInfo.Text = sb.ToString();
|
|
||||||
|
|
||||||
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -1366,7 +1291,10 @@ namespace v2rayN.Forms
|
|||||||
menuExit_Click(null, null);
|
menuExit_Click(null, null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
(new UpdateHandle()).CheckUpdateGuiN(config, _updateUI);
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
(new UpdateHandle()).CheckUpdateGuiN(config, _updateUI);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
||||||
@@ -1399,7 +1327,10 @@ namespace v2rayN.Forms
|
|||||||
AppendText(false, ResUI.MsgUpdateV2rayCoreSuccessfully);
|
AppendText(false, ResUI.MsgUpdateV2rayCoreSuccessfully);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
(new UpdateHandle()).CheckUpdateCore(type, config, _updateUI);
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
(new UpdateHandle()).CheckUpdateCore(type, config, _updateUI);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateGeo_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateGeo_Click(object sender, EventArgs e)
|
||||||
@@ -1501,10 +1432,6 @@ namespace v2rayN.Forms
|
|||||||
//Application.Restart();
|
//Application.Restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -1518,7 +1445,7 @@ namespace v2rayN.Forms
|
|||||||
menuRoutings.Visible = config.enableRoutingAdvanced;
|
menuRoutings.Visible = config.enableRoutingAdvanced;
|
||||||
if (!config.enableRoutingAdvanced)
|
if (!config.enableRoutingAdvanced)
|
||||||
{
|
{
|
||||||
toolSslRoutingRule.Text = string.Empty;
|
mainMsgControl.SetToolSslInfo("routing", string.Empty);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1541,7 +1468,7 @@ namespace v2rayN.Forms
|
|||||||
if (config.routingIndex.Equals(k))
|
if (config.routingIndex.Equals(k))
|
||||||
{
|
{
|
||||||
ts.Checked = true;
|
ts.Checked = true;
|
||||||
toolSslRoutingRule.Text = item.remarks;
|
mainMsgControl.SetToolSslInfo("routing", item.remarks);
|
||||||
}
|
}
|
||||||
ts.Click += new EventHandler(ts_Routing_Click);
|
ts.Click += new EventHandler(ts_Routing_Click);
|
||||||
lst.Add(ts);
|
lst.Add(ts);
|
||||||
@@ -1567,66 +1494,5 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region MsgBoxMenu
|
|
||||||
private void menuMsgBoxSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.txtMsgBox.Focus();
|
|
||||||
this.txtMsgBox.SelectAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMsgBoxCopy_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var data = this.txtMsgBox.SelectedText.TrimEx();
|
|
||||||
Utils.SetClipboardData(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMsgBoxCopyAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var data = this.txtMsgBox.Text;
|
|
||||||
Utils.SetClipboardData(data);
|
|
||||||
}
|
|
||||||
private void menuMsgBoxClear_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.txtMsgBox.Clear();
|
|
||||||
}
|
|
||||||
private void menuMsgBoxAddRoutingRule_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
menuMsgBoxCopy_Click(null, null);
|
|
||||||
tsbRoutingSetting_Click(null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void txtMsgBox_KeyDown(object sender, KeyEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Control)
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.A:
|
|
||||||
menuMsgBoxSelectAll_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.C:
|
|
||||||
menuMsgBoxCopy_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.V:
|
|
||||||
menuMsgBoxAddRoutingRule_Click(null, null);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
private void menuMsgBoxFilter_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new MsgFilterSetForm();
|
|
||||||
fm.MsgFilter = MsgFilter;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
MsgFilter = fm.MsgFilter;
|
|
||||||
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, MsgFilter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
<value>3, 17</value>
|
<value>3, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>327, 17</value>
|
<value>226, 19</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>355, 22</value>
|
<value>355, 22</value>
|
||||||
@@ -308,20 +308,8 @@
|
|||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
||||||
<value>Export subscription (base64) share to clipboard</value>
|
<value>Export subscription (base64) share to clipboard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbServer.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
|
||||||
<value>Magenta</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>64, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Text" xml:space="preserve">
|
|
||||||
<value>Servers</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
|
|
||||||
<value>ImageAboveText</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>356, 644</value>
|
<value>356, 666</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmsLv.Name" xml:space="preserve">
|
<data name=">>cmsLv.Name" xml:space="preserve">
|
||||||
<value>cmsLv</value>
|
<value>cmsLv</value>
|
||||||
@@ -470,6 +458,18 @@
|
|||||||
<data name=">>scMain.ZOrder" xml:space="preserve">
|
<data name=">>scMain.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbServer.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
|
<value>Magenta</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>64, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbServer.Text" xml:space="preserve">
|
||||||
|
<value>Servers</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbServer.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
|
||||||
|
<value>ImageAboveText</value>
|
||||||
|
</data>
|
||||||
<data name="splitContainer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="splitContainer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -515,178 +515,28 @@
|
|||||||
<data name=">>splitContainer1.Panel1.ZOrder" xml:space="preserve">
|
<data name=">>splitContainer1.Panel1.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="cmsMsgBox.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<data name="mainMsgControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>493, 20</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>Select All (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>Copy (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>Copy All</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>Clear All</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>Add Routing Rule (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>Set message filters</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>228, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>cmsMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMsgBox.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="mainMsgControl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.MaxLength" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>946, 177</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>228, 18</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="toolSslInboundInfo.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>80, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslInboundInfo.Text" xml:space="preserve">
|
|
||||||
<value>InboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>False</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
|
|
||||||
<value>No</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>250, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>SPEED Disabled</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
|
||||||
<value>MiddleRight</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 194</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>946, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Text" xml:space="preserve">
|
|
||||||
<value>statusStrip1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Name" xml:space="preserve">
|
|
||||||
<value>ssMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="mainMsgControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>952, 223</value>
|
<value>952, 223</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.TabIndex" type="System.Int32, mscorlib">
|
<data name="mainMsgControl.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
<data name=">>mainMsgControl.Name" xml:space="preserve">
|
||||||
<value>Informations</value>
|
<value>mainMsgControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>gbMsgTitle.Name" xml:space="preserve">
|
<data name=">>mainMsgControl.Type" xml:space="preserve">
|
||||||
<value>gbMsgTitle</value>
|
<value>v2rayN.Forms.MainMsgControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>gbMsgTitle.Type" xml:space="preserve">
|
<data name=">>mainMsgControl.Parent" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Parent" xml:space="preserve">
|
|
||||||
<value>splitContainer1.Panel2</value>
|
<value>splitContainer1.Panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>gbMsgTitle.ZOrder" xml:space="preserve">
|
<data name=">>mainMsgControl.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>splitContainer1.Panel2.Name" xml:space="preserve">
|
<data name=">>splitContainer1.Panel2.Name" xml:space="preserve">
|
||||||
@@ -720,7 +570,7 @@
|
|||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>splitContainer1.ZOrder" xml:space="preserve">
|
<data name=">>splitContainer1.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="notifyMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="notifyMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
@@ -840,10 +690,10 @@
|
|||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>409, 17</value>
|
<value>315, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>6, 56</value>
|
<value>6, 56</value>
|
||||||
@@ -1089,7 +939,7 @@
|
|||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>tsMain.ZOrder" xml:space="preserve">
|
<data name=">>tsMain.ZOrder" xml:space="preserve">
|
||||||
<value>5</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -1307,78 +1157,6 @@
|
|||||||
<data name=">>tsbServer.Type" xml:space="preserve">
|
<data name=">>tsbServer.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuMsgBoxSelectAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxSelectAll</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxSelectAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopyAll</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxClear</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxAddRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Name" xml:space="preserve">
|
|
||||||
<value>toolSslInboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>toolSslRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Name" xml:space="preserve">
|
|
||||||
<value>toolSslServerSpeed</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>notifyMain.Name" xml:space="preserve">
|
<data name=">>notifyMain.Name" xml:space="preserve">
|
||||||
<value>notifyMain</value>
|
<value>notifyMain</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -321,48 +321,27 @@
|
|||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>复制 (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>复制所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>清除所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>快速添加路由规则 (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>设置信息过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>222, 136</value>
|
<value>222, 136</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
<value>网速显示未启用</value>
|
<value>网速显示未启用</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
|
||||||
<value>信息</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>172, 22</value>
|
<value>172, 22</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
204
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
Normal file
204
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class MainMsgControl
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 必需的设计器变量。
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清理所有正在使用的资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 组件设计器生成的代码
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设计器支持所需的方法 - 不要修改
|
||||||
|
/// 使用代码编辑器修改此方法的内容。
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainMsgControl));
|
||||||
|
this.txtMsgBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
||||||
|
this.ssMain = new System.Windows.Forms.StatusStrip();
|
||||||
|
this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.cmsMsgBox.SuspendLayout();
|
||||||
|
this.gbMsgTitle.SuspendLayout();
|
||||||
|
this.ssMain.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// txtMsgBox
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
||||||
|
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
||||||
|
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox;
|
||||||
|
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
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox");
|
||||||
|
this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuMsgBoxSelectAll,
|
||||||
|
this.menuMsgBoxCopy,
|
||||||
|
this.menuMsgBoxCopyAll,
|
||||||
|
this.menuMsgBoxClear,
|
||||||
|
this.menuMsgBoxAddRoutingRule,
|
||||||
|
this.menuMsgBoxFilter});
|
||||||
|
this.cmsMsgBox.Name = "cmsMsgBox";
|
||||||
|
//
|
||||||
|
// menuMsgBoxSelectAll
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll");
|
||||||
|
this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll";
|
||||||
|
this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxCopy
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy");
|
||||||
|
this.menuMsgBoxCopy.Name = "menuMsgBoxCopy";
|
||||||
|
this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxCopyAll
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll");
|
||||||
|
this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll";
|
||||||
|
this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxClear
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear");
|
||||||
|
this.menuMsgBoxClear.Name = "menuMsgBoxClear";
|
||||||
|
this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxAddRoutingRule
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule");
|
||||||
|
this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule";
|
||||||
|
this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxFilter
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter");
|
||||||
|
this.menuMsgBoxFilter.Name = "menuMsgBoxFilter";
|
||||||
|
this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click);
|
||||||
|
//
|
||||||
|
// gbMsgTitle
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle");
|
||||||
|
this.gbMsgTitle.Controls.Add(this.txtMsgBox);
|
||||||
|
this.gbMsgTitle.Controls.Add(this.ssMain);
|
||||||
|
this.gbMsgTitle.Name = "gbMsgTitle";
|
||||||
|
this.gbMsgTitle.TabStop = false;
|
||||||
|
//
|
||||||
|
// ssMain
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.ssMain, "ssMain");
|
||||||
|
this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolSslInboundInfo,
|
||||||
|
this.toolSslBlank1,
|
||||||
|
this.toolSslRoutingRule,
|
||||||
|
this.toolSslBlank2,
|
||||||
|
this.toolSslServerSpeed,
|
||||||
|
this.toolSslBlank4});
|
||||||
|
this.ssMain.Name = "ssMain";
|
||||||
|
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
||||||
|
//
|
||||||
|
// toolSslInboundInfo
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo");
|
||||||
|
this.toolSslInboundInfo.Name = "toolSslInboundInfo";
|
||||||
|
//
|
||||||
|
// toolSslBlank1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
|
||||||
|
this.toolSslBlank1.Name = "toolSslBlank1";
|
||||||
|
this.toolSslBlank1.Spring = true;
|
||||||
|
//
|
||||||
|
// toolSslRoutingRule
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
||||||
|
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
||||||
|
//
|
||||||
|
// toolSslBlank2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
||||||
|
this.toolSslBlank2.Name = "toolSslBlank2";
|
||||||
|
this.toolSslBlank2.Spring = true;
|
||||||
|
//
|
||||||
|
// toolSslServerSpeed
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
||||||
|
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
|
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
||||||
|
//
|
||||||
|
// toolSslBlank4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
||||||
|
this.toolSslBlank4.Name = "toolSslBlank4";
|
||||||
|
//
|
||||||
|
// MainMsgControl
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this, "$this");
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.Controls.Add(this.gbMsgTitle);
|
||||||
|
this.Name = "MainMsgControl";
|
||||||
|
this.Load += new System.EventHandler(this.MainMsgControl_Load);
|
||||||
|
this.cmsMsgBox.ResumeLayout(false);
|
||||||
|
this.gbMsgTitle.ResumeLayout(false);
|
||||||
|
this.gbMsgTitle.PerformLayout();
|
||||||
|
this.ssMain.ResumeLayout(false);
|
||||||
|
this.ssMain.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TextBox txtMsgBox;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip cmsMsgBox;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter;
|
||||||
|
private System.Windows.Forms.GroupBox gbMsgTitle;
|
||||||
|
private System.Windows.Forms.StatusStrip ssMain;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
||||||
|
}
|
||||||
|
}
|
||||||
204
v2rayN/v2rayN/Forms/MainMsgControl.cs
Normal file
204
v2rayN/v2rayN/Forms/MainMsgControl.cs
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class MainMsgControl : UserControl
|
||||||
|
{
|
||||||
|
private string MsgFilter = string.Empty;
|
||||||
|
delegate void AppendTextDelegate(string text);
|
||||||
|
|
||||||
|
public MainMsgControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MainMsgControl_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 提示信息
|
||||||
|
|
||||||
|
public void AppendText(string text)
|
||||||
|
{
|
||||||
|
if (this.txtMsgBox.InvokeRequired)
|
||||||
|
{
|
||||||
|
Invoke(new AppendTextDelegate(AppendText), new object[] { text });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!Utils.IsNullOrEmpty(MsgFilter))
|
||||||
|
{
|
||||||
|
if (!Regex.IsMatch(text, MsgFilter))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//this.txtMsgBox.AppendText(text);
|
||||||
|
ShowMsg(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提示信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
private void ShowMsg(string msg)
|
||||||
|
{
|
||||||
|
if (txtMsgBox.Lines.Length > 999)
|
||||||
|
{
|
||||||
|
ClearMsg();
|
||||||
|
}
|
||||||
|
this.txtMsgBox.AppendText(msg);
|
||||||
|
if (!msg.EndsWith(Environment.NewLine))
|
||||||
|
{
|
||||||
|
this.txtMsgBox.AppendText(Environment.NewLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清除信息
|
||||||
|
/// </summary>
|
||||||
|
public void ClearMsg()
|
||||||
|
{
|
||||||
|
txtMsgBox.Invoke((Action)delegate
|
||||||
|
{
|
||||||
|
txtMsgBox.Clear();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisplayToolStatus(Config config)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append($"{ResUI.LabLocal}:");
|
||||||
|
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks)}]");
|
||||||
|
sb.Append(" | ");
|
||||||
|
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
||||||
|
{
|
||||||
|
sb.Append($"[{Global.InboundHttp}({ResUI.SystemProxy}):{config.GetLocalPort(Global.InboundHttp)}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.inbound[0].allowLANConn)
|
||||||
|
{
|
||||||
|
sb.Append($" {ResUI.LabLAN}:");
|
||||||
|
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks2)}]");
|
||||||
|
sb.Append(" | ");
|
||||||
|
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp2)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
SetToolSslInfo("inbound", sb.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetToolSslInfo(string type, string value)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case "speed":
|
||||||
|
toolSslServerSpeed.Text = value;
|
||||||
|
break;
|
||||||
|
case "inbound":
|
||||||
|
toolSslInboundInfo.Text = value;
|
||||||
|
break;
|
||||||
|
case "routing":
|
||||||
|
toolSslRoutingRule.Text = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ScrollToCaret()
|
||||||
|
{
|
||||||
|
this.txtMsgBox.ScrollToCaret();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region MsgBoxMenu
|
||||||
|
private void menuMsgBoxSelectAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.txtMsgBox.Focus();
|
||||||
|
this.txtMsgBox.SelectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMsgBoxCopy_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var data = this.txtMsgBox.SelectedText.TrimEx();
|
||||||
|
Utils.SetClipboardData(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMsgBoxCopyAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var data = this.txtMsgBox.Text;
|
||||||
|
Utils.SetClipboardData(data);
|
||||||
|
}
|
||||||
|
private void menuMsgBoxClear_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.txtMsgBox.Clear();
|
||||||
|
}
|
||||||
|
private void menuMsgBoxAddRoutingRule_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
menuMsgBoxCopy_Click(null, null);
|
||||||
|
var fm = new RoutingSettingForm();
|
||||||
|
fm.ShowDialog();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void txtMsgBox_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Control)
|
||||||
|
{
|
||||||
|
switch (e.KeyCode)
|
||||||
|
{
|
||||||
|
case Keys.A:
|
||||||
|
menuMsgBoxSelectAll_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.C:
|
||||||
|
menuMsgBoxCopy_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.V:
|
||||||
|
menuMsgBoxAddRoutingRule_Click(null, null);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private void menuMsgBoxFilter_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var fm = new MsgFilterSetForm();
|
||||||
|
fm.MsgFilter = MsgFilter;
|
||||||
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
MsgFilter = fm.MsgFilter;
|
||||||
|
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, MsgFilter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||||
|
{
|
||||||
|
if (!Utils.IsNullOrEmpty(e.ClickedItem.Text))
|
||||||
|
{
|
||||||
|
Utils.SetClipboardData(e.ClickedItem.Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
384
v2rayN/v2rayN/Forms/MainMsgControl.resx
Normal file
384
v2rayN/v2rayN/Forms/MainMsgControl.resx
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name=">>toolSslRoutingRule.Name" xml:space="preserve">
|
||||||
|
<value>toolSslRoutingRule</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>Select All (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.Name" xml:space="preserve">
|
||||||
|
<value>ssMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxSelectAll.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxSelectAll</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>False</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxClear.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslServerSpeed.Name" xml:space="preserve">
|
||||||
|
<value>toolSslServerSpeed</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopyAll.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxCopyAll</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.MaxLength" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 221</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank2.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank1.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslInboundInfo.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>0, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslInboundInfo.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>80, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslInboundInfo.Name" xml:space="preserve">
|
||||||
|
<value>toolSslInboundInfo</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.Name" xml:space="preserve">
|
||||||
|
<value>txtMsgBox</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>0, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxFilter.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
|
||||||
|
<value>微软雅黑, 8pt</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.Parent" xml:space="preserve">
|
||||||
|
<value>gbMsgTitle</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslRoutingRule.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
||||||
|
<value>Add Routing Rule (Ctrl+V)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||||
|
<value>MiddleRight</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
|
||||||
|
<value>微软雅黑, 8pt</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>696, 246</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslInboundInfo.Text" xml:space="preserve">
|
||||||
|
<value>InboundInfo</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxAddRoutingRule.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxClear.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxClear</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopy.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank4.Name" xml:space="preserve">
|
||||||
|
<value>toolSslBlank4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.Parent" xml:space="preserve">
|
||||||
|
<value>gbMsgTitle</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Text" xml:space="preserve">
|
||||||
|
<value>Informations</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>172, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Multiline" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
||||||
|
<value>Clear All</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="txtMsgBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
||||||
|
<value>Vertical</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>690, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
||||||
|
<value>cmsMsgBox</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsMsgBox.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>690, 204</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>172, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank4.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>MainMsgControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>696, 246</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank1.Name" xml:space="preserve">
|
||||||
|
<value>toolSslBlank1</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
|
||||||
|
<value>No</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
||||||
|
<value>Copy All</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>250, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.Text" xml:space="preserve">
|
||||||
|
<value>statusStrip1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxAddRoutingRule.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxAddRoutingRule</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank2.Name" xml:space="preserve">
|
||||||
|
<value>toolSslBlank2</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
||||||
|
<value>Set message filters</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
|
<value>SPEED Disabled</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.Name" xml:space="preserve">
|
||||||
|
<value>gbMsgTitle</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxFilter.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxFilter</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxSelectAll.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopy.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxCopy</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslServerSpeed.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
||||||
|
<value>Copy (Ctrl+C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>228, 136</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopyAll.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<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.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="cmsMsgBox.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
172
v2rayN/v2rayN/Forms/MainMsgControl.zh-Hans.resx
Normal file
172
v2rayN/v2rayN/Forms/MainMsgControl.zh-Hans.resx
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>221, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>全选 (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>221, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
||||||
|
<value>复制 (Ctrl+C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>221, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
||||||
|
<value>复制所有</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>221, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
||||||
|
<value>清除所有</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>221, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
||||||
|
<value>快速添加路由规则 (Ctrl+V)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>221, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
||||||
|
<value>设置信息过滤器</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>222, 136</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>157, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>157, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Text" xml:space="preserve">
|
||||||
|
<value>信息</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
|
<value>网速显示未启用</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
81
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
81
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -68,6 +68,10 @@
|
|||||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
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();
|
this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox();
|
||||||
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
||||||
this.btnSetLoopback = new System.Windows.Forms.Button();
|
this.btnSetLoopback = new System.Windows.Forms.Button();
|
||||||
@@ -100,6 +104,7 @@
|
|||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.chkEnableSystemProxyAdvanced = new System.Windows.Forms.CheckBox();
|
||||||
this.tabControl1.SuspendLayout();
|
this.tabControl1.SuspendLayout();
|
||||||
this.tabPage1.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
@@ -114,34 +119,33 @@
|
|||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
//
|
//
|
||||||
// tabControl1
|
// tabControl1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage1);
|
this.tabControl1.Controls.Add(this.tabPage1);
|
||||||
this.tabControl1.Controls.Add(this.tabPage2);
|
this.tabControl1.Controls.Add(this.tabPage2);
|
||||||
this.tabControl1.Controls.Add(this.tabPage6);
|
this.tabControl1.Controls.Add(this.tabPage6);
|
||||||
this.tabControl1.Controls.Add(this.tabPage7);
|
this.tabControl1.Controls.Add(this.tabPage7);
|
||||||
this.tabControl1.Controls.Add(this.tabPageCoreType);
|
this.tabControl1.Controls.Add(this.tabPageCoreType);
|
||||||
this.tabControl1.Controls.Add(this.tabPage3);
|
this.tabControl1.Controls.Add(this.tabPage3);
|
||||||
|
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||||
this.tabControl1.Name = "tabControl1";
|
this.tabControl1.Name = "tabControl1";
|
||||||
this.tabControl1.SelectedIndex = 0;
|
this.tabControl1.SelectedIndex = 0;
|
||||||
//
|
//
|
||||||
// tabPage1
|
// tabPage1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
|
||||||
this.tabPage1.Controls.Add(this.groupBox1);
|
this.tabPage1.Controls.Add(this.groupBox1);
|
||||||
|
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||||
this.tabPage1.Name = "tabPage1";
|
this.tabPage1.Name = "tabPage1";
|
||||||
this.tabPage1.UseVisualStyleBackColor = true;
|
this.tabPage1.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Controls.Add(this.label16);
|
this.groupBox1.Controls.Add(this.label16);
|
||||||
this.groupBox1.Controls.Add(this.label4);
|
this.groupBox1.Controls.Add(this.label4);
|
||||||
this.groupBox1.Controls.Add(this.txtpass);
|
this.groupBox1.Controls.Add(this.txtpass);
|
||||||
@@ -158,6 +162,7 @@
|
|||||||
this.groupBox1.Controls.Add(this.label5);
|
this.groupBox1.Controls.Add(this.label5);
|
||||||
this.groupBox1.Controls.Add(this.txtlocalPort);
|
this.groupBox1.Controls.Add(this.txtlocalPort);
|
||||||
this.groupBox1.Controls.Add(this.label2);
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -207,8 +212,8 @@
|
|||||||
//
|
//
|
||||||
// cmbprotocol
|
// cmbprotocol
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
|
||||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
||||||
this.cmbprotocol.FormattingEnabled = true;
|
this.cmbprotocol.FormattingEnabled = true;
|
||||||
this.cmbprotocol.Items.AddRange(new object[] {
|
this.cmbprotocol.Items.AddRange(new object[] {
|
||||||
resources.GetString("cmbprotocol.Items"),
|
resources.GetString("cmbprotocol.Items"),
|
||||||
@@ -234,7 +239,6 @@
|
|||||||
//
|
//
|
||||||
// cmbloglevel
|
// cmbloglevel
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
|
||||||
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbloglevel.FormattingEnabled = true;
|
this.cmbloglevel.FormattingEnabled = true;
|
||||||
this.cmbloglevel.Items.AddRange(new object[] {
|
this.cmbloglevel.Items.AddRange(new object[] {
|
||||||
@@ -243,6 +247,7 @@
|
|||||||
resources.GetString("cmbloglevel.Items2"),
|
resources.GetString("cmbloglevel.Items2"),
|
||||||
resources.GetString("cmbloglevel.Items3"),
|
resources.GetString("cmbloglevel.Items3"),
|
||||||
resources.GetString("cmbloglevel.Items4")});
|
resources.GetString("cmbloglevel.Items4")});
|
||||||
|
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
||||||
this.cmbloglevel.Name = "cmbloglevel";
|
this.cmbloglevel.Name = "cmbloglevel";
|
||||||
//
|
//
|
||||||
// label5
|
// label5
|
||||||
@@ -262,10 +267,10 @@
|
|||||||
//
|
//
|
||||||
// tabPage2
|
// tabPage2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
|
||||||
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
||||||
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
||||||
this.tabPage2.Controls.Add(this.label14);
|
this.tabPage2.Controls.Add(this.label14);
|
||||||
|
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||||
this.tabPage2.Name = "tabPage2";
|
this.tabPage2.Name = "tabPage2";
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
@@ -288,7 +293,6 @@
|
|||||||
//
|
//
|
||||||
// tabPage6
|
// tabPage6
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
|
||||||
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
||||||
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
||||||
this.tabPage6.Controls.Add(this.label10);
|
this.tabPage6.Controls.Add(this.label10);
|
||||||
@@ -302,6 +306,7 @@
|
|||||||
this.tabPage6.Controls.Add(this.label7);
|
this.tabPage6.Controls.Add(this.label7);
|
||||||
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
||||||
this.tabPage6.Controls.Add(this.label6);
|
this.tabPage6.Controls.Add(this.label6);
|
||||||
|
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||||
this.tabPage6.Name = "tabPage6";
|
this.tabPage6.Name = "tabPage6";
|
||||||
this.tabPage6.UseVisualStyleBackColor = true;
|
this.tabPage6.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
@@ -373,7 +378,10 @@
|
|||||||
//
|
//
|
||||||
// tabPage7
|
// 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);
|
this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13);
|
||||||
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
||||||
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
||||||
@@ -385,9 +393,30 @@
|
|||||||
this.tabPage7.Controls.Add(this.lbFreshrate);
|
this.tabPage7.Controls.Add(this.lbFreshrate);
|
||||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
||||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
this.tabPage7.Controls.Add(this.chkAutoRun);
|
||||||
|
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||||
this.tabPage7.Name = "tabPage7";
|
this.tabPage7.Name = "tabPage7";
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
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");
|
||||||
|
this.txtautoUpdateSubInterval.Name = "txtautoUpdateSubInterval";
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
// chkEnableSecurityProtocolTls13
|
// chkEnableSecurityProtocolTls13
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13");
|
resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13");
|
||||||
@@ -431,9 +460,9 @@
|
|||||||
//
|
//
|
||||||
// cbFreshrate
|
// cbFreshrate
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
|
||||||
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cbFreshrate.FormattingEnabled = true;
|
this.cbFreshrate.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
||||||
this.cbFreshrate.Name = "cbFreshrate";
|
this.cbFreshrate.Name = "cbFreshrate";
|
||||||
//
|
//
|
||||||
// lbFreshrate
|
// lbFreshrate
|
||||||
@@ -455,7 +484,6 @@
|
|||||||
//
|
//
|
||||||
// tabPageCoreType
|
// tabPageCoreType
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType6);
|
this.tabPageCoreType.Controls.Add(this.labCoreType6);
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
|
||||||
@@ -468,14 +496,15 @@
|
|||||||
this.tabPageCoreType.Controls.Add(this.labCoreType2);
|
this.tabPageCoreType.Controls.Add(this.labCoreType2);
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType1);
|
this.tabPageCoreType.Controls.Add(this.labCoreType1);
|
||||||
|
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
||||||
this.tabPageCoreType.Name = "tabPageCoreType";
|
this.tabPageCoreType.Name = "tabPageCoreType";
|
||||||
this.tabPageCoreType.UseVisualStyleBackColor = true;
|
this.tabPageCoreType.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// cmbCoreType6
|
// cmbCoreType6
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
|
||||||
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType6.FormattingEnabled = true;
|
this.cmbCoreType6.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
||||||
this.cmbCoreType6.Name = "cmbCoreType6";
|
this.cmbCoreType6.Name = "cmbCoreType6";
|
||||||
//
|
//
|
||||||
// labCoreType6
|
// labCoreType6
|
||||||
@@ -485,9 +514,9 @@
|
|||||||
//
|
//
|
||||||
// cmbCoreType5
|
// cmbCoreType5
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
|
||||||
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType5.FormattingEnabled = true;
|
this.cmbCoreType5.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
||||||
this.cmbCoreType5.Name = "cmbCoreType5";
|
this.cmbCoreType5.Name = "cmbCoreType5";
|
||||||
//
|
//
|
||||||
// labCoreType5
|
// labCoreType5
|
||||||
@@ -497,9 +526,9 @@
|
|||||||
//
|
//
|
||||||
// cmbCoreType4
|
// cmbCoreType4
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
|
||||||
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType4.FormattingEnabled = true;
|
this.cmbCoreType4.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
||||||
this.cmbCoreType4.Name = "cmbCoreType4";
|
this.cmbCoreType4.Name = "cmbCoreType4";
|
||||||
//
|
//
|
||||||
// labCoreType4
|
// labCoreType4
|
||||||
@@ -509,9 +538,9 @@
|
|||||||
//
|
//
|
||||||
// cmbCoreType3
|
// cmbCoreType3
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
|
||||||
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType3.FormattingEnabled = true;
|
this.cmbCoreType3.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
||||||
this.cmbCoreType3.Name = "cmbCoreType3";
|
this.cmbCoreType3.Name = "cmbCoreType3";
|
||||||
//
|
//
|
||||||
// labCoreType3
|
// labCoreType3
|
||||||
@@ -521,9 +550,9 @@
|
|||||||
//
|
//
|
||||||
// cmbCoreType2
|
// cmbCoreType2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
|
||||||
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType2.FormattingEnabled = true;
|
this.cmbCoreType2.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
||||||
this.cmbCoreType2.Name = "cmbCoreType2";
|
this.cmbCoreType2.Name = "cmbCoreType2";
|
||||||
//
|
//
|
||||||
// labCoreType2
|
// labCoreType2
|
||||||
@@ -533,9 +562,9 @@
|
|||||||
//
|
//
|
||||||
// cmbCoreType1
|
// cmbCoreType1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
|
||||||
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbCoreType1.FormattingEnabled = true;
|
this.cmbCoreType1.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
||||||
this.cmbCoreType1.Name = "cmbCoreType1";
|
this.cmbCoreType1.Name = "cmbCoreType1";
|
||||||
//
|
//
|
||||||
// labCoreType1
|
// labCoreType1
|
||||||
@@ -545,17 +574,18 @@
|
|||||||
//
|
//
|
||||||
// tabPage3
|
// tabPage3
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
|
||||||
this.tabPage3.Controls.Add(this.groupBox2);
|
this.tabPage3.Controls.Add(this.groupBox2);
|
||||||
|
resources.ApplyResources(this.tabPage3, "tabPage3");
|
||||||
this.tabPage3.Name = "tabPage3";
|
this.tabPage3.Name = "tabPage3";
|
||||||
this.tabPage3.UseVisualStyleBackColor = true;
|
this.tabPage3.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
this.groupBox2.Controls.Add(this.chkEnableSystemProxyAdvanced);
|
||||||
this.groupBox2.Controls.Add(this.label13);
|
this.groupBox2.Controls.Add(this.label13);
|
||||||
this.groupBox2.Controls.Add(this.label12);
|
this.groupBox2.Controls.Add(this.label12);
|
||||||
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -576,9 +606,9 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
@@ -593,6 +623,12 @@
|
|||||||
resources.ApplyResources(this.panel1, "panel1");
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
this.panel1.Name = "panel1";
|
this.panel1.Name = "panel1";
|
||||||
//
|
//
|
||||||
|
// chkEnableSystemProxyAdvanced
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkEnableSystemProxyAdvanced, "chkEnableSystemProxyAdvanced");
|
||||||
|
this.chkEnableSystemProxyAdvanced.Name = "chkEnableSystemProxyAdvanced";
|
||||||
|
this.chkEnableSystemProxyAdvanced.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// OptionSettingForm
|
// OptionSettingForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
@@ -697,5 +733,10 @@
|
|||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label label4;
|
||||||
private System.Windows.Forms.TextBox txtpass;
|
private System.Windows.Forms.TextBox txtpass;
|
||||||
private System.Windows.Forms.TextBox txtuser;
|
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.CheckBox chkEnableSystemProxyAdvanced;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -58,6 +58,8 @@ namespace v2rayN.Forms
|
|||||||
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
||||||
|
|
||||||
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
||||||
|
|
||||||
|
chkEnableSystemProxyAdvanced.Checked = config.enableSystemProxyAdvanced;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -111,9 +113,12 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
||||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
|
||||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
||||||
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
||||||
|
|
||||||
|
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
||||||
|
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
||||||
|
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitCoreType()
|
private void InitCoreType()
|
||||||
@@ -250,6 +255,8 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
||||||
|
|
||||||
|
config.enableSystemProxyAdvanced = chkEnableSystemProxyAdvanced.Checked;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,10 +311,12 @@ namespace v2rayN.Forms
|
|||||||
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
||||||
|
|
||||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
||||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
|
||||||
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
||||||
config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,6 +346,6 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -121,15 +121,120 @@
|
|||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 469</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value> Core:基础设置 </value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</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">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>648, 437</value>
|
<value>648, 437</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -220,12 +325,6 @@
|
|||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>本地监听端口</value>
|
<value>本地监听端口</value>
|
||||||
</data>
|
</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">
|
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>161, 12</value>
|
<value>161, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -238,81 +337,6 @@
|
|||||||
<data name="label14.Text" xml:space="preserve">
|
<data name="label14.Text" xml:space="preserve">
|
||||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||||
</data>
|
</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="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>274, 134</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 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">
|
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -349,4 +373,7 @@
|
|||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>参数设置</value>
|
<value>参数设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkEnableSystemProxyAdvanced.Text" xml:space="preserve">
|
||||||
|
<value>开启系统代理高级设置, 使用socks协议</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
this.label4 = new System.Windows.Forms.Label();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
|
this.chkAutoSort = new System.Windows.Forms.CheckBox();
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
@@ -63,7 +64,6 @@
|
|||||||
//
|
//
|
||||||
// panel3
|
// panel3
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Controls.Add(this.chkEnabled);
|
this.panel3.Controls.Add(this.chkEnabled);
|
||||||
this.panel3.Controls.Add(this.clbInboundTag);
|
this.panel3.Controls.Add(this.clbInboundTag);
|
||||||
this.panel3.Controls.Add(this.label2);
|
this.panel3.Controls.Add(this.label2);
|
||||||
@@ -74,6 +74,7 @@
|
|||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
this.panel3.Controls.Add(this.labRoutingTips);
|
||||||
this.panel3.Controls.Add(this.label4);
|
this.panel3.Controls.Add(this.label4);
|
||||||
this.panel3.Controls.Add(this.cmbOutboundTag);
|
this.panel3.Controls.Add(this.cmbOutboundTag);
|
||||||
|
resources.ApplyResources(this.panel3, "panel3");
|
||||||
this.panel3.Name = "panel3";
|
this.panel3.Name = "panel3";
|
||||||
//
|
//
|
||||||
// chkEnabled
|
// chkEnabled
|
||||||
@@ -84,8 +85,8 @@
|
|||||||
//
|
//
|
||||||
// clbInboundTag
|
// clbInboundTag
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
|
||||||
this.clbInboundTag.CheckOnClick = true;
|
this.clbInboundTag.CheckOnClick = true;
|
||||||
|
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
||||||
this.clbInboundTag.FormattingEnabled = true;
|
this.clbInboundTag.FormattingEnabled = true;
|
||||||
this.clbInboundTag.Items.AddRange(new object[] {
|
this.clbInboundTag.Items.AddRange(new object[] {
|
||||||
resources.GetString("clbInboundTag.Items"),
|
resources.GetString("clbInboundTag.Items"),
|
||||||
@@ -100,8 +101,8 @@
|
|||||||
//
|
//
|
||||||
// clbProtocol
|
// clbProtocol
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
|
||||||
this.clbProtocol.CheckOnClick = true;
|
this.clbProtocol.CheckOnClick = true;
|
||||||
|
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
||||||
this.clbProtocol.FormattingEnabled = true;
|
this.clbProtocol.FormattingEnabled = true;
|
||||||
this.clbProtocol.Items.AddRange(new object[] {
|
this.clbProtocol.Items.AddRange(new object[] {
|
||||||
resources.GetString("clbProtocol.Items"),
|
resources.GetString("clbProtocol.Items"),
|
||||||
@@ -127,8 +128,8 @@
|
|||||||
//
|
//
|
||||||
// labRoutingTips
|
// labRoutingTips
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
||||||
|
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
this.labRoutingTips.Name = "labRoutingTips";
|
||||||
//
|
//
|
||||||
// label4
|
// label4
|
||||||
@@ -138,26 +139,33 @@
|
|||||||
//
|
//
|
||||||
// cmbOutboundTag
|
// cmbOutboundTag
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
|
||||||
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbOutboundTag.FormattingEnabled = true;
|
this.cmbOutboundTag.FormattingEnabled = true;
|
||||||
this.cmbOutboundTag.Items.AddRange(new object[] {
|
this.cmbOutboundTag.Items.AddRange(new object[] {
|
||||||
resources.GetString("cmbOutboundTag.Items"),
|
resources.GetString("cmbOutboundTag.Items"),
|
||||||
resources.GetString("cmbOutboundTag.Items1"),
|
resources.GetString("cmbOutboundTag.Items1"),
|
||||||
resources.GetString("cmbOutboundTag.Items2")});
|
resources.GetString("cmbOutboundTag.Items2")});
|
||||||
|
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
||||||
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
||||||
//
|
//
|
||||||
// panel4
|
// panel4
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
this.panel4.Controls.Add(this.chkAutoSort);
|
||||||
this.panel4.Controls.Add(this.btnClose);
|
this.panel4.Controls.Add(this.btnClose);
|
||||||
this.panel4.Controls.Add(this.btnOK);
|
this.panel4.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panel4, "panel4");
|
||||||
this.panel4.Name = "panel4";
|
this.panel4.Name = "panel4";
|
||||||
//
|
//
|
||||||
|
// chkAutoSort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkAutoSort, "chkAutoSort");
|
||||||
|
this.chkAutoSort.Name = "chkAutoSort";
|
||||||
|
this.chkAutoSort.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
@@ -171,15 +179,15 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.groupBox2);
|
this.panel2.Controls.Add(this.groupBox2);
|
||||||
this.panel2.Controls.Add(this.groupBox1);
|
this.panel2.Controls.Add(this.groupBox1);
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Controls.Add(this.txtIP);
|
this.groupBox2.Controls.Add(this.txtIP);
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -190,8 +198,8 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Controls.Add(this.txtDomain);
|
this.groupBox1.Controls.Add(this.txtDomain);
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -214,6 +222,7 @@
|
|||||||
this.panel3.ResumeLayout(false);
|
this.panel3.ResumeLayout(false);
|
||||||
this.panel3.PerformLayout();
|
this.panel3.PerformLayout();
|
||||||
this.panel4.ResumeLayout(false);
|
this.panel4.ResumeLayout(false);
|
||||||
|
this.panel4.PerformLayout();
|
||||||
this.panel2.ResumeLayout(false);
|
this.panel2.ResumeLayout(false);
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.groupBox2.ResumeLayout(false);
|
||||||
this.groupBox2.PerformLayout();
|
this.groupBox2.PerformLayout();
|
||||||
@@ -245,5 +254,6 @@
|
|||||||
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
private System.Windows.Forms.CheckBox chkEnabled;
|
private System.Windows.Forms.CheckBox chkEnabled;
|
||||||
|
private System.Windows.Forms.CheckBox chkAutoSort;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,8 +48,16 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
rulesItem.inboundTag = inboundTag;
|
rulesItem.inboundTag = inboundTag;
|
||||||
rulesItem.outboundTag = cmbOutboundTag.Text;
|
rulesItem.outboundTag = cmbOutboundTag.Text;
|
||||||
rulesItem.domain = Utils.String2ListSorted(txtDomain.Text);
|
if (chkAutoSort.Checked)
|
||||||
rulesItem.ip = Utils.String2ListSorted(txtIP.Text);
|
{
|
||||||
|
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>();
|
var protocol = new List<string>();
|
||||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
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">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>路由规则详情设置</value>
|
<value>路由规则详情设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkAutoSort.Text" xml:space="preserve">
|
||||||
|
<value>保存时Domain和IP自动排序</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -15,7 +15,9 @@ namespace v2rayN
|
|||||||
public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
|
public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
|
||||||
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
||||||
public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases";
|
public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases";
|
||||||
|
public const string clashMetaCoreUrl = "https://github.com/MetaCubeX/Clash.Meta/releases";
|
||||||
public const string hysteriaCoreUrl = "https://github.com/HyNetwork/hysteria/releases";
|
public const string hysteriaCoreUrl = "https://github.com/HyNetwork/hysteria/releases";
|
||||||
|
public const string naiveproxyCoreUrl = "https://github.com/klzgrad/naiveproxy/releases";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -64,9 +66,10 @@ namespace v2rayN
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
||||||
|
|
||||||
|
|
||||||
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
||||||
|
|
||||||
|
public const string v2raySampleInbound = "v2rayN.Sample.SampleInbound.txt";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 默认加密方式
|
/// 默认加密方式
|
||||||
@@ -111,6 +114,7 @@ namespace v2rayN
|
|||||||
|
|
||||||
public const string InboundSocks = "socks";
|
public const string InboundSocks = "socks";
|
||||||
public const string InboundHttp = "http";
|
public const string InboundHttp = "http";
|
||||||
|
public const string InboundSocks2 = "socks2";
|
||||||
public const string InboundHttp2 = "http2";
|
public const string InboundHttp2 = "http2";
|
||||||
public const string Loopback = "127.0.0.1";
|
public const string Loopback = "127.0.0.1";
|
||||||
public const string InboundAPITagName = "api";
|
public const string InboundAPITagName = "api";
|
||||||
|
|||||||
@@ -284,7 +284,17 @@ namespace v2rayN.Handler
|
|||||||
vmessItem.indexId = string.Empty;
|
vmessItem.indexId = string.Empty;
|
||||||
vmessItem.remarks = string.Format("{0}-clone", item.remarks);
|
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);
|
ToJsonFile(config);
|
||||||
@@ -442,7 +452,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File.Copy(fileName, Path.Combine(Utils.GetConfigPath(), newFileName));
|
File.Copy(fileName, Utils.GetConfigPath(newFileName));
|
||||||
if (blDelete)
|
if (blDelete)
|
||||||
{
|
{
|
||||||
File.Delete(fileName);
|
File.Delete(fileName);
|
||||||
@@ -1206,6 +1216,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.routingIndex = 0;
|
config.routingIndex = 0;
|
||||||
}
|
}
|
||||||
|
if (config.trayMenuServersLimit <= 0)
|
||||||
|
{
|
||||||
|
config.trayMenuServersLimit = 30;
|
||||||
|
}
|
||||||
|
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
|
|||||||
@@ -46,12 +46,12 @@ namespace v2rayN.Handler
|
|||||||
Proxy = webProxy
|
Proxy = webProxy
|
||||||
});
|
});
|
||||||
|
|
||||||
var progress = new Progress<double>();
|
var progress = new Progress<string>();
|
||||||
progress.ProgressChanged += (sender, value) =>
|
progress.ProgressChanged += (sender, value) =>
|
||||||
{
|
{
|
||||||
if (UpdateCompleted != null)
|
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));
|
UpdateCompleted(this, new ResultEventArgs(false, msg));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -172,25 +172,21 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (webProxy == null)
|
if (webProxy == null)
|
||||||
{
|
{
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp2);
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
webProxy = new WebProxy(Global.Loopback, httpPort);
|
webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
Task<int> t = Task.Run(() =>
|
try
|
||||||
{
|
{
|
||||||
try
|
string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out int responseTime);
|
||||||
{
|
bool noError = Utils.IsNullOrEmpty(status);
|
||||||
string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out int responseTime);
|
return noError ? responseTime : -1;
|
||||||
bool noError = Utils.IsNullOrEmpty(status);
|
}
|
||||||
return noError ? responseTime : -1;
|
catch (Exception ex)
|
||||||
}
|
{
|
||||||
catch (Exception ex)
|
Utils.SaveLog(ex.Message, ex);
|
||||||
{
|
return -1;
|
||||||
Utils.SaveLog(ex.Message, ex);
|
}
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return t.Result;
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -237,7 +233,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp2);
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
var webProxy = new WebProxy(Global.Loopback, httpPort);
|
var webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
if (RunAvailabilityCheck(webProxy) > 0)
|
if (RunAvailabilityCheck(webProxy) > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,11 +87,19 @@ namespace v2rayN.Handler
|
|||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
{
|
{
|
||||||
coreType = ECoreType.clash,
|
coreType = ECoreType.clash,
|
||||||
coreExes = new List<string> { "clash-windows-amd64", "clash-windows-386", "clash" },
|
coreExes = new List<string> { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" },
|
||||||
arguments = "-f config.json",
|
arguments = "-f config.json",
|
||||||
coreUrl = Global.clashCoreUrl
|
coreUrl = Global.clashCoreUrl
|
||||||
});
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.clash_meta,
|
||||||
|
coreExes = new List<string> { "Clash.Meta-windows-amd64v1", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
|
||||||
|
arguments = "-f config.json",
|
||||||
|
coreUrl = Global.clashMetaCoreUrl
|
||||||
|
});
|
||||||
|
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
{
|
{
|
||||||
coreType = ECoreType.hysteria,
|
coreType = ECoreType.hysteria,
|
||||||
@@ -99,6 +107,14 @@ namespace v2rayN.Handler
|
|||||||
arguments = "",
|
arguments = "",
|
||||||
coreUrl = Global.hysteriaCoreUrl
|
coreUrl = Global.hysteriaCoreUrl
|
||||||
});
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.naiveproxy,
|
||||||
|
coreExes = new List<string> { "naiveproxy", "naive" },
|
||||||
|
arguments = "config.json",
|
||||||
|
coreUrl = Global.naiveproxyCoreUrl
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,12 +32,59 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
try
|
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");
|
Color color = ColorTranslator.FromHtml("#3399CC");
|
||||||
int index = (int)config.sysProxyType;
|
int index = (int)config.sysProxyType;
|
||||||
if (index > 0)
|
if (index > 0)
|
||||||
{
|
{
|
||||||
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
||||||
//color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int width = 128;
|
int width = 128;
|
||||||
@@ -47,24 +94,8 @@ namespace v2rayN.Handler
|
|||||||
Graphics graphics = Graphics.FromImage(bitmap);
|
Graphics graphics = Graphics.FromImage(bitmap);
|
||||||
SolidBrush drawBrush = new SolidBrush(color);
|
SolidBrush drawBrush = new SolidBrush(color);
|
||||||
|
|
||||||
var customIcon = false;
|
graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
||||||
if (config.enableRoutingAdvanced)
|
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
||||||
|
|
||||||
drawBrush.Dispose();
|
drawBrush.Dispose();
|
||||||
@@ -76,7 +107,7 @@ namespace v2rayN.Handler
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return def;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,40 +239,54 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
private void UpdateTaskRun(Config config, Action<bool, string> update)
|
private void UpdateTaskRun(Config config, Action<bool, string> update)
|
||||||
{
|
{
|
||||||
|
var autoUpdateSubTime = DateTime.Now;
|
||||||
|
var autoUpdateGeoTime = DateTime.Now;
|
||||||
|
|
||||||
|
Thread.Sleep(60000);
|
||||||
|
Utils.SaveLog("UpdateTaskRun");
|
||||||
|
|
||||||
var updateHandle = new UpdateHandle();
|
var updateHandle = new UpdateHandle();
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
Thread.Sleep(60000);
|
var dtNow = DateTime.Now;
|
||||||
if (config.autoUpdateInterval <= 0)
|
|
||||||
|
if (config.autoUpdateSubInterval > 0)
|
||||||
{
|
{
|
||||||
continue;
|
if ((dtNow - autoUpdateSubTime).Hours % config.autoUpdateSubInterval == 0)
|
||||||
|
{
|
||||||
|
updateHandle.UpdateSubscriptionProcess(config, true, (bool success, string msg) =>
|
||||||
|
{
|
||||||
|
update(success, msg);
|
||||||
|
if (success)
|
||||||
|
Utils.SaveLog("subscription" + msg);
|
||||||
|
});
|
||||||
|
autoUpdateSubTime = dtNow;
|
||||||
|
}
|
||||||
|
Thread.Sleep(60000);
|
||||||
}
|
}
|
||||||
Utils.SaveLog("UpdateTaskRun");
|
|
||||||
|
|
||||||
updateHandle.UpdateSubscriptionProcess(config, true, (bool success, string msg) =>
|
if (config.autoUpdateInterval > 0)
|
||||||
{
|
{
|
||||||
update(success, msg);
|
if ((dtNow - autoUpdateGeoTime).Hours % config.autoUpdateInterval == 0)
|
||||||
if (success)
|
{
|
||||||
Utils.SaveLog("subscription" + msg);
|
updateHandle.UpdateGeoFile("geosite", config, (bool success, string msg) =>
|
||||||
});
|
{
|
||||||
|
update(false, msg);
|
||||||
|
if (success)
|
||||||
|
Utils.SaveLog("geosite" + msg);
|
||||||
|
});
|
||||||
|
|
||||||
Thread.Sleep(60000);
|
updateHandle.UpdateGeoFile("geoip", config, (bool success, string msg) =>
|
||||||
|
{
|
||||||
|
update(false, msg);
|
||||||
|
if (success)
|
||||||
|
Utils.SaveLog("geoip" + msg);
|
||||||
|
});
|
||||||
|
autoUpdateGeoTime = dtNow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
updateHandle.UpdateGeoFile("geosite", config, (bool success, string msg) =>
|
Thread.Sleep(1000 * 3600);
|
||||||
{
|
|
||||||
update(false, msg);
|
|
||||||
if (success)
|
|
||||||
Utils.SaveLog("geosite" + msg);
|
|
||||||
});
|
|
||||||
|
|
||||||
updateHandle.UpdateGeoFile("geoip", config, (bool success, string msg) =>
|
|
||||||
{
|
|
||||||
update(false, msg);
|
|
||||||
if (success)
|
|
||||||
Utils.SaveLog("geoip" + msg);
|
|
||||||
});
|
|
||||||
|
|
||||||
Thread.Sleep(1000 * 3600 * config.autoUpdateInterval);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int port = config.GetLocalPort(Global.InboundHttp2);
|
int port = config.GetLocalPort(Global.InboundHttp);
|
||||||
|
int portSocks = config.GetLocalPort(Global.InboundSocks);
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -67,7 +68,17 @@ namespace v2rayN.Handler
|
|||||||
if (type == ESysProxyType.ForcedChange)
|
if (type == ESysProxyType.ForcedChange)
|
||||||
{
|
{
|
||||||
var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
|
var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
|
||||||
SetIEProxy(true, $"{Global.Loopback}:{port}", strExceptions);
|
|
||||||
|
var strProxy = string.Empty;
|
||||||
|
if (config.enableSystemProxyAdvanced)
|
||||||
|
{
|
||||||
|
strProxy = $"socks={Global.Loopback}:{portSocks}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strProxy = $"{Global.Loopback}:{port}";
|
||||||
|
}
|
||||||
|
SetIEProxy(true, strProxy, strExceptions);
|
||||||
}
|
}
|
||||||
else if (type == ESysProxyType.ForcedClear)
|
else if (type == ESysProxyType.ForcedClear)
|
||||||
{
|
{
|
||||||
@@ -96,41 +107,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)
|
public static void SetIEProxy(bool global, string strProxy, string strExceptions)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Diagnostics;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
@@ -178,6 +179,16 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
Task.Run(async () =>
|
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)
|
foreach (var item in config.subItem)
|
||||||
{
|
{
|
||||||
if (item.enabled == false)
|
if (item.enabled == false)
|
||||||
@@ -217,7 +228,14 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
_updateFunc(false, $"-------------------------------------------------------");
|
_updateFunc(false, $"-------------------------------------------------------");
|
||||||
}
|
}
|
||||||
|
//restore system proxy
|
||||||
|
if (bSysProxyType)
|
||||||
|
{
|
||||||
|
config.sysProxyType = ESysProxyType.ForcedChange;
|
||||||
|
SysProxyHandle.UpdateSysProxy(config, false);
|
||||||
|
}
|
||||||
_updateFunc(true, $"{ResUI.MsgUpdateSubscriptionEnd}");
|
_updateFunc(true, $"{ResUI.MsgUpdateSubscriptionEnd}");
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,8 +268,8 @@ namespace v2rayN.Handler
|
|||||||
File.Delete(targetPath);
|
File.Delete(targetPath);
|
||||||
}
|
}
|
||||||
File.Move(fileName, targetPath);
|
File.Move(fileName, targetPath);
|
||||||
//_updateFunc(true, "");
|
//_updateFunc(true, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -272,6 +290,16 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RunAvailabilityCheck(Action<bool, string> update)
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
var time = (new DownloadHandle()).RunAvailabilityCheck(null);
|
||||||
|
|
||||||
|
update(false, string.Format(ResUI.TestMeOutput, time));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
#region private
|
#region private
|
||||||
|
|
||||||
private async void CheckUpdateAsync(ECoreType type)
|
private async void CheckUpdateAsync(ECoreType type)
|
||||||
|
|||||||
@@ -146,48 +146,35 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Inbounds inbound = v2rayConfig.inbounds[0];
|
v2rayConfig.inbounds = new List<Inbounds>();
|
||||||
inbound.tag = Global.InboundSocks;
|
|
||||||
inbound.port = config.inbound[0].localPort;
|
Inbounds inbound = GetInbound(config.inbound[0], Global.InboundSocks, 0, true);
|
||||||
inbound.protocol = config.inbound[0].protocol;
|
v2rayConfig.inbounds.Add(inbound);
|
||||||
if (config.inbound[0].allowLANConn)
|
|
||||||
{
|
|
||||||
inbound.listen = "0.0.0.0";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inbound.listen = Global.Loopback;
|
|
||||||
}
|
|
||||||
//udp
|
|
||||||
inbound.settings.udp = config.inbound[0].udpEnabled;
|
|
||||||
inbound.sniffing.enabled = config.inbound[0].sniffingEnabled;
|
|
||||||
|
|
||||||
//http
|
//http
|
||||||
Inbounds inbound2 = v2rayConfig.inbounds[1];
|
Inbounds inbound2 = GetInbound(config.inbound[0], Global.InboundHttp, 1, false);
|
||||||
inbound2.tag = Global.InboundHttp;
|
v2rayConfig.inbounds.Add(inbound2);
|
||||||
inbound2.port = config.GetLocalPort(Global.InboundHttp);
|
|
||||||
inbound2.protocol = Global.InboundHttp;
|
|
||||||
inbound2.listen = inbound.listen;
|
|
||||||
inbound2.settings.allowTransparent = false;
|
|
||||||
inbound2.sniffing.enabled = inbound.sniffing.enabled;
|
|
||||||
|
|
||||||
//auth
|
if (config.inbound[0].allowLANConn)
|
||||||
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
|
||||||
{
|
{
|
||||||
inbound.settings.auth = "password";
|
Inbounds inbound3 = GetInbound(config.inbound[0], Global.InboundSocks2, 2, true);
|
||||||
inbound.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
inbound3.listen = "0.0.0.0";
|
||||||
inbound2.settings.auth = "password";
|
v2rayConfig.inbounds.Add(inbound3);
|
||||||
inbound2.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
|
||||||
}
|
|
||||||
|
|
||||||
//http Loopback
|
Inbounds inbound4 = GetInbound(config.inbound[0], Global.InboundHttp2, 3, false);
|
||||||
Inbounds inbound3 = v2rayConfig.inbounds[2];
|
inbound4.listen = "0.0.0.0";
|
||||||
inbound3.tag = Global.InboundHttp2;
|
v2rayConfig.inbounds.Add(inbound4);
|
||||||
inbound3.port = config.GetLocalPort(Global.InboundHttp2);
|
|
||||||
inbound3.protocol = Global.InboundHttp;
|
//auth
|
||||||
inbound3.listen = Global.Loopback;
|
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
||||||
inbound3.settings.allowTransparent = false;
|
{
|
||||||
inbound3.sniffing.enabled = inbound.sniffing.enabled;
|
inbound3.settings.auth = "password";
|
||||||
|
inbound3.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
|
||||||
|
inbound4.settings.auth = "password";
|
||||||
|
inbound4.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -195,6 +182,28 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Inbounds GetInbound(InItem inItem, string tag, int offset, bool bSocks)
|
||||||
|
{
|
||||||
|
string result = Utils.GetEmbedText(Global.v2raySampleInbound);
|
||||||
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inbound = Utils.FromJson<Inbounds>(result);
|
||||||
|
if (inbound == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
inbound.tag = tag;
|
||||||
|
inbound.port = inItem.localPort + offset;
|
||||||
|
inbound.protocol = bSocks ? Global.InboundSocks : Global.InboundHttp;
|
||||||
|
inbound.settings.udp = inItem.udpEnabled;
|
||||||
|
inbound.sniffing.enabled = inItem.sniffingEnabled;
|
||||||
|
|
||||||
|
return inbound;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路由
|
/// 路由
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -932,7 +941,7 @@ namespace v2rayN.Handler
|
|||||||
string addressFileName = node.address;
|
string addressFileName = node.address;
|
||||||
if (!File.Exists(addressFileName))
|
if (!File.Exists(addressFileName))
|
||||||
{
|
{
|
||||||
addressFileName = Path.Combine(Utils.GetConfigPath(), addressFileName);
|
addressFileName = Utils.GetConfigPath(addressFileName);
|
||||||
}
|
}
|
||||||
if (!File.Exists(addressFileName))
|
if (!File.Exists(addressFileName))
|
||||||
{
|
{
|
||||||
@@ -957,7 +966,8 @@ namespace v2rayN.Handler
|
|||||||
case ECoreType.Xray:
|
case ECoreType.Xray:
|
||||||
break;
|
break;
|
||||||
case ECoreType.clash:
|
case ECoreType.clash:
|
||||||
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp2)}");
|
case ECoreType.clash_meta:
|
||||||
|
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
|
||||||
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,17 +124,19 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
public bool enableSystemProxyAdvanced { get; set; }
|
||||||
|
|
||||||
public int autoUpdateInterval
|
public int autoUpdateInterval { get; set; } = 0;
|
||||||
{
|
|
||||||
get; set;
|
public int autoUpdateSubInterval { get; set; } = 0;
|
||||||
} = 0;
|
|
||||||
|
|
||||||
public bool enableSecurityProtocolTls13
|
public bool enableSecurityProtocolTls13
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int trayMenuServersLimit { get; set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region other entities
|
#region other entities
|
||||||
@@ -208,27 +210,27 @@ namespace v2rayN.Mode
|
|||||||
|
|
||||||
public int GetLocalPort(string protocol)
|
public int GetLocalPort(string protocol)
|
||||||
{
|
{
|
||||||
if (protocol == Global.InboundHttp)
|
int localPort = inbound.FirstOrDefault(t => t.protocol == Global.InboundSocks).localPort;
|
||||||
|
|
||||||
|
if (protocol == Global.InboundSocks)
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 1;
|
return localPort;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundHttp)
|
||||||
|
{
|
||||||
|
return localPort + 1;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundSocks2)
|
||||||
|
{
|
||||||
|
return localPort + 2;
|
||||||
}
|
}
|
||||||
else if (protocol == Global.InboundHttp2)
|
else if (protocol == Global.InboundHttp2)
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 2;
|
return localPort + 3;
|
||||||
}
|
}
|
||||||
else if (protocol == "speedtest")
|
else if (protocol == "speedtest")
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 103;
|
return localPort + 103;
|
||||||
}
|
|
||||||
|
|
||||||
int localPort = 0;
|
|
||||||
foreach (InItem inItem in inbound)
|
|
||||||
{
|
|
||||||
if (inItem.protocol.Equals(protocol))
|
|
||||||
{
|
|
||||||
localPort = inItem.localPort;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return localPort;
|
return localPort;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ namespace v2rayN.Mode
|
|||||||
v2fly = 1,
|
v2fly = 1,
|
||||||
Xray = 2,
|
Xray = 2,
|
||||||
clash = 11,
|
clash = 11,
|
||||||
|
clash_meta = 12,
|
||||||
hysteria = 21,
|
hysteria = 21,
|
||||||
|
naiveproxy = 22,
|
||||||
v2rayN = 99
|
v2rayN = 99
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
|||||||
// 方法是按如下所示使用“*”:
|
// 方法是按如下所示使用“*”:
|
||||||
//[assembly: AssemblyVersion("1.0.*")]
|
//[assembly: AssemblyVersion("1.0.*")]
|
||||||
//[assembly: AssemblyVersion("1.0.0")]
|
//[assembly: AssemblyVersion("1.0.0")]
|
||||||
[assembly: AssemblyFileVersion("5.14")]
|
[assembly: AssemblyFileVersion("5.20")]
|
||||||
|
|||||||
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>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -157,4 +157,13 @@
|
|||||||
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<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>
|
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</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>
|
</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 |
20
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
20
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
@@ -321,6 +321,24 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 LAN 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string LabLAN {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabLAN", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Local 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string LabLocal {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabLocal", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Address 的本地化字符串。
|
/// 查找类似 Address 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -953,7 +971,7 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 The ping of current service: {0} 的本地化字符串。
|
/// 查找类似 The ping of current service: {0} ms 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string TestMeOutput {
|
internal static string TestMeOutput {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -356,7 +356,7 @@
|
|||||||
<value>Scan import URL successfully</value>
|
<value>Scan import URL successfully</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TestMeOutput" xml:space="preserve">
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
<value>The ping of current service: {0}</value>
|
<value>The ping of current service: {0} ms</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OperationSuccess" xml:space="preserve">
|
<data name="OperationSuccess" xml:space="preserve">
|
||||||
<value>Operation success</value>
|
<value>Operation success</value>
|
||||||
@@ -463,4 +463,10 @@
|
|||||||
<data name="TooManyServersTip" xml:space="preserve">
|
<data name="TooManyServersTip" xml:space="preserve">
|
||||||
<value>Too many servers, please open the main interface</value>
|
<value>Too many servers, please open the main interface</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LabLAN" xml:space="preserve">
|
||||||
|
<value>LAN</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLocal" xml:space="preserve">
|
||||||
|
<value>Local</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -356,7 +356,7 @@
|
|||||||
<value>扫描导入URL成功</value>
|
<value>扫描导入URL成功</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TestMeOutput" xml:space="preserve">
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
<value>当前服务的真连接延迟: {0}</value>
|
<value>当前服务的真连接延迟: {0} ms</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OperationSuccess" xml:space="preserve">
|
<data name="OperationSuccess" xml:space="preserve">
|
||||||
<value>操作成功</value>
|
<value>操作成功</value>
|
||||||
@@ -463,4 +463,10 @@
|
|||||||
<data name="TooManyServersTip" xml:space="preserve">
|
<data name="TooManyServersTip" xml:space="preserve">
|
||||||
<value>服务器太多,请打开主界面操作</value>
|
<value>服务器太多,请打开主界面操作</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LabLAN" xml:space="preserve">
|
||||||
|
<value>局域网</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLocal" xml:space="preserve">
|
||||||
|
<value>本地</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
18
v2rayN/v2rayN/Sample/SampleInbound.txt
Normal file
18
v2rayN/v2rayN/Sample/SampleInbound.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"tag": "tag1",
|
||||||
|
"port": 10808,
|
||||||
|
"protocol": "socks",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"settings": {
|
||||||
|
"auth": "noauth",
|
||||||
|
"udp": true,
|
||||||
|
"allowTransparent": false
|
||||||
|
},
|
||||||
|
"sniffing": {
|
||||||
|
"enabled": true,
|
||||||
|
"destOverride": [
|
||||||
|
"http",
|
||||||
|
"tls"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -109,6 +109,12 @@
|
|||||||
<Compile Include="Forms\BaseServerForm.Designer.cs">
|
<Compile Include="Forms\BaseServerForm.Designer.cs">
|
||||||
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\MainMsgControl.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\MainMsgControl.Designer.cs">
|
||||||
|
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\MsgFilterSetForm.cs">
|
<Compile Include="Forms\MsgFilterSetForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -286,6 +292,12 @@
|
|||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\MainMsgControl.resx">
|
||||||
|
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\MainMsgControl.zh-Hans.resx">
|
||||||
|
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Forms\MsgFilterSetForm.resx">
|
<EmbeddedResource Include="Forms\MsgFilterSetForm.resx">
|
||||||
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@@ -462,6 +474,10 @@
|
|||||||
<None Include="Resources\minimize.png" />
|
<None Include="Resources\minimize.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<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\share.png" />
|
||||||
<None Include="Resources\promotion.png" />
|
<None Include="Resources\promotion.png" />
|
||||||
<None Include="Resources\sub.png" />
|
<None Include="Resources\sub.png" />
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 60 KiB |
Reference in New Issue
Block a user