mirror of https://github.com/2dust/v2rayN
commit
973d4ddbb2
|
@ -35,6 +35,7 @@ Global
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
RESX_SortFileContentOnSave = True
|
||||||
SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E}
|
SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace v2rayN.Base
|
||||||
{
|
{
|
||||||
ThreadPool.QueueUserWorkItem((c) =>
|
ThreadPool.QueueUserWorkItem((c) =>
|
||||||
{
|
{
|
||||||
var ctx = c as HttpListenerContext;
|
HttpListenerContext ctx = c as HttpListenerContext;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string address = ctx.Request.LocalEndPoint.Address.ToString();
|
string address = ctx.Request.LocalEndPoint.Address.ToString();
|
||||||
|
|
|
@ -17,8 +17,10 @@ namespace v2rayN.Base
|
||||||
this.port = port;
|
this.port = port;
|
||||||
this._responderMethod = method;
|
this._responderMethod = method;
|
||||||
|
|
||||||
Thread thread = new Thread(StartListen);
|
Thread thread = new Thread(StartListen)
|
||||||
thread.IsBackground = true;
|
{
|
||||||
|
IsBackground = true
|
||||||
|
};
|
||||||
thread.Start();
|
thread.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +48,10 @@ namespace v2rayN.Base
|
||||||
}
|
}
|
||||||
|
|
||||||
TcpClient socket = listener.AcceptTcpClient();
|
TcpClient socket = listener.AcceptTcpClient();
|
||||||
Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread));
|
Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread))
|
||||||
thread.IsBackground = true;
|
{
|
||||||
|
IsBackground = true
|
||||||
|
};
|
||||||
thread.Start(socket);
|
thread.Start(socket);
|
||||||
Thread.Sleep(1);
|
Thread.Sleep(1);
|
||||||
}
|
}
|
||||||
|
@ -56,19 +60,19 @@ namespace v2rayN.Base
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var socket = obj as TcpClient;
|
TcpClient socket = obj as TcpClient;
|
||||||
|
|
||||||
var inputStream = new BufferedStream(socket.GetStream());
|
BufferedStream inputStream = new BufferedStream(socket.GetStream());
|
||||||
var outputStream = new StreamWriter(new BufferedStream(socket.GetStream()));
|
StreamWriter outputStream = new StreamWriter(new BufferedStream(socket.GetStream()));
|
||||||
if (inputStream.CanRead)
|
if (inputStream.CanRead)
|
||||||
{
|
{
|
||||||
var data = ReadStream(inputStream);
|
string data = ReadStream(inputStream);
|
||||||
|
|
||||||
if (data.Contains("/pac/"))
|
if (data.Contains("/pac/"))
|
||||||
{
|
{
|
||||||
if (_responderMethod != null)
|
if (_responderMethod != null)
|
||||||
{
|
{
|
||||||
var address = ((IPEndPoint)socket.Client.LocalEndPoint).Address.ToString();
|
string address = ((IPEndPoint)socket.Client.LocalEndPoint).Address.ToString();
|
||||||
Utils.SaveLog("WebserverB Request " + address);
|
Utils.SaveLog("WebserverB Request " + address);
|
||||||
string pac = _responderMethod(address);
|
string pac = _responderMethod(address);
|
||||||
|
|
||||||
|
@ -118,7 +122,7 @@ namespace v2rayN.Base
|
||||||
|
|
||||||
private void WriteStream(StreamWriter outputStream, string pac)
|
private void WriteStream(StreamWriter outputStream, string pac)
|
||||||
{
|
{
|
||||||
var content_type = "application/x-ns-proxy-autoconfig";
|
string content_type = "application/x-ns-proxy-autoconfig";
|
||||||
outputStream.WriteLine("HTTP/1.1 200 OK");
|
outputStream.WriteLine("HTTP/1.1 200 OK");
|
||||||
outputStream.WriteLine(String.Format("Content-Type:{0}", content_type));
|
outputStream.WriteLine(String.Format("Content-Type:{0}", content_type));
|
||||||
outputStream.WriteLine("Connection: close");
|
outputStream.WriteLine("Connection: close");
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace v2rayN.Base
|
||||||
int MaxWidth = 0;
|
int MaxWidth = 0;
|
||||||
Graphics graphics = this.CreateGraphics();
|
Graphics graphics = this.CreateGraphics();
|
||||||
Font font = this.Font;
|
Font font = this.Font;
|
||||||
ListView.ListViewItemCollection items = this.Items;
|
ListViewItemCollection items = this.Items;
|
||||||
|
|
||||||
string str;
|
string str;
|
||||||
int width;
|
int width;
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace v2rayN.Base
|
||||||
|
|
||||||
public static bool IsWhiteSpace(this string value)
|
public static bool IsWhiteSpace(this string value)
|
||||||
{
|
{
|
||||||
foreach (var c in value)
|
foreach (char c in value)
|
||||||
{
|
{
|
||||||
if (char.IsWhiteSpace(c)) continue;
|
if (char.IsWhiteSpace(c)) continue;
|
||||||
|
|
||||||
|
|
|
@ -117,274 +117,148 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer2Form</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.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=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</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="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 27</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>313, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>6, 12</value>
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Alias (remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Server</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.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="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit custom configuration server</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>432, 104</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 211</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 201</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.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="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>446, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>611, 271</value>
|
<value>611, 271</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
||||||
<value>0</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
<value>Edit custom configuration server</value>
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>396, 17</value>
|
<value>396, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>&Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>303, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>&OK</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 10</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>611, 201</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</data>
|
||||||
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>Address</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>446, 26</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>113, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>22</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>* Fill in manually</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 27</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Text" xml:space="preserve">
|
||||||
|
<value>Alias (remarks)</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>611, 10</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 211</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>611, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>432, 104</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>23</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>313, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>11</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -117,25 +117,25 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑自定义配置服务器</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>服务器</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>地址(address)</value>
|
||||||
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>*手填,方便识别管理</value>
|
<value>*手填,方便识别管理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Text" xml:space="preserve">
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<value>别名(remarks)</value>
|
<value>别名(remarks)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>地址(address)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑自定义配置服务器</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -121,8 +121,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
string msg;
|
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg);
|
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
|
|
|
@ -118,57 +118,43 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<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" />
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 291</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>Edit or add a [Shadowsocks] server</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>396, 17</value>
|
<value>396, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>4</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>&Cancel</value>
|
<value>&Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>btnClose</value>
|
<value>303, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>panel2</value>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>&OK</value>
|
||||||
</data>
|
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>337, 158</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbSecurity.Items" xml:space="preserve">
|
<data name="cmbSecurity.Items" xml:space="preserve">
|
||||||
<value>aes-256-cfb</value>
|
<value>aes-256-cfb</value>
|
||||||
|
@ -203,212 +189,20 @@
|
||||||
<data name="cmbSecurity.TabIndex" type="System.Int32, mscorlib">
|
<data name="cmbSecurity.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>6</value>
|
<value>6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.Name" xml:space="preserve">
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>cmbSecurity</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.Type" xml:space="preserve">
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>0, 35</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.Parent" xml:space="preserve">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>groupBox1</value>
|
<value>547, 196</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 154</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>194, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.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=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 158</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Alias (remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>True</value>
|
<value>Server</value>
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 124</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>Encryption</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 85</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
|
||||||
<value>*</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Name" xml:space="preserve">
|
|
||||||
<value>txtId</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.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=">>txtId.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 89</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Password</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 56</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>194, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Name" xml:space="preserve">
|
|
||||||
<value>txtPort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.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=">>txtPort.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Server port</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 27</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>359, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.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=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
|
@ -425,93 +219,104 @@
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>Server address</value>
|
<value>Server address</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>label1</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>337, 158</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>groupBox1</value>
|
<value>113, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>22</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>* Fill in manually</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Server port</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 89</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>Password</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 124</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>Encryption</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 158</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>10</value>
|
<value>10</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<value>Alias (remarks)</value>
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>0, 35</value>
|
<value>162, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
<value>547, 196</value>
|
<value>Import configuration file</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>3</value>
|
<value>235, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
<value>Server</value>
|
<value>Import URL from clipboard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>groupBox1</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>547, 25</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>$this</value>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
<data name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0</value>
|
<value>17, 17</value>
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 231</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Top</value>
|
<value>Top</value>
|
||||||
|
@ -525,82 +330,55 @@
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>6</value>
|
<value>6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>panel1</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>0, 231</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>$this</value>
|
<value>547, 60</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>2</value>
|
<value>7</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>17, 17</value>
|
<value>127, 27</value>
|
||||||
</metadata>
|
|
||||||
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>235, 22</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>Import URL from clipboard</value>
|
<value>359, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>162, 21</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>Import configuration file</value>
|
<value>127, 85</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
||||||
<value>0, 0</value>
|
<value>*</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>547, 25</value>
|
<value>278, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>8</value>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Name" xml:space="preserve">
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>menuServer</value>
|
<value>127, 56</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Type" xml:space="preserve">
|
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>194, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Parent" xml:space="preserve">
|
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>True</value>
|
<value>127, 154</value>
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>547, 291</value>
|
<value>194, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>Edit or add a [Shadowsocks] server</value>
|
<value>11</value>
|
||||||
</data>
|
|
||||||
<data name=">>MenuItem1.Name" xml:space="preserve">
|
|
||||||
<value>MenuItem1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>MenuItem1.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=">>menuItemImportClipboard.Name" xml:space="preserve">
|
|
||||||
<value>menuItemImportClipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuItemImportClipboard.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=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer3Form</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -117,32 +117,38 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑或添加[Shadowsocks]服务器</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>*手填,方便识别管理</value>
|
<value>确定(&O)</value>
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>别名(remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>加密方式</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>密码</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>服务器端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>服务器地址</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>确定(&O)</value>
|
<value>服务器地址</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>*手填,方便识别管理</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>服务器端口</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>密码</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>加密方式</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Text" xml:space="preserve">
|
||||||
|
<value>别名(remarks)</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>导入配置文件</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
<value>从剪贴板导入URL</value>
|
<value>从剪贴板导入URL</value>
|
||||||
|
@ -150,10 +156,4 @@
|
||||||
<data name="menuItemScanScreen.Text" xml:space="preserve">
|
<data name="menuItemScanScreen.Text" xml:space="preserve">
|
||||||
<value>扫描屏幕上的二维码</value>
|
<value>扫描屏幕上的二维码</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>导入配置文件</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑或添加[Shadowsocks]服务器</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -110,8 +110,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
string msg;
|
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg);
|
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
|
|
|
@ -118,107 +118,104 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<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" />
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 291</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>Edit or add a [Socks] server</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>396, 17</value>
|
<value>396, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>4</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>&Cancel</value>
|
<value>&Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>btnClose</value>
|
<value>303, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>panel2</value>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>&OK</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>127, 84</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>278, 21</value>
|
<value>0, 35</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtSecurity.TabIndex" type="System.Int32, mscorlib">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>26</value>
|
<value>547, 196</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtSecurity.Name" xml:space="preserve">
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>txtSecurity</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtSecurity.Type" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>Server</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtSecurity.Parent" xml:space="preserve">
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSecurity.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<value>12, 31</value>
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>12, 88</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>25</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>User(Optional)</value>
|
<value>Server address</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>label4</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>337, 158</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>groupBox1</value>
|
<value>113, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>127, 117</value>
|
<value>* Fill in manually</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>*</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>278, 21</value>
|
<value>12, 60</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>24</value>
|
<value>71, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtId.Name" xml:space="preserve">
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>txtId</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.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=">>txtId.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Server port</value>
|
||||||
|
</data>
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -237,65 +234,23 @@
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>Password(Optional)</value>
|
<value>Password(Optional)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>337, 158</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>12, 88</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>22</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>* Fill in manually</value>
|
<value>25</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
<data name="label4.Text" xml:space="preserve">
|
||||||
<value>label13</value>
|
<value>User(Optional)</value>
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 154</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>194, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.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=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
|
@ -312,188 +267,29 @@
|
||||||
<data name="label6.Text" xml:space="preserve">
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<value>Alias (remarks)</value>
|
<value>Alias (remarks)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>label6</value>
|
<value>162, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>Import configuration file</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>groupBox1</value>
|
<value>235, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
<value>6</value>
|
<value>Import URL from clipboard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 56</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>194, 21</value>
|
<value>547, 25</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Name" xml:space="preserve">
|
|
||||||
<value>txtPort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.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=">>txtPort.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Server port</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 27</value>
|
<value>17, 17</value>
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>359, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.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=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 31</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Server address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 35</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 196</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.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=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 231</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Top</value>
|
<value>Top</value>
|
||||||
|
@ -507,82 +303,64 @@
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>6</value>
|
<value>6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>panel1</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>0, 231</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>$this</value>
|
<value>547, 60</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>2</value>
|
<value>7</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>17, 17</value>
|
<value>127, 27</value>
|
||||||
</metadata>
|
|
||||||
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>235, 22</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>Import URL from clipboard</value>
|
<value>359, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>162, 21</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>Import configuration file</value>
|
<value>127, 117</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
||||||
<value>0, 0</value>
|
<value>*</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>547, 25</value>
|
<value>278, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>8</value>
|
<value>24</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Name" xml:space="preserve">
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>menuServer</value>
|
<value>127, 56</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Type" xml:space="preserve">
|
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>194, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Parent" xml:space="preserve">
|
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>True</value>
|
<value>127, 154</value>
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>547, 291</value>
|
<value>194, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>Edit or add a [Socks] server</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>MenuItem1.Name" xml:space="preserve">
|
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>MenuItem1</value>
|
<value>127, 84</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>MenuItem1.Type" xml:space="preserve">
|
<data name="txtSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>278, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuItemImportClipboard.Name" xml:space="preserve">
|
<data name="txtSecurity.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>menuItemImportClipboard</value>
|
<value>26</value>
|
||||||
</data>
|
|
||||||
<data name=">>menuItemImportClipboard.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=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer4Form</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -117,27 +117,33 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑或添加[Socks]服务器</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
<value>65, 12</value>
|
||||||
<value>127, 85</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>12, 89</value>
|
<value>服务器地址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>77, 12</value>
|
<value>*手填,方便识别管理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>用户名(可选)</value>
|
<value>65, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>127, 115</value>
|
<value>服务器端口</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>12, 119</value>
|
<value>12, 119</value>
|
||||||
|
@ -148,8 +154,14 @@
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>密码(可选)</value>
|
<value>密码(可选)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>*手填,方便识别管理</value>
|
<value>12, 89</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>用户名(可选)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>83, 12</value>
|
<value>83, 12</value>
|
||||||
|
@ -157,21 +169,6 @@
|
||||||
<data name="label6.Text" xml:space="preserve">
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<value>别名(remarks)</value>
|
<value>别名(remarks)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>服务器端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>服务器地址</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>92, 21</value>
|
<value>92, 21</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -184,7 +181,10 @@
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
<value>从剪贴板导入URL</value>
|
<value>从剪贴板导入URL</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>编辑或添加[Socks]服务器</value>
|
<value>127, 115</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 85</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -207,9 +207,11 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog();
|
OpenFileDialog fileDialog = new OpenFileDialog
|
||||||
fileDialog.Multiselect = false;
|
{
|
||||||
fileDialog.Filter = "Config|*.json|All|*.*";
|
Multiselect = false,
|
||||||
|
Filter = "Config|*.json|All|*.*"
|
||||||
|
};
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -256,8 +258,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
string msg;
|
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg);
|
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -117,51 +117,63 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑或添加[VMess]服务器</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID.Text" xml:space="preserve">
|
<data name="btnGUID.Text" xml:space="preserve">
|
||||||
<value>生成(&G)</value>
|
<value>生成(&G)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>*手填,方便识别管理</value>
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 171</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>211, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 143</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>211, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>不清楚则保持默认值</value>
|
<value>不清楚则保持默认值</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
<value>83, 12</value>
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label24.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>3)QUIC 加密密钥</value>
|
<value>地址(address)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Text" xml:space="preserve">
|
<data name="label10.Text" xml:space="preserve">
|
||||||
<value>4)QUIC 加密方式</value>
|
<value>伪装域名(host)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>53, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.Text" xml:space="preserve">
|
<data name="label11.Text" xml:space="preserve">
|
||||||
<value>默认true</value>
|
<value>伪装类型(type)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>149, 12</value>
|
<value>197, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label20.Text" xml:space="preserve">
|
<data name="label12.Text" xml:space="preserve">
|
||||||
<value>3)h2 host中间逗号(,)隔开</value>
|
<value>*tcp或kcp或QUIC伪装类型,默认none</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>65, 12</value>
|
<value>*手填,方便识别管理</value>
|
||||||
</data>
|
|
||||||
<data name="label19.Text" xml:space="preserve">
|
|
||||||
<value>路径(path)</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>161, 12</value>
|
<value>161, 12</value>
|
||||||
|
@ -175,83 +187,11 @@
|
||||||
<data name="label15.Text" xml:space="preserve">
|
<data name="label15.Text" xml:space="preserve">
|
||||||
<value>底层传输安全</value>
|
<value>底层传输安全</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>197, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Text" xml:space="preserve">
|
|
||||||
<value>*tcp或kcp或QUIC伪装类型,默认none</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>124, 58</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>334, 51</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Text" xml:space="preserve">
|
|
||||||
<value>伪装类型(type)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Text" xml:space="preserve">
|
|
||||||
<value>伪装域名(host)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>143, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Text" xml:space="preserve">
|
|
||||||
<value>*默认tcp,选错会无法连接</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Text" xml:space="preserve">
|
|
||||||
<value>*随便选,建议(auto)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 171</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>107, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Text" xml:space="preserve">
|
|
||||||
<value>传输协议(network)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 143</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>别名(remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>加密方式(security)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>额外ID(alterId)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
<value>65, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="label19.Text" xml:space="preserve">
|
||||||
<value>用户ID(id)</value>
|
<value>路径(path)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>65, 12</value>
|
||||||
|
@ -259,14 +199,71 @@
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>端口(port)</value>
|
<value>端口(port)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>149, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label20.Text" xml:space="preserve">
|
||||||
|
<value>3)h2 host中间逗号(,)隔开</value>
|
||||||
|
</data>
|
||||||
|
<data name="label22.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label22.Text" xml:space="preserve">
|
||||||
|
<value>默认true</value>
|
||||||
|
</data>
|
||||||
|
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label23.Text" xml:space="preserve">
|
||||||
|
<value>4)QUIC 加密方式</value>
|
||||||
|
</data>
|
||||||
|
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label24.Text" xml:space="preserve">
|
||||||
|
<value>3)QUIC 加密密钥</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>用户ID(id)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>额外ID(alterId)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>113, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>加密方式(security)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>83, 12</value>
|
<value>83, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<value>地址(address)</value>
|
<value>别名(remarks)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>确定(&O)</value>
|
<value>107, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Text" xml:space="preserve">
|
||||||
|
<value>传输协议(network)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>113, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label8.Text" xml:space="preserve">
|
||||||
|
<value>*随便选,建议(auto)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>143, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Text" xml:space="preserve">
|
||||||
|
<value>*默认tcp,选错会无法连接</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>92, 21</value>
|
<value>92, 21</value>
|
||||||
|
@ -280,6 +277,12 @@
|
||||||
<data name="MenuItemImportClient.Text" xml:space="preserve">
|
<data name="MenuItemImportClient.Text" xml:space="preserve">
|
||||||
<value>导入客户端配置</value>
|
<value>导入客户端配置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MenuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>171, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItemImportClipboard.Text" xml:space="preserve">
|
||||||
|
<value>从剪贴板导入URL</value>
|
||||||
|
</data>
|
||||||
<data name="MenuItemImportServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="MenuItemImportServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>171, 22</value>
|
<value>171, 22</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -289,13 +292,10 @@
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>168, 6</value>
|
<value>168, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>171, 22</value>
|
<value>124, 58</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItemImportClipboard.Text" xml:space="preserve">
|
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>从剪贴板导入URL</value>
|
<value>334, 51</value>
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑或添加[VMess]服务器</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1,8 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
|
@ -11,8 +9,6 @@ using v2rayN.Mode;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Tool;
|
using v2rayN.Tool;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using v2rayN.Properties;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
|
@ -198,7 +194,7 @@ namespace v2rayN.Forms
|
||||||
ListViewItem lvItem = null;
|
ListViewItem lvItem = null;
|
||||||
if (statistics != null && statistics.Enable)
|
if (statistics != null && statistics.Enable)
|
||||||
{
|
{
|
||||||
var sItem = statistics.Statistic.Find(item_ => item_.itemId == item.getItemId());
|
ServerStatItem sItem = statistics.Statistic.Find(item_ => item_.itemId == item.getItemId());
|
||||||
if (sItem != null)
|
if (sItem != null)
|
||||||
{
|
{
|
||||||
totalUp = Utils.HumanFy(sItem.totalUp);
|
totalUp = Utils.HumanFy(sItem.totalUp);
|
||||||
|
@ -271,8 +267,10 @@ namespace v2rayN.Forms
|
||||||
VmessItem item = config.vmess[k];
|
VmessItem item = config.vmess[k];
|
||||||
string name = item.getSummary();
|
string name = item.getSummary();
|
||||||
|
|
||||||
ToolStripMenuItem ts = new ToolStripMenuItem(name);
|
ToolStripMenuItem ts = new ToolStripMenuItem(name)
|
||||||
ts.Tag = k;
|
{
|
||||||
|
Tag = k
|
||||||
|
};
|
||||||
if (config.index.Equals(k))
|
if (config.index.Equals(k))
|
||||||
{
|
{
|
||||||
ts.Checked = true;
|
ts.Checked = true;
|
||||||
|
@ -422,8 +420,10 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
if (config.vmess[index].configType == (int)EConfigType.Vmess)
|
if (config.vmess[index].configType == (int)EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
var fm = new AddServerForm();
|
AddServerForm fm = new AddServerForm
|
||||||
fm.EditIndex = index;
|
{
|
||||||
|
EditIndex = index
|
||||||
|
};
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
|
@ -433,8 +433,10 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
else if (config.vmess[index].configType == (int)EConfigType.Shadowsocks)
|
else if (config.vmess[index].configType == (int)EConfigType.Shadowsocks)
|
||||||
{
|
{
|
||||||
var fm = new AddServer3Form();
|
AddServer3Form fm = new AddServer3Form
|
||||||
fm.EditIndex = index;
|
{
|
||||||
|
EditIndex = index
|
||||||
|
};
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
|
@ -443,8 +445,10 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
else if (config.vmess[index].configType == (int)EConfigType.Socks)
|
else if (config.vmess[index].configType == (int)EConfigType.Socks)
|
||||||
{
|
{
|
||||||
var fm = new AddServer4Form();
|
AddServer4Form fm = new AddServer4Form
|
||||||
fm.EditIndex = index;
|
{
|
||||||
|
EditIndex = index
|
||||||
|
};
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
|
@ -453,8 +457,10 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var fm2 = new AddServer2Form();
|
AddServer2Form fm2 = new AddServer2Form
|
||||||
fm2.EditIndex = index;
|
{
|
||||||
|
EditIndex = index
|
||||||
|
};
|
||||||
if (fm2.ShowDialog() == DialogResult.OK)
|
if (fm2.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
|
@ -524,8 +530,10 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuAddVmessServer_Click(object sender, EventArgs e)
|
private void menuAddVmessServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AddServerForm fm = new AddServerForm();
|
AddServerForm fm = new AddServerForm
|
||||||
fm.EditIndex = -1;
|
{
|
||||||
|
EditIndex = -1
|
||||||
|
};
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
|
@ -558,8 +566,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuRemoveDuplicateServer_Click(object sender, EventArgs e)
|
private void menuRemoveDuplicateServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
List<Mode.VmessItem> servers = null;
|
Utils.DedupServerList(config.vmess, out List<VmessItem> servers, config.keepOlderDedupl);
|
||||||
Utils.DedupServerList(config.vmess, out servers);
|
|
||||||
int oldCount = config.vmess.Count;
|
int oldCount = config.vmess.Count;
|
||||||
int newCount = servers.Count;
|
int newCount = servers.Count;
|
||||||
if (servers != null)
|
if (servers != null)
|
||||||
|
@ -635,7 +642,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
GetLvSelectedIndex();
|
GetLvSelectedIndex();
|
||||||
ClearTestResult();
|
ClearTestResult();
|
||||||
var statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
|
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
||||||
|
@ -773,9 +780,11 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("CustomServerTips"));
|
UI.Show(UIRes.I18N("CustomServerTips"));
|
||||||
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog();
|
OpenFileDialog fileDialog = new OpenFileDialog
|
||||||
fileDialog.Multiselect = false;
|
{
|
||||||
fileDialog.Filter = "Config|*.json|All|*.*";
|
Multiselect = false,
|
||||||
|
Filter = "Config|*.json|All|*.*"
|
||||||
|
};
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -801,8 +810,10 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuAddShadowsocksServer_Click(object sender, EventArgs e)
|
private void menuAddShadowsocksServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var fm = new AddServer3Form();
|
AddServer3Form fm = new AddServer3Form
|
||||||
fm.EditIndex = -1;
|
{
|
||||||
|
EditIndex = -1
|
||||||
|
};
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
|
@ -814,8 +825,10 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void menuAddSocksServer_Click(object sender, EventArgs e)
|
private void menuAddSocksServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var fm = new AddServer4Form();
|
AddServer4Form fm = new AddServer4Form
|
||||||
fm.EditIndex = -1;
|
{
|
||||||
|
EditIndex = -1
|
||||||
|
};
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
|
@ -943,7 +956,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void notifyMain_MouseClick(object sender, MouseEventArgs e)
|
private void notifyMain_MouseClick(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
if (e.Button == MouseButtons.Left)
|
||||||
{
|
{
|
||||||
ShowForm();
|
ShowForm();
|
||||||
}
|
}
|
||||||
|
@ -1021,14 +1034,14 @@ namespace v2rayN.Forms
|
||||||
List<string[]> datas = new List<string[]>();
|
List<string[]> datas = new List<string[]>();
|
||||||
for (int i = 0; i < config.vmess.Count; i++)
|
for (int i = 0; i < config.vmess.Count; i++)
|
||||||
{
|
{
|
||||||
var index = statistics.FindIndex(item_ => item_.itemId == config.vmess[i].getItemId());
|
int index = statistics.FindIndex(item_ => item_.itemId == config.vmess[i].getItemId());
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
{
|
{
|
||||||
lvServers.Invoke((MethodInvoker)delegate
|
lvServers.Invoke((MethodInvoker)delegate
|
||||||
{
|
{
|
||||||
lvServers.SuspendLayout();
|
lvServers.SuspendLayout();
|
||||||
|
|
||||||
var indexStart = 9;
|
int indexStart = 9;
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayDown);
|
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayDown);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayUp);
|
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayUp);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalDown);
|
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalDown);
|
||||||
|
@ -1148,7 +1161,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
for (int k = 0; k < menuSysAgentMode.DropDownItems.Count; k++)
|
for (int k = 0; k < menuSysAgentMode.DropDownItems.Count; k++)
|
||||||
{
|
{
|
||||||
var item = ((ToolStripMenuItem)menuSysAgentMode.DropDownItems[k]);
|
ToolStripMenuItem item = ((ToolStripMenuItem)menuSysAgentMode.DropDownItems[k]);
|
||||||
item.Checked = (type == k);
|
item.Checked = (type == k);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1201,8 +1214,8 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var fileName = Utils.GetPath(downloadHandle.DownloadFileName);
|
string fileName = Utils.GetPath(downloadHandle.DownloadFileName);
|
||||||
var process = Process.Start("v2rayUpgrade.exe", fileName);
|
Process process = Process.Start("v2rayUpgrade.exe", fileName);
|
||||||
if (process.Id > 0)
|
if (process.Id > 0)
|
||||||
{
|
{
|
||||||
menuExit_Click(null, null);
|
menuExit_Click(null, null);
|
||||||
|
@ -1311,7 +1324,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
var result = args.Msg;
|
string result = args.Msg;
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -1353,12 +1366,12 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void tsbAbout_Click(object sender, EventArgs e)
|
private void tsbAbout_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Process.Start(Global.AboutUrl);
|
Process.Start(Global.AboutUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbPromotion_Click(object sender, EventArgs e)
|
private void tsbPromotion_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}?t={DateTime.Now.Ticks}");
|
Process.Start($"{Utils.Base64Decode(Global.PromotionUrl)}?t={DateTime.Now.Ticks}");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1432,7 +1445,7 @@ namespace v2rayN.Forms
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
AppendText(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}");
|
AppendText(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}");
|
||||||
var result = Utils.Base64Decode(args.Msg);
|
string result = Utils.Base64Decode(args.Msg);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
AppendText(false, $"{hashCode}{UIRes.I18N("MsgSubscriptionDecodingFailed")}");
|
AppendText(false, $"{hashCode}{UIRes.I18N("MsgSubscriptionDecodingFailed")}");
|
||||||
|
@ -1490,7 +1503,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void tsbV2rayWebsite_Click(object sender, EventArgs e)
|
private void tsbV2rayWebsite_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Process.Start(Global.v2rayWebsiteUrl);
|
Process.Start(Global.v2rayWebsiteUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -118,23 +118,34 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<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="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>301, 534</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>添加[VMess]服务器</value>
|
<value>196, 142</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>300, 22</value>
|
<value>服务器列表</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>添加[Shadowsocks]服务器</value>
|
<value>信息</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>300, 22</value>
|
<value>
|
||||||
</data>
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||||
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
||||||
<value>添加[Socks]服务器</value>
|
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
||||||
|
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
||||||
|
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
||||||
|
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
||||||
|
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
||||||
|
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
||||||
|
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
||||||
|
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
||||||
|
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
||||||
|
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
||||||
|
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
||||||
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
|
@ -148,26 +159,35 @@
|
||||||
<data name="menuAddServers.Text" xml:space="preserve">
|
<data name="menuAddServers.Text" xml:space="preserve">
|
||||||
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>195, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAddServers2.Text" xml:space="preserve">
|
||||||
|
<value>从剪贴板导入批量URL</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen.Text" xml:space="preserve">
|
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
|
||||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
<value>添加[Shadowsocks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveServer.Text" xml:space="preserve">
|
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
||||||
<value>移除所选服务器(多选) (Delete)</value>
|
<value>添加[Socks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
||||||
<value>移除重复的服务器</value>
|
<value>添加[VMess]服务器</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuCopyPACUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>195, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuCopyPACUrl.Text" xml:space="preserve">
|
||||||
|
<value>复制本地PAC网址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
|
@ -175,74 +195,11 @@
|
||||||
<data name="menuCopyServer.Text" xml:space="preserve">
|
<data name="menuCopyServer.Text" xml:space="preserve">
|
||||||
<value>克隆所选服务器</value>
|
<value>克隆所选服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
<data name="menuExit.Text" xml:space="preserve">
|
||||||
<value>设为活动服务器 (Enter)</value>
|
<value>退出</value>
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuTcpingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>300, 22</value>
|
<value>300, 22</value>
|
||||||
|
@ -268,38 +225,6 @@
|
||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
||||||
<value>批量导出订阅内容至剪贴板(多选)</value>
|
<value>批量导出订阅内容至剪贴板(多选)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>73, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Text" xml:space="preserve">
|
|
||||||
<value> 服务器 </value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>301, 534</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>316, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuNotEnabledHttp.Text" xml:space="preserve">
|
|
||||||
<value>关闭Http代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -318,41 +243,83 @@
|
||||||
<data name="menuKeep.Text" xml:space="preserve">
|
<data name="menuKeep.Text" xml:space="preserve">
|
||||||
<value>仅开启Http代理,并清除系统代理</value>
|
<value>仅开启Http代理,并清除系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>316, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepPAC.Text" xml:space="preserve">
|
|
||||||
<value>仅开启PAC,并清除系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepNothing.Text" xml:space="preserve">
|
<data name="menuKeepNothing.Text" xml:space="preserve">
|
||||||
<value>仅开启Http代理,不改变系统代理</value>
|
<value>仅开启Http代理,不改变系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>316, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuKeepPAC.Text" xml:space="preserve">
|
||||||
|
<value>仅开启PAC,并清除系统代理</value>
|
||||||
|
</data>
|
||||||
<data name="menuKeepPACNothing.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepPACNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>316, 22</value>
|
<value>316, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuKeepPACNothing.Text" xml:space="preserve">
|
<data name="menuKeepPACNothing.Text" xml:space="preserve">
|
||||||
<value>仅开启PAC,不改变系统代理</value>
|
<value>仅开启PAC,不改变系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
<value>Http代理</value>
|
<value>下移至底 (B)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers.Text" xml:space="preserve">
|
<data name="menuMoveDown.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>下移 (D)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
<data name="menuMoveTop.Text" xml:space="preserve">
|
||||||
<value>从剪贴板导入批量URL</value>
|
<value>上移至顶 (T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Text" xml:space="preserve">
|
||||||
|
<value>上移 (U)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>316, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuNotEnabledHttp.Text" xml:space="preserve">
|
||||||
|
<value>关闭Http代理</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuPingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRealPingServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
||||||
|
<value>移除重复的服务器</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveServer.Text" xml:space="preserve">
|
||||||
|
<value>移除所选服务器(多选) (Delete)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuScanScreen.Text" xml:space="preserve">
|
||||||
|
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
|
@ -360,50 +327,114 @@
|
||||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
<data name="menuScanScreen2.Text" xml:space="preserve">
|
||||||
<value>扫描屏幕上的二维码</value>
|
<value>扫描屏幕上的二维码</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyPACUrl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>全选 (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyPACUrl.Text" xml:space="preserve">
|
<data name="menuServers.Text" xml:space="preserve">
|
||||||
<value>复制本地PAC网址</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>192, 6</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
||||||
|
<value>设为活动服务器 (Enter)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSpeedServer.Text" xml:space="preserve">
|
||||||
|
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Text" xml:space="preserve">
|
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||||
<value>退出</value>
|
<value>Http代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>196, 142</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="menuTcpingServer.Text" xml:space="preserve">
|
||||||
<value>服务器列表</value>
|
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</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="groupBox2.Text" xml:space="preserve">
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>信息</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>124, 22</value>
|
<value>220, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>订阅设置</value>
|
<value>192, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>124, 22</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>更新订阅</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>61, 53</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSub.Text" xml:space="preserve">
|
<data name="tsbAbout.Text" xml:space="preserve">
|
||||||
<value> 订阅 </value>
|
<value>v2rayN 项目</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
||||||
|
<value>简化PAC (请设置Core路由)</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>85, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
||||||
|
<value> 检查更新 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
||||||
|
<value>v2rayCore</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
||||||
|
<value>v2rayN</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>223, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
||||||
|
<value>PAC</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
|
||||||
|
GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>76, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbClose.Text" xml:space="preserve">
|
||||||
|
<value> 关闭窗口 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>69, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbHelp.Text" xml:space="preserve">
|
||||||
|
<value> 帮助 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>76, 53</value>
|
<value>76, 53</value>
|
||||||
|
@ -411,6 +442,12 @@
|
||||||
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
||||||
<value> 参数设置 </value>
|
<value> 参数设置 </value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>68, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbPromotion.Text" xml:space="preserve">
|
||||||
|
<value> 推广 </value>
|
||||||
|
</data>
|
||||||
<data name="tsbReload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="tsbReload.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
@ -428,68 +465,31 @@
|
||||||
<data name="tsbReload.Text" xml:space="preserve">
|
<data name="tsbReload.Text" xml:space="preserve">
|
||||||
<value> 重启服务 </value>
|
<value> 重启服务 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>223, 22</value>
|
<value>73, 53</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
<data name="tsbServer.Text" xml:space="preserve">
|
||||||
<value>v2rayN</value>
|
<value> 服务器 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>223, 22</value>
|
<value>61, 53</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
<data name="tsbSub.Text" xml:space="preserve">
|
||||||
<value>v2rayCore</value>
|
<value> 订阅 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>223, 22</value>
|
<value>124, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
<data name="tsbSubSetting.Text" xml:space="preserve">
|
||||||
<value>PAC</value>
|
<value>订阅设置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>220, 6</value>
|
<value>124, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||||
<value>223, 22</value>
|
<value>更新订阅</value>
|
||||||
</data>
|
|
||||||
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
|
||||||
<value>简化PAC (请设置Core路由)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>85, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
|
||||||
<value> 检查更新 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN 项目</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
||||||
<value>V2Ray 官网</value>
|
<value>V2Ray 官网</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>69, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Text" xml:space="preserve">
|
|
||||||
<value> 帮助 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Text" xml:space="preserve">
|
|
||||||
<value> 推广 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>
|
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
|
||||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
|
|
||||||
GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Text" xml:space="preserve">
|
|
||||||
<value> 关闭窗口 </value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -84,6 +84,7 @@
|
||||||
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.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
||||||
this.cbFreshrate = new System.Windows.Forms.ComboBox();
|
this.cbFreshrate = new System.Windows.Forms.ComboBox();
|
||||||
this.lbFreshrate = new System.Windows.Forms.Label();
|
this.lbFreshrate = new System.Windows.Forms.Label();
|
||||||
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
|
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
|
||||||
|
@ -510,6 +511,7 @@
|
||||||
// tabPage7
|
// tabPage7
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||||
|
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
|
||||||
this.tabPage7.Controls.Add(this.cbFreshrate);
|
this.tabPage7.Controls.Add(this.cbFreshrate);
|
||||||
this.tabPage7.Controls.Add(this.lbFreshrate);
|
this.tabPage7.Controls.Add(this.lbFreshrate);
|
||||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
||||||
|
@ -520,6 +522,12 @@
|
||||||
this.tabPage7.Name = "tabPage7";
|
this.tabPage7.Name = "tabPage7";
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
this.tabPage7.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// chkKeepOlderDedupl
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl");
|
||||||
|
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
|
||||||
|
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// cbFreshrate
|
// cbFreshrate
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
||||||
|
@ -714,5 +722,6 @@
|
||||||
private System.Windows.Forms.TextBox txtuserPacRule;
|
private System.Windows.Forms.TextBox txtuserPacRule;
|
||||||
private System.Windows.Forms.Panel panel4;
|
private System.Windows.Forms.Panel panel4;
|
||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -77,8 +77,7 @@ namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
//路由
|
//路由
|
||||||
cmbdomainStrategy.Text = config.domainStrategy;
|
cmbdomainStrategy.Text = config.domainStrategy;
|
||||||
int routingMode = 0;
|
int.TryParse(config.routingMode, out int routingMode);
|
||||||
int.TryParse(config.routingMode, out routingMode);
|
|
||||||
cmbroutingMode.SelectedIndex = routingMode;
|
cmbroutingMode.SelectedIndex = routingMode;
|
||||||
|
|
||||||
txtUseragent.Text = Utils.List2String(config.useragent, true);
|
txtUseragent.Text = Utils.List2String(config.useragent, true);
|
||||||
|
@ -112,13 +111,13 @@ namespace v2rayN.Forms
|
||||||
txturlGFWList.Text = config.urlGFWList;
|
txturlGFWList.Text = config.urlGFWList;
|
||||||
|
|
||||||
chkAllowLANConn.Checked = config.allowLANConn;
|
chkAllowLANConn.Checked = config.allowLANConn;
|
||||||
|
chkEnableStatistics.Checked = config.enableStatistics;
|
||||||
|
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
||||||
|
|
||||||
|
|
||||||
var enableStatistics = config.enableStatistics;
|
|
||||||
chkEnableStatistics.Checked = enableStatistics;
|
|
||||||
|
|
||||||
|
|
||||||
var cbSource = new ComboItem[]
|
ComboItem[] cbSource = new ComboItem[]
|
||||||
{
|
{
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = UIRes.I18N("QuickFresh")},
|
new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = UIRes.I18N("QuickFresh")},
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = UIRes.I18N("MediumFresh")},
|
new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = UIRes.I18N("MediumFresh")},
|
||||||
|
@ -340,9 +339,10 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
config.allowLANConn = chkAllowLANConn.Checked;
|
config.allowLANConn = chkAllowLANConn.Checked;
|
||||||
|
|
||||||
var lastEnableStatistics = config.enableStatistics;
|
bool lastEnableStatistics = config.enableStatistics;
|
||||||
config.enableStatistics = chkEnableStatistics.Checked;
|
config.enableStatistics = chkEnableStatistics.Checked;
|
||||||
config.statisticsFreshRate = (int)cbFreshrate.SelectedValue;
|
config.statisticsFreshRate = (int)cbFreshrate.SelectedValue;
|
||||||
|
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
||||||
|
|
||||||
//if(lastEnableStatistics != config.enableStatistics)
|
//if(lastEnableStatistics != config.enableStatistics)
|
||||||
//{
|
//{
|
||||||
|
@ -389,25 +389,25 @@ namespace v2rayN.Forms
|
||||||
txtUserblock.Text = Utils.GetEmbedText(Global.CustomRoutingFileName + Global.blockTag);
|
txtUserblock.Text = Utils.GetEmbedText(Global.CustomRoutingFileName + Global.blockTag);
|
||||||
cmbroutingMode.SelectedIndex = 3;
|
cmbroutingMode.SelectedIndex = 3;
|
||||||
|
|
||||||
var lstUrl = new List<string>();
|
List<string> lstUrl = new List<string>();
|
||||||
lstUrl.Add(Global.CustomRoutingListUrl + Global.agentTag);
|
lstUrl.Add(Global.CustomRoutingListUrl + Global.agentTag);
|
||||||
lstUrl.Add(Global.CustomRoutingListUrl + Global.directTag);
|
lstUrl.Add(Global.CustomRoutingListUrl + Global.directTag);
|
||||||
lstUrl.Add(Global.CustomRoutingListUrl + Global.blockTag);
|
lstUrl.Add(Global.CustomRoutingListUrl + Global.blockTag);
|
||||||
|
|
||||||
var lstTxt = new List<TextBox>();
|
List<TextBox> lstTxt = new List<TextBox>();
|
||||||
lstTxt.Add(txtUseragent);
|
lstTxt.Add(txtUseragent);
|
||||||
lstTxt.Add(txtUserdirect);
|
lstTxt.Add(txtUserdirect);
|
||||||
lstTxt.Add(txtUserblock);
|
lstTxt.Add(txtUserblock);
|
||||||
|
|
||||||
for (int k = 0; k < lstUrl.Count; k++)
|
for (int k = 0; k < lstUrl.Count; k++)
|
||||||
{
|
{
|
||||||
var txt = lstTxt[k];
|
TextBox txt = lstTxt[k];
|
||||||
DownloadHandle downloadHandle = new DownloadHandle();
|
DownloadHandle downloadHandle = new DownloadHandle();
|
||||||
downloadHandle.UpdateCompleted += (sender2, args) =>
|
downloadHandle.UpdateCompleted += (sender2, args) =>
|
||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
var result = args.Msg;
|
string result = args.Msg;
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -117,15 +117,95 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>参数设置</value>
|
||||||
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
<value>确定(&O)</value>
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label16.Text" xml:space="preserve">
|
<data name="btnSetDefRountingRule.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>Http代理</value>
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSetDefRountingRule.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>351, 14</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSetDefRountingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>201, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSetDefRountingRule.Text" xml:space="preserve">
|
||||||
|
<value>一键设置默认自定义路由规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowIn2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>102, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowIn2.Text" xml:space="preserve">
|
||||||
|
<value>本地监听端口2</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>144, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowLANConn.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="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>384, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||||
|
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||||
|
<value>去重时保留序号较小的项</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>156, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Text" xml:space="preserve">
|
||||||
|
<value>记录本地日志(默认关闭)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启Mux多路复用(默认开启)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>96, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启流量探测</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>96, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled2.Text" xml:space="preserve">
|
||||||
|
<value>开启流量探测</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>66, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启UDP</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>66, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled2.Text" xml:space="preserve">
|
||||||
|
<value>开启UDP</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>81, 14</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>186, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmblistenerType.Items" xml:space="preserve">
|
<data name="cmblistenerType.Items" xml:space="preserve">
|
||||||
<value>关闭Http代理</value>
|
<value>关闭Http代理</value>
|
||||||
|
@ -148,105 +228,6 @@
|
||||||
<data name="cmblistenerType.Items6" xml:space="preserve">
|
<data name="cmblistenerType.Items6" xml:space="preserve">
|
||||||
<value>仅开启PAC,不改变系统代理</value>
|
<value>仅开启PAC,不改变系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled2.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Text" xml:space="preserve">
|
|
||||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启Mux多路复用(默认开启)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowIn2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>102, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowIn2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口2</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled2.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Text" xml:space="preserve">
|
|
||||||
<value>记录本地日志(默认关闭)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>日志等级</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
|
||||||
<value> Core:基础设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>628, 449</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
|
||||||
<value> 1.代理的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUserdirect.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>628, 449</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage4.Text" xml:space="preserve">
|
|
||||||
<value> 2.直连的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUserblock.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>628, 449</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage5.Text" xml:space="preserve">
|
|
||||||
<value> 3.阻止的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbroutingMode.Items" xml:space="preserve">
|
<data name="cmbroutingMode.Items" xml:space="preserve">
|
||||||
<value>全局</value>
|
<value>全局</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -265,32 +246,57 @@
|
||||||
<data name="cmbroutingMode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbroutingMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>244, 20</value>
|
<value>244, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>634, 455</value>
|
<value>29, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage8.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value> 4.预定义规则 </value>
|
<value>协议</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>3, 89</value>
|
<value>227, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label13.Text" xml:space="preserve">
|
||||||
<value>642, 481</value>
|
<value>自定义GFWList地址(不需自定义请填空白)</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<data name="btnSetDefRountingRule.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<value>191, 12</value>
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label14.Text" xml:space="preserve">
|
||||||
<value>351, 14</value>
|
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>201, 23</value>
|
<value>53, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSetDefRountingRule.Text" xml:space="preserve">
|
<data name="label15.Text" xml:space="preserve">
|
||||||
<value>一键设置默认自定义路由规则</value>
|
<value>域名策略</value>
|
||||||
|
</data>
|
||||||
|
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label16.Text" xml:space="preserve">
|
||||||
|
<value>Http代理</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>本地监听端口</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>协议</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>*设置用户PAC规则,用逗号(,)隔开</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>日志等级</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="labRoutingTips.AutoSize" type="System.Boolean, mscorlib">
|
<data name="labRoutingTips.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -303,70 +309,67 @@
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
<data name="labRoutingTips.Text" xml:space="preserve">
|
||||||
<value>*设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP</value>
|
<value>*设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbdomainStrategy.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>81, 14</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbdomainStrategy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>186, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>域名策略</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>642, 72</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value> Core:路由设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Text" xml:space="preserve">
|
|
||||||
<value> Core:KCP设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>77, 12</value>
|
<value>77, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
<data name="lbFreshrate.Text" xml:space="preserve">
|
||||||
<value>统计刷新频率</value>
|
<value>统计刷新频率</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>384, 16</value>
|
<value>642, 72</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
<value>3, 89</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>144, 16</value>
|
<value>642, 481</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value>允许来自局域网的连接</value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
<value>227, 12</value>
|
<value> Core:路由设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>自定义GFWList地址(不需自定义请填空白)</value>
|
<value>634, 455</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage3.Text" xml:space="preserve">
|
||||||
<value>180, 16</value>
|
<value> 1.代理的Domain或IP </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
<data name="tabPage4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>开机自动启动(可能会不成功)</value>
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage4.Text" xml:space="preserve">
|
||||||
|
<value> 2.直连的Domain或IP </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage5.Text" xml:space="preserve">
|
||||||
|
<value> 3.阻止的Domain或IP </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage6.Text" xml:space="preserve">
|
||||||
|
<value> Core:KCP设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage7.Text" xml:space="preserve">
|
<data name="tabPage7.Text" xml:space="preserve">
|
||||||
<value> v2rayN设置 </value>
|
<value> v2rayN设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>*设置用户PAC规则,用逗号(,)隔开</value>
|
<value>634, 455</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage8.Text" xml:space="preserve">
|
||||||
|
<value> 4.预定义规则 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage9.Text" xml:space="preserve">
|
<data name="tabPage9.Text" xml:space="preserve">
|
||||||
<value> 用户PAC设置 </value>
|
<value> 用户PAC设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>确定(&O)</value>
|
<value>628, 449</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="txtUserblock.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>参数设置</value>
|
<value>628, 449</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUserdirect.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>628, 449</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -117,106 +117,67 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</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="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 441</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<value>0</value>
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkShow.Text" xml:space="preserve">
|
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
||||||
<value>Sharing panel</value>
|
<value>True</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="chkShow.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 16</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>QRCodeControl</value>
|
<value>QRCodeControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>356, 355</value>
|
<value>356, 441</value>
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 371</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkShow.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
|
||||||
<value>Zoom</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.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=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkShow.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkShow.Name" xml:space="preserve">
|
|
||||||
<value>chkShow</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkShow.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
|
||||||
<value>picQRCode</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 70</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="chkShow.AutoSize" type="System.Boolean, mscorlib">
|
<data name="chkShow.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="chkShow.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkShow.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkShow.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkShow.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>25</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkShow.Text" xml:space="preserve">
|
||||||
|
<value>Sharing panel</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 355</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||||
|
<value>Zoom</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>24</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 371</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</data>
|
||||||
|
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 70</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -118,213 +118,123 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</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="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>60, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>&Remove</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>484, 21</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>432, 46</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>SubSettingControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.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="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Name" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>6, 12</value>
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib">
|
||||||
<value>label3</value>
|
<value>zh-Hans</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
||||||
<value>127, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 55</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 55</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>Subscription details</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 9</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
|
||||||
<value>Enable</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Name" xml:space="preserve">
|
|
||||||
<value>chkEnabled</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Address (url)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>406, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
|
||||||
<value>btnRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.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="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>584, 110</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>584, 119</value>
|
<value>584, 119</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>11</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>Remarks</value>
|
<value>484, 21</value>
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 25</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>groupBox2</value>
|
<value>24</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnRemove.Text" xml:space="preserve">
|
||||||
<value>265, 21</value>
|
<value>&Remove</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>406, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>60, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>25</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkEnabled.Text" xml:space="preserve">
|
||||||
|
<value>Enable</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 9</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>584, 110</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>10</value>
|
<value>10</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>Subscription details</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>1</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.Parent" xml:space="preserve">
|
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>$this</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnRemove.Type" xml:space="preserve">
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>12, 25</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>47, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Remarks</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 55</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>txtRemarks</value>
|
<value>Address (url)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>5</value>
|
<value>127, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>265, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 55</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</data>
|
||||||
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>zh-Hans</value>
|
<value>432, 46</value>
|
||||||
</metadata>
|
</data>
|
||||||
|
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>23</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -118,14 +118,17 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<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="btnRemove.Text" xml:space="preserve">
|
||||||
|
<value>移除</value>
|
||||||
|
</data>
|
||||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>48, 16</value>
|
<value>48, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
<data name="chkEnabled.Text" xml:space="preserve">
|
||||||
<value>启用</value>
|
<value>启用</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>移除</value>
|
<value>订阅详情</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>29, 12</value>
|
<value>29, 12</value>
|
||||||
|
@ -139,7 +142,4 @@
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>地址 (url)</value>
|
<value>地址 (url)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>订阅详情</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -35,7 +35,7 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
for (int k = config.subItem.Count - 1; k >= 0; k--)
|
for (int k = config.subItem.Count - 1; k >= 0; k--)
|
||||||
{
|
{
|
||||||
var item = config.subItem[k];
|
SubItem item = config.subItem[k];
|
||||||
if (Utils.IsNullOrEmpty(item.remarks)
|
if (Utils.IsNullOrEmpty(item.remarks)
|
||||||
&& Utils.IsNullOrEmpty(item.url))
|
&& Utils.IsNullOrEmpty(item.url))
|
||||||
{
|
{
|
||||||
|
@ -47,7 +47,7 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in config.subItem)
|
foreach (SubItem item in config.subItem)
|
||||||
{
|
{
|
||||||
SubSettingControl control = new SubSettingControl();
|
SubSettingControl control = new SubSettingControl();
|
||||||
control.OnButtonClicked += Control_OnButtonClicked;
|
control.OnButtonClicked += Control_OnButtonClicked;
|
||||||
|
@ -98,10 +98,12 @@ namespace v2rayN.Forms
|
||||||
|
|
||||||
private void AddSub()
|
private void AddSub()
|
||||||
{
|
{
|
||||||
var subItem = new SubItem();
|
SubItem subItem = new SubItem
|
||||||
subItem.id = string.Empty;
|
{
|
||||||
subItem.remarks = "remarks";
|
id = string.Empty,
|
||||||
subItem.url = "url";
|
remarks = "remarks",
|
||||||
|
url = "url"
|
||||||
|
};
|
||||||
config.subItem.Add(subItem);
|
config.subItem.Add(subItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,61 +118,19 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</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="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>448, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>4</value>
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>&Cancel</value>
|
<value>581, 629</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
<data name="$this.Localizable" type="System.Boolean, mscorlib">
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.AutoScroll" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panCon.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Fill</value>
|
<value>Subscription settings</value>
|
||||||
</data>
|
|
||||||
<data name="panCon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>581, 569</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Name" xml:space="preserve">
|
|
||||||
<value>panCon</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="btnAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
|
@ -189,17 +147,20 @@
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
<value>&Add</value>
|
<value>&Add</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnAdd.Name" xml:space="preserve">
|
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>btnAdd</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnAdd.Type" xml:space="preserve">
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>448, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnAdd.Parent" xml:space="preserve">
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>panel2</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnAdd.ZOrder" xml:space="preserve">
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>&Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
|
@ -216,17 +177,20 @@
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>&OK</value>
|
<value>&OK</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
<data name="panCon.AutoScroll" type="System.Boolean, mscorlib">
|
||||||
<value>btnOK</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
<data name="panCon.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
<data name="panCon.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>panel2</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>2</value>
|
<value>581, 569</value>
|
||||||
|
</data>
|
||||||
|
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Bottom</value>
|
<value>Bottom</value>
|
||||||
|
@ -240,34 +204,4 @@
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>7</value>
|
<value>7</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>581, 629</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Subscription settings</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>SubSettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -117,12 +117,15 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>取消(&C)</value>
|
<value>订阅设置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
<value>添加(&A)</value>
|
<value>添加(&A)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>取消(&C)</value>
|
||||||
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>确定(&O)</value>
|
<value>确定(&O)</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -143,7 +146,4 @@
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>订阅设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
|
@ -30,34 +30,38 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
if (config == null)
|
if (config == null)
|
||||||
{
|
{
|
||||||
config = new Config();
|
config = new Config
|
||||||
config.index = -1;
|
{
|
||||||
config.logEnabled = false;
|
index = -1,
|
||||||
config.loglevel = "warning";
|
logEnabled = false,
|
||||||
config.vmess = new List<VmessItem>();
|
loglevel = "warning",
|
||||||
|
vmess = new List<VmessItem>(),
|
||||||
|
|
||||||
//Mux
|
//Mux
|
||||||
config.muxEnabled = true;
|
muxEnabled = true,
|
||||||
|
|
||||||
////默认监听端口
|
////默认监听端口
|
||||||
//config.pacPort = 8888;
|
//config.pacPort = 8888;
|
||||||
|
|
||||||
// 默认不开启统计
|
// 默认不开启统计
|
||||||
config.enableStatistics = false;
|
enableStatistics = false,
|
||||||
|
|
||||||
// 默认中等刷新率
|
// 默认中等刷新率
|
||||||
config.statisticsFreshRate = (int)Global.StatisticsFreshRate.medium;
|
statisticsFreshRate = (int)Global.StatisticsFreshRate.medium
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//本地监听
|
//本地监听
|
||||||
if (config.inbound == null)
|
if (config.inbound == null)
|
||||||
{
|
{
|
||||||
config.inbound = new List<InItem>();
|
config.inbound = new List<InItem>();
|
||||||
InItem inItem = new InItem();
|
InItem inItem = new InItem
|
||||||
inItem.protocol = Global.InboundSocks;
|
{
|
||||||
inItem.localPort = 10808;
|
protocol = Global.InboundSocks,
|
||||||
inItem.udpEnabled = true;
|
localPort = 10808,
|
||||||
inItem.sniffingEnabled = true;
|
udpEnabled = true,
|
||||||
|
sniffingEnabled = true
|
||||||
|
};
|
||||||
|
|
||||||
config.inbound.Add(inItem);
|
config.inbound.Add(inItem);
|
||||||
|
|
||||||
|
@ -100,14 +104,16 @@ namespace v2rayN.Handler
|
||||||
//kcp
|
//kcp
|
||||||
if (config.kcpItem == null)
|
if (config.kcpItem == null)
|
||||||
{
|
{
|
||||||
config.kcpItem = new KcpItem();
|
config.kcpItem = new KcpItem
|
||||||
config.kcpItem.mtu = 1350;
|
{
|
||||||
config.kcpItem.tti = 50;
|
mtu = 1350,
|
||||||
config.kcpItem.uplinkCapacity = 12;
|
tti = 50,
|
||||||
config.kcpItem.downlinkCapacity = 100;
|
uplinkCapacity = 12,
|
||||||
config.kcpItem.readBufferSize = 2;
|
downlinkCapacity = 100,
|
||||||
config.kcpItem.writeBufferSize = 2;
|
readBufferSize = 2,
|
||||||
config.kcpItem.congestion = false;
|
writeBufferSize = 2,
|
||||||
|
congestion = false
|
||||||
|
};
|
||||||
}
|
}
|
||||||
if (config.uiItem == null)
|
if (config.uiItem == null)
|
||||||
{
|
{
|
||||||
|
@ -118,6 +124,14 @@ namespace v2rayN.Handler
|
||||||
//{
|
//{
|
||||||
// config.pacPort = 8888;
|
// config.pacPort = 8888;
|
||||||
//}
|
//}
|
||||||
|
if (Utils.IsNullOrEmpty(config.speedTestUrl))
|
||||||
|
{
|
||||||
|
config.speedTestUrl = Global.SpeedTestUrl;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(config.speedPingTestUrl))
|
||||||
|
{
|
||||||
|
config.speedPingTestUrl = Global.SpeedPingTestUrl;
|
||||||
|
}
|
||||||
if (Utils.IsNullOrEmpty(config.urlGFWList))
|
if (Utils.IsNullOrEmpty(config.urlGFWList))
|
||||||
{
|
{
|
||||||
config.urlGFWList = Global.GFWLIST_URL;
|
config.urlGFWList = Global.GFWLIST_URL;
|
||||||
|
@ -259,20 +273,22 @@ namespace v2rayN.Handler
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
VmessItem vmessItem = new VmessItem();
|
VmessItem vmessItem = new VmessItem
|
||||||
vmessItem.configVersion = config.vmess[index].configVersion;
|
{
|
||||||
vmessItem.configType = config.vmess[index].configType;
|
configVersion = config.vmess[index].configVersion,
|
||||||
vmessItem.address = config.vmess[index].address;
|
configType = config.vmess[index].configType,
|
||||||
vmessItem.port = config.vmess[index].port;
|
address = config.vmess[index].address,
|
||||||
vmessItem.id = config.vmess[index].id;
|
port = config.vmess[index].port,
|
||||||
vmessItem.alterId = config.vmess[index].alterId;
|
id = config.vmess[index].id,
|
||||||
vmessItem.security = config.vmess[index].security;
|
alterId = config.vmess[index].alterId,
|
||||||
vmessItem.network = config.vmess[index].network;
|
security = config.vmess[index].security,
|
||||||
vmessItem.headerType = config.vmess[index].headerType;
|
network = config.vmess[index].network,
|
||||||
vmessItem.requestHost = config.vmess[index].requestHost;
|
headerType = config.vmess[index].headerType,
|
||||||
vmessItem.path = config.vmess[index].path;
|
requestHost = config.vmess[index].requestHost,
|
||||||
vmessItem.streamSecurity = config.vmess[index].streamSecurity;
|
path = config.vmess[index].path,
|
||||||
vmessItem.remarks = string.Format("{0}-clone", config.vmess[index].remarks);
|
streamSecurity = config.vmess[index].streamSecurity,
|
||||||
|
remarks = string.Format("{0}-clone", config.vmess[index].remarks)
|
||||||
|
};
|
||||||
|
|
||||||
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
||||||
|
|
||||||
|
@ -345,18 +361,20 @@ namespace v2rayN.Handler
|
||||||
VmessItem vmessItem = config.vmess[index];
|
VmessItem vmessItem = config.vmess[index];
|
||||||
if (vmessItem.configType == (int)EConfigType.Vmess)
|
if (vmessItem.configType == (int)EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
VmessQRCode vmessQRCode = new VmessQRCode();
|
VmessQRCode vmessQRCode = new VmessQRCode
|
||||||
vmessQRCode.v = vmessItem.configVersion.ToString();
|
{
|
||||||
vmessQRCode.ps = vmessItem.remarks.TrimEx(); //备注也许很长 ;
|
v = vmessItem.configVersion.ToString(),
|
||||||
vmessQRCode.add = vmessItem.address;
|
ps = vmessItem.remarks.TrimEx(), //备注也许很长 ;
|
||||||
vmessQRCode.port = vmessItem.port.ToString();
|
add = vmessItem.address,
|
||||||
vmessQRCode.id = vmessItem.id;
|
port = vmessItem.port.ToString(),
|
||||||
vmessQRCode.aid = vmessItem.alterId.ToString();
|
id = vmessItem.id,
|
||||||
vmessQRCode.net = vmessItem.network;
|
aid = vmessItem.alterId.ToString(),
|
||||||
vmessQRCode.type = vmessItem.headerType;
|
net = vmessItem.network,
|
||||||
vmessQRCode.host = vmessItem.requestHost;
|
type = vmessItem.headerType,
|
||||||
vmessQRCode.path = vmessItem.path;
|
host = vmessItem.requestHost,
|
||||||
vmessQRCode.tls = vmessItem.streamSecurity;
|
path = vmessItem.path,
|
||||||
|
tls = vmessItem.streamSecurity
|
||||||
|
};
|
||||||
|
|
||||||
url = Utils.ToJson(vmessQRCode);
|
url = Utils.ToJson(vmessQRCode);
|
||||||
url = Utils.Base64Encode(url);
|
url = Utils.Base64Encode(url);
|
||||||
|
@ -365,7 +383,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
else if (vmessItem.configType == (int)EConfigType.Shadowsocks)
|
else if (vmessItem.configType == (int)EConfigType.Shadowsocks)
|
||||||
{
|
{
|
||||||
var remark = string.Empty;
|
string remark = string.Empty;
|
||||||
if (!Utils.IsNullOrEmpty(vmessItem.remarks))
|
if (!Utils.IsNullOrEmpty(vmessItem.remarks))
|
||||||
{
|
{
|
||||||
remark = "#" + WebUtility.UrlEncode(vmessItem.remarks);
|
remark = "#" + WebUtility.UrlEncode(vmessItem.remarks);
|
||||||
|
@ -380,7 +398,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
else if (vmessItem.configType == (int)EConfigType.Socks)
|
else if (vmessItem.configType == (int)EConfigType.Socks)
|
||||||
{
|
{
|
||||||
var remark = string.Empty;
|
string remark = string.Empty;
|
||||||
if (!Utils.IsNullOrEmpty(vmessItem.remarks))
|
if (!Utils.IsNullOrEmpty(vmessItem.remarks))
|
||||||
{
|
{
|
||||||
remark = "#" + WebUtility.UrlEncode(vmessItem.remarks);
|
remark = "#" + WebUtility.UrlEncode(vmessItem.remarks);
|
||||||
|
@ -426,7 +444,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
VmessItem vmess = Utils.DeepCopy<VmessItem>(config.vmess[index]);
|
VmessItem vmess = Utils.DeepCopy(config.vmess[index]);
|
||||||
config.vmess.RemoveAt(index);
|
config.vmess.RemoveAt(index);
|
||||||
config.vmess.Insert(0, vmess);
|
config.vmess.Insert(0, vmess);
|
||||||
if (index < config.index)
|
if (index < config.index)
|
||||||
|
@ -449,7 +467,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
VmessItem vmess = Utils.DeepCopy<VmessItem>(config.vmess[index]);
|
VmessItem vmess = Utils.DeepCopy(config.vmess[index]);
|
||||||
config.vmess.RemoveAt(index);
|
config.vmess.RemoveAt(index);
|
||||||
config.vmess.Insert(index - 1, vmess);
|
config.vmess.Insert(index - 1, vmess);
|
||||||
if (index == config.index + 1)
|
if (index == config.index + 1)
|
||||||
|
@ -469,7 +487,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
VmessItem vmess = Utils.DeepCopy<VmessItem>(config.vmess[index]);
|
VmessItem vmess = Utils.DeepCopy(config.vmess[index]);
|
||||||
config.vmess.RemoveAt(index);
|
config.vmess.RemoveAt(index);
|
||||||
config.vmess.Insert(index + 1, vmess);
|
config.vmess.Insert(index + 1, vmess);
|
||||||
if (index == config.index - 1)
|
if (index == config.index - 1)
|
||||||
|
@ -488,7 +506,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
VmessItem vmess = Utils.DeepCopy<VmessItem>(config.vmess[index]);
|
VmessItem vmess = Utils.DeepCopy(config.vmess[index]);
|
||||||
config.vmess.RemoveAt(index);
|
config.vmess.RemoveAt(index);
|
||||||
config.vmess.Add(vmess);
|
config.vmess.Add(vmess);
|
||||||
if (index < config.index)
|
if (index < config.index)
|
||||||
|
@ -535,10 +553,12 @@ namespace v2rayN.Handler
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
VmessItem vmessItem = new VmessItem();
|
VmessItem vmessItem = new VmessItem
|
||||||
vmessItem.address = newFileName;
|
{
|
||||||
vmessItem.configType = (int)EConfigType.Custom;
|
address = newFileName,
|
||||||
vmessItem.remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString());
|
configType = (int)EConfigType.Custom,
|
||||||
|
remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString())
|
||||||
|
};
|
||||||
|
|
||||||
config.vmess.Add(vmessItem);
|
config.vmess.Add(vmessItem);
|
||||||
if (config.vmess.Count == 1)
|
if (config.vmess.Count == 1)
|
||||||
|
@ -741,7 +761,6 @@ namespace v2rayN.Handler
|
||||||
string[] arrData = clipboardData.Split(Environment.NewLine.ToCharArray());
|
string[] arrData = clipboardData.Split(Environment.NewLine.ToCharArray());
|
||||||
foreach (string str in arrData)
|
foreach (string str in arrData)
|
||||||
{
|
{
|
||||||
string msg;
|
|
||||||
//maybe sub
|
//maybe sub
|
||||||
if (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol))
|
if (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol))
|
||||||
{
|
{
|
||||||
|
@ -751,7 +770,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(str, out msg);
|
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(str, out string msg);
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -791,7 +810,7 @@ namespace v2rayN.Handler
|
||||||
public static int AddSubItem(ref Config config, string url)
|
public static int AddSubItem(ref Config config, string url)
|
||||||
{
|
{
|
||||||
//already exists
|
//already exists
|
||||||
foreach (var sub in config.subItem)
|
foreach (SubItem sub in config.subItem)
|
||||||
{
|
{
|
||||||
if (url == sub.url)
|
if (url == sub.url)
|
||||||
{
|
{
|
||||||
|
@ -799,10 +818,12 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var subItem = new SubItem();
|
SubItem subItem = new SubItem
|
||||||
subItem.id = string.Empty;
|
{
|
||||||
subItem.remarks = "import sub";
|
id = string.Empty,
|
||||||
subItem.url = url;
|
remarks = "import sub",
|
||||||
|
url = url
|
||||||
|
};
|
||||||
config.subItem.Add(subItem);
|
config.subItem.Add(subItem);
|
||||||
|
|
||||||
return SaveSubItem(ref config);
|
return SaveSubItem(ref config);
|
||||||
|
|
|
@ -60,8 +60,10 @@ namespace v2rayN.Handler
|
||||||
public async Task CheckUpdateAsync(string type)
|
public async Task CheckUpdateAsync(string type)
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol();
|
Utils.SetSecurityProtocol();
|
||||||
WebRequestHandler webRequestHandler = new WebRequestHandler();
|
WebRequestHandler webRequestHandler = new WebRequestHandler
|
||||||
webRequestHandler.AllowAutoRedirect = false;
|
{
|
||||||
|
AllowAutoRedirect = false
|
||||||
|
};
|
||||||
HttpClient httpClient = new HttpClient(webRequestHandler);
|
HttpClient httpClient = new HttpClient(webRequestHandler);
|
||||||
|
|
||||||
string url;
|
string url;
|
||||||
|
@ -337,9 +339,9 @@ namespace v2rayN.Handler
|
||||||
byte[] bytes = Convert.FromBase64String(response);
|
byte[] bytes = Convert.FromBase64String(response);
|
||||||
string content = Encoding.UTF8.GetString(bytes);
|
string content = Encoding.UTF8.GetString(bytes);
|
||||||
List<string> valid_lines = new List<string>();
|
List<string> valid_lines = new List<string>();
|
||||||
using (var sr = new StringReader(content))
|
using (StringReader sr = new StringReader(content))
|
||||||
{
|
{
|
||||||
foreach (var line in sr.NonWhiteSpaceLines())
|
foreach (string line in sr.NonWhiteSpaceLines())
|
||||||
{
|
{
|
||||||
if (line.BeginWithAny(IgnoredLineBegins))
|
if (line.BeginWithAny(IgnoredLineBegins))
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1,13 +1,6 @@
|
||||||
using Grpc.Core;
|
using System;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Net;
|
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
|
@ -38,23 +31,23 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var color = ColorTranslator.FromHtml("#3399CC");
|
Color color = ColorTranslator.FromHtml("#3399CC");
|
||||||
var index = config.listenerType;
|
int index = config.listenerType;
|
||||||
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]);
|
//color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var width = 128;
|
int width = 128;
|
||||||
var height = 128;
|
int height = 128;
|
||||||
|
|
||||||
var bitmap = new Bitmap(width, height);
|
Bitmap bitmap = new Bitmap(width, height);
|
||||||
var graphics = Graphics.FromImage(bitmap);
|
Graphics graphics = Graphics.FromImage(bitmap);
|
||||||
var drawBrush = new SolidBrush(color);
|
SolidBrush drawBrush = new SolidBrush(color);
|
||||||
|
|
||||||
graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height));
|
graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height));
|
||||||
var zoom = 16;
|
int zoom = 16;
|
||||||
graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2);
|
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());
|
||||||
|
@ -85,10 +78,12 @@ namespace v2rayN.Handler
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveFileDialog fileDialog = new SaveFileDialog();
|
SaveFileDialog fileDialog = new SaveFileDialog
|
||||||
fileDialog.Filter = "Config|*.json";
|
{
|
||||||
fileDialog.FilterIndex = 2;
|
Filter = "Config|*.json",
|
||||||
fileDialog.RestoreDirectory = true;
|
FilterIndex = 2,
|
||||||
|
RestoreDirectory = true
|
||||||
|
};
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -98,10 +93,9 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Config configCopy = Utils.DeepCopy<Config>(config);
|
Config configCopy = Utils.DeepCopy(config);
|
||||||
configCopy.index = index;
|
configCopy.index = index;
|
||||||
string msg;
|
if (V2rayConfigHandler.Export2ClientConfig(configCopy, fileName, out string msg) != 0)
|
||||||
if (V2rayConfigHandler.Export2ClientConfig(configCopy, fileName, out msg) != 0)
|
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
}
|
}
|
||||||
|
@ -124,10 +118,12 @@ namespace v2rayN.Handler
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveFileDialog fileDialog = new SaveFileDialog();
|
SaveFileDialog fileDialog = new SaveFileDialog
|
||||||
fileDialog.Filter = "Config|*.json";
|
{
|
||||||
fileDialog.FilterIndex = 2;
|
Filter = "Config|*.json",
|
||||||
fileDialog.RestoreDirectory = true;
|
FilterIndex = 2,
|
||||||
|
RestoreDirectory = true
|
||||||
|
};
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -137,10 +133,9 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Config configCopy = Utils.DeepCopy<Config>(config);
|
Config configCopy = Utils.DeepCopy(config);
|
||||||
configCopy.index = index;
|
configCopy.index = index;
|
||||||
string msg;
|
if (V2rayConfigHandler.Export2ServerConfig(configCopy, fileName, out string msg) != 0)
|
||||||
if (V2rayConfigHandler.Export2ServerConfig(configCopy, fileName, out msg) != 0)
|
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.IO;
|
|
||||||
using ZXing;
|
using ZXing;
|
||||||
using ZXing.QrCode;
|
using ZXing.QrCode;
|
||||||
|
|
||||||
|
@ -16,18 +14,22 @@ namespace v2rayN.Handler
|
||||||
Image img = null;
|
Image img = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
QrCodeEncodingOptions options = new QrCodeEncodingOptions();
|
QrCodeEncodingOptions options = new QrCodeEncodingOptions
|
||||||
options.CharacterSet = "UTF-8";
|
{
|
||||||
options.DisableECI = true; // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
|
CharacterSet = "UTF-8",
|
||||||
options.ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M; // 纠错级别
|
DisableECI = true, // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
|
||||||
options.Width = 500;
|
ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M, // 纠错级别
|
||||||
options.Height = 500;
|
Width = 500,
|
||||||
options.Margin = 1;
|
Height = 500,
|
||||||
|
Margin = 1
|
||||||
|
};
|
||||||
// options.Hints,更多属性,也可以在这里添加。
|
// options.Hints,更多属性,也可以在这里添加。
|
||||||
|
|
||||||
BarcodeWriter writer = new BarcodeWriter();
|
BarcodeWriter writer = new BarcodeWriter
|
||||||
writer.Format = BarcodeFormat.QR_CODE;
|
{
|
||||||
writer.Options = options;
|
Format = BarcodeFormat.QR_CODE,
|
||||||
|
Options = options
|
||||||
|
};
|
||||||
Bitmap bmp = writer.Write(strContent);
|
Bitmap bmp = writer.Write(strContent);
|
||||||
img = (Image)bmp;
|
img = (Image)bmp;
|
||||||
return img;
|
return img;
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Diagnostics;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
|
@ -14,7 +15,6 @@ namespace v2rayN.Handler
|
||||||
private Config _config;
|
private Config _config;
|
||||||
private V2rayHandler _v2rayHandler;
|
private V2rayHandler _v2rayHandler;
|
||||||
private List<int> _selecteds;
|
private List<int> _selecteds;
|
||||||
private Thread _workThread;
|
|
||||||
Action<int, string> _updateFunc;
|
Action<int, string> _updateFunc;
|
||||||
|
|
||||||
private int testCounter = 0;
|
private int testCounter = 0;
|
||||||
|
@ -35,40 +35,23 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (actionType == "ping")
|
if (actionType == "ping")
|
||||||
{
|
{
|
||||||
_workThread = new Thread(new ThreadStart(RunPing));
|
Task.Run(() => RunPing());
|
||||||
_workThread.IsBackground = true;
|
|
||||||
_workThread.Start();
|
|
||||||
}
|
}
|
||||||
if (actionType == "tcping")
|
if (actionType == "tcping")
|
||||||
{
|
{
|
||||||
_workThread = new Thread(new ThreadStart(RunTcping));
|
Task.Run(() => RunTcping());
|
||||||
_workThread.IsBackground = true;
|
|
||||||
_workThread.Start();
|
|
||||||
}
|
}
|
||||||
else if (actionType == "realping")
|
else if (actionType == "realping")
|
||||||
{
|
{
|
||||||
_workThread = new Thread(new ThreadStart(RunRealPing));
|
Task.Run(() => RunRealPing());
|
||||||
_workThread.IsBackground = true;
|
|
||||||
_workThread.Start();
|
|
||||||
}
|
}
|
||||||
else if (actionType == "speedtest")
|
else if (actionType == "speedtest")
|
||||||
{
|
{
|
||||||
RunSpeedTest();
|
Task.Run(() => RunSpeedTest());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
private void RunPingSub(Action<int> updateFun)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RunPing()
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -80,38 +63,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long time = Utils.Ping(_config.vmess[index].address);
|
updateFun(index);
|
||||||
_updateFunc(index, string.Format("{0}ms", time));
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Thread.Sleep(100);
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RunTcping()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
foreach (int index in _selecteds)
|
|
||||||
{
|
|
||||||
if (_config.vmess[index].configType == (int)EConfigType.Custom)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var time = GetTcpingTime(_config.vmess[index].address, _config.vmess[index].port);
|
|
||||||
_updateFunc(index, string.Format("{0}ms", time));
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -120,7 +72,6 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(10);
|
Thread.Sleep(10);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -128,6 +79,25 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void RunPing()
|
||||||
|
{
|
||||||
|
RunPingSub((int index) =>
|
||||||
|
{
|
||||||
|
long time = Utils.Ping(_config.vmess[index].address);
|
||||||
|
_updateFunc(index, string.Format("{0}ms", time));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RunTcping()
|
||||||
|
{
|
||||||
|
RunPingSub((int index) =>
|
||||||
|
{
|
||||||
|
int time = GetTcpingTime(_config.vmess[index].address, _config.vmess[index].port);
|
||||||
|
_updateFunc(index, string.Format("{0}ms", time));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void RunRealPing()
|
private void RunRealPing()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -138,40 +108,38 @@ namespace v2rayN.Handler
|
||||||
_v2rayHandler.LoadV2ray(_config, _selecteds);
|
_v2rayHandler.LoadV2ray(_config, _selecteds);
|
||||||
|
|
||||||
Thread.Sleep(5000);
|
Thread.Sleep(5000);
|
||||||
|
int httpPort = _config.GetLocalPort("speedtest");
|
||||||
var httpPort = _config.GetLocalPort("speedtest");
|
Task[] tasks = new Task[_selecteds.Count];
|
||||||
foreach (int index in _selecteds)
|
int i = -1;
|
||||||
|
foreach (int itemIndex in _selecteds)
|
||||||
{
|
{
|
||||||
if (_config.vmess[index].configType == (int)EConfigType.Custom)
|
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
tasks[i] = Task.Run(() => {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var webProxy = new WebProxy(Global.Loopback, httpPort + index);
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
||||||
int responseTime = -1;
|
int responseTime = -1;
|
||||||
var status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out responseTime);
|
string status = GetRealPingTime(_config.speedPingTestUrl, webProxy, out responseTime);
|
||||||
if (!Utils.IsNullOrEmpty(status))
|
string output = Utils.IsNullOrEmpty(status) ? string.Format("{0}ms", responseTime) : string.Format("{0}", status);
|
||||||
{
|
_updateFunc(itemIndex, output);
|
||||||
_updateFunc(index, string.Format("{0}", status));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_updateFunc(index, string.Format("{0}ms", responseTime));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
Thread.Sleep(100);
|
});
|
||||||
|
//Thread.Sleep(100);
|
||||||
}
|
}
|
||||||
|
Task.WaitAll(tasks);
|
||||||
|
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
_v2rayHandler.LoadV2ray(_config);
|
_v2rayHandler.LoadV2ray(_config);
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -192,7 +160,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
Thread.Sleep(5000);
|
Thread.Sleep(5000);
|
||||||
|
|
||||||
string url = Global.SpeedTestUrl;
|
string url = _config.speedTestUrl;
|
||||||
testCounter = 0;
|
testCounter = 0;
|
||||||
if (downloadHandle2 == null)
|
if (downloadHandle2 == null)
|
||||||
{
|
{
|
||||||
|
@ -237,11 +205,11 @@ namespace v2rayN.Handler
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
var httpPort = _config.GetLocalPort("speedtest");
|
int httpPort = _config.GetLocalPort("speedtest");
|
||||||
index = _selecteds[index];
|
index = _selecteds[index];
|
||||||
|
|
||||||
testCounter++;
|
testCounter++;
|
||||||
var webProxy = new WebProxy(Global.Loopback, httpPort + index);
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + index);
|
||||||
downloadHandle2.DownloadFileAsync(_config, url, webProxy, 20);
|
downloadHandle2.DownloadFileAsync(_config, url, webProxy, 20);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -249,21 +217,20 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
private int GetTcpingTime(string url, int port)
|
private int GetTcpingTime(string url, int port)
|
||||||
{
|
{
|
||||||
var responseTime = -1;
|
int responseTime = -1;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IPAddress ipAddress;
|
if (!IPAddress.TryParse(url, out IPAddress ipAddress))
|
||||||
if (!System.Net.IPAddress.TryParse(url, out ipAddress))
|
|
||||||
{
|
{
|
||||||
IPHostEntry ipHostInfo = System.Net.Dns.GetHostEntry(url);
|
IPHostEntry ipHostInfo = System.Net.Dns.GetHostEntry(url);
|
||||||
ipAddress = ipHostInfo.AddressList[0];
|
ipAddress = ipHostInfo.AddressList[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
var timer = new Stopwatch();
|
Stopwatch timer = new Stopwatch();
|
||||||
timer.Start();
|
timer.Start();
|
||||||
|
|
||||||
var endPoint = new IPEndPoint(ipAddress, port);
|
IPEndPoint endPoint = new IPEndPoint(ipAddress, port);
|
||||||
Socket clientSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
Socket clientSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
|
||||||
IAsyncResult result = clientSocket.BeginConnect(endPoint, null, null);
|
IAsyncResult result = clientSocket.BeginConnect(endPoint, null, null);
|
||||||
|
@ -286,14 +253,13 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
string msg = string.Empty;
|
string msg = string.Empty;
|
||||||
responseTime = -1;
|
responseTime = -1;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
|
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
|
||||||
myHttpWebRequest.Timeout = 5000;
|
myHttpWebRequest.Timeout = 5000;
|
||||||
myHttpWebRequest.Proxy = webProxy;//new WebProxy(Global.Loopback, Global.httpPort);
|
myHttpWebRequest.Proxy = webProxy;//new WebProxy(Global.Loopback, Global.httpPort);
|
||||||
|
|
||||||
var timer = new Stopwatch();
|
Stopwatch timer = new Stopwatch();
|
||||||
timer.Start();
|
timer.Start();
|
||||||
|
|
||||||
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
|
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
|
||||||
|
@ -313,7 +279,6 @@ namespace v2rayN.Handler
|
||||||
msg = ex.Message;
|
msg = ex.Message;
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
using Grpc.Core;
|
using Grpc.Core;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Properties;
|
|
||||||
using v2rayN.Protos.Statistics;
|
using v2rayN.Protos.Statistics;
|
||||||
using v2rayN.Tool;
|
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
|
@ -18,7 +16,6 @@ namespace v2rayN.Handler
|
||||||
private ServerStatistics serverStatistics_;
|
private ServerStatistics serverStatistics_;
|
||||||
private Channel channel_;
|
private Channel channel_;
|
||||||
private StatsService.StatsServiceClient client_;
|
private StatsService.StatsServiceClient client_;
|
||||||
private Thread workThread_;
|
|
||||||
private bool exitFlag_;
|
private bool exitFlag_;
|
||||||
|
|
||||||
Action<ulong, ulong, List<ServerStatItem>> updateFunc_;
|
Action<ulong, ulong, List<ServerStatItem>> updateFunc_;
|
||||||
|
@ -70,9 +67,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
GrpcInit();
|
GrpcInit();
|
||||||
|
|
||||||
workThread_ = new Thread(new ThreadStart(Run));
|
Task.Run(() => Run());
|
||||||
workThread_.IsBackground = true;
|
|
||||||
workThread_.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GrpcInit()
|
private void GrpcInit()
|
||||||
|
@ -120,13 +115,11 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (res != null)
|
if (res != null)
|
||||||
{
|
{
|
||||||
var itemId = config_.getItemId();
|
string itemId = config_.getItemId();
|
||||||
var serverStatItem = GetServerStatItem(itemId);
|
ServerStatItem serverStatItem = GetServerStatItem(itemId);
|
||||||
ulong up = 0,
|
|
||||||
down = 0;
|
|
||||||
|
|
||||||
//TODO: parse output
|
//TODO: parse output
|
||||||
ParseOutput(res.Stat, out up, out down);
|
ParseOutput(res.Stat, out ulong up, out ulong down);
|
||||||
|
|
||||||
serverStatItem.todayUp += up;
|
serverStatItem.todayUp += up;
|
||||||
serverStatItem.todayDown += down;
|
serverStatItem.todayDown += down;
|
||||||
|
@ -169,8 +162,8 @@ namespace v2rayN.Handler
|
||||||
serverStatistics_.server = new List<ServerStatItem>();
|
serverStatistics_.server = new List<ServerStatItem>();
|
||||||
}
|
}
|
||||||
|
|
||||||
var ticks = DateTime.Now.Date.Ticks;
|
long ticks = DateTime.Now.Date.Ticks;
|
||||||
foreach (var item in serverStatistics_.server)
|
foreach (ServerStatItem item in serverStatistics_.server)
|
||||||
{
|
{
|
||||||
if (item.dateNow != ticks)
|
if (item.dateNow != ticks)
|
||||||
{
|
{
|
||||||
|
@ -200,8 +193,8 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
private ServerStatItem GetServerStatItem(string itemId)
|
private ServerStatItem GetServerStatItem(string itemId)
|
||||||
{
|
{
|
||||||
var ticks = DateTime.Now.Date.Ticks;
|
long ticks = DateTime.Now.Date.Ticks;
|
||||||
var cur = Statistic.FindIndex(item => item.itemId == itemId);
|
int cur = Statistic.FindIndex(item => item.itemId == itemId);
|
||||||
if (cur < 0)
|
if (cur < 0)
|
||||||
{
|
{
|
||||||
Statistic.Add(new ServerStatItem
|
Statistic.Add(new ServerStatItem
|
||||||
|
@ -231,12 +224,12 @@ namespace v2rayN.Handler
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var stat in source)
|
foreach (Stat stat in source)
|
||||||
{
|
{
|
||||||
var name = stat.Name;
|
string name = stat.Name;
|
||||||
var value = stat.Value;
|
long value = stat.Value;
|
||||||
var nStr = name.Split(">>>".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
string[] nStr = name.Split(">>>".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
||||||
var type = "";
|
string type = "";
|
||||||
|
|
||||||
name = name.Trim();
|
name = name.Trim();
|
||||||
|
|
||||||
|
@ -270,7 +263,7 @@ namespace v2rayN.Handler
|
||||||
// TCP stack please do me a favor
|
// TCP stack please do me a favor
|
||||||
TcpListener l = new TcpListener(IPAddress.Loopback, 0);
|
TcpListener l = new TcpListener(IPAddress.Loopback, 0);
|
||||||
l.Start();
|
l.Start();
|
||||||
var port = ((IPEndPoint)l.LocalEndpoint).Port;
|
int port = ((IPEndPoint)l.LocalEndpoint).Port;
|
||||||
l.Stop();
|
l.Stop();
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,7 +149,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var inbound = v2rayConfig.inbounds[0];
|
Inbounds inbound = v2rayConfig.inbounds[0];
|
||||||
//端口
|
//端口
|
||||||
inbound.port = config.inbound[0].localPort;
|
inbound.port = config.inbound[0].localPort;
|
||||||
inbound.protocol = config.inbound[0].protocol;
|
inbound.protocol = config.inbound[0].protocol;
|
||||||
|
@ -226,16 +226,20 @@ namespace v2rayN.Handler
|
||||||
&& userRule.Count > 0)
|
&& userRule.Count > 0)
|
||||||
{
|
{
|
||||||
//Domain
|
//Domain
|
||||||
RulesItem rulesDomain = new RulesItem();
|
RulesItem rulesDomain = new RulesItem
|
||||||
rulesDomain.type = "field";
|
{
|
||||||
rulesDomain.outboundTag = tag;
|
type = "field",
|
||||||
rulesDomain.domain = new List<string>();
|
outboundTag = tag,
|
||||||
|
domain = new List<string>()
|
||||||
|
};
|
||||||
|
|
||||||
//IP
|
//IP
|
||||||
RulesItem rulesIP = new RulesItem();
|
RulesItem rulesIP = new RulesItem
|
||||||
rulesIP.type = "field";
|
{
|
||||||
rulesIP.outboundTag = tag;
|
type = "field",
|
||||||
rulesIP.ip = new List<string>();
|
outboundTag = tag,
|
||||||
|
ip = new List<string>()
|
||||||
|
};
|
||||||
|
|
||||||
foreach (string u in userRule)
|
foreach (string u in userRule)
|
||||||
{
|
{
|
||||||
|
@ -283,10 +287,12 @@ namespace v2rayN.Handler
|
||||||
//IP
|
//IP
|
||||||
if (ipOrDomain == "ip" || ipOrDomain == "")
|
if (ipOrDomain == "ip" || ipOrDomain == "")
|
||||||
{
|
{
|
||||||
RulesItem rulesItem = new RulesItem();
|
RulesItem rulesItem = new RulesItem
|
||||||
rulesItem.type = "field";
|
{
|
||||||
rulesItem.outboundTag = Global.directTag;
|
type = "field",
|
||||||
rulesItem.ip = new List<string>();
|
outboundTag = Global.directTag,
|
||||||
|
ip = new List<string>()
|
||||||
|
};
|
||||||
rulesItem.ip.Add($"geoip:{code}");
|
rulesItem.ip.Add($"geoip:{code}");
|
||||||
|
|
||||||
v2rayConfig.routing.rules.Add(rulesItem);
|
v2rayConfig.routing.rules.Add(rulesItem);
|
||||||
|
@ -294,10 +300,12 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (ipOrDomain == "domain" || ipOrDomain == "")
|
if (ipOrDomain == "domain" || ipOrDomain == "")
|
||||||
{
|
{
|
||||||
RulesItem rulesItem = new RulesItem();
|
RulesItem rulesItem = new RulesItem
|
||||||
rulesItem.type = "field";
|
{
|
||||||
rulesItem.outboundTag = Global.directTag;
|
type = "field",
|
||||||
rulesItem.domain = new List<string>();
|
outboundTag = Global.directTag,
|
||||||
|
domain = new List<string>()
|
||||||
|
};
|
||||||
rulesItem.domain.Add($"geosite:{code}");
|
rulesItem.domain.Add($"geosite:{code}");
|
||||||
v2rayConfig.routing.rules.Add(rulesItem);
|
v2rayConfig.routing.rules.Add(rulesItem);
|
||||||
}
|
}
|
||||||
|
@ -319,7 +327,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var outbound = v2rayConfig.outbounds[0];
|
Outbounds outbound = v2rayConfig.outbounds[0];
|
||||||
if (config.configType() == (int)EConfigType.Vmess)
|
if (config.configType() == (int)EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
VnextItem vnextItem;
|
VnextItem vnextItem;
|
||||||
|
@ -412,10 +420,12 @@ namespace v2rayN.Handler
|
||||||
if (!Utils.IsNullOrEmpty(config.security())
|
if (!Utils.IsNullOrEmpty(config.security())
|
||||||
&& !Utils.IsNullOrEmpty(config.id()))
|
&& !Utils.IsNullOrEmpty(config.id()))
|
||||||
{
|
{
|
||||||
var socksUsersItem = new SocksUsersItem();
|
SocksUsersItem socksUsersItem = new SocksUsersItem
|
||||||
socksUsersItem.user = config.security();
|
{
|
||||||
socksUsersItem.pass = config.id();
|
user = config.security(),
|
||||||
socksUsersItem.level = 1;
|
pass = config.id(),
|
||||||
|
level = 1
|
||||||
|
};
|
||||||
|
|
||||||
serversItem.users = new List<SocksUsersItem>() { socksUsersItem };
|
serversItem.users = new List<SocksUsersItem>() { socksUsersItem };
|
||||||
}
|
}
|
||||||
|
@ -446,14 +456,16 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
//远程服务器底层传输配置
|
//远程服务器底层传输配置
|
||||||
streamSettings.network = config.network();
|
streamSettings.network = config.network();
|
||||||
var host = config.requestHost();
|
string host = config.requestHost();
|
||||||
//if tls
|
//if tls
|
||||||
if (config.streamSecurity() == Global.StreamSecurity)
|
if (config.streamSecurity() == Global.StreamSecurity)
|
||||||
{
|
{
|
||||||
streamSettings.security = config.streamSecurity();
|
streamSettings.security = config.streamSecurity();
|
||||||
|
|
||||||
TlsSettings tlsSettings = new TlsSettings();
|
TlsSettings tlsSettings = new TlsSettings
|
||||||
tlsSettings.allowInsecure = config.allowInsecure();
|
{
|
||||||
|
allowInsecure = config.allowInsecure()
|
||||||
|
};
|
||||||
if (!string.IsNullOrWhiteSpace(host))
|
if (!string.IsNullOrWhiteSpace(host))
|
||||||
{
|
{
|
||||||
tlsSettings.serverName = host;
|
tlsSettings.serverName = host;
|
||||||
|
@ -466,9 +478,11 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
//kcp基本配置暂时是默认值,用户能自己设置伪装类型
|
//kcp基本配置暂时是默认值,用户能自己设置伪装类型
|
||||||
case "kcp":
|
case "kcp":
|
||||||
KcpSettings kcpSettings = new KcpSettings();
|
KcpSettings kcpSettings = new KcpSettings
|
||||||
kcpSettings.mtu = config.kcpItem.mtu;
|
{
|
||||||
kcpSettings.tti = config.kcpItem.tti;
|
mtu = config.kcpItem.mtu,
|
||||||
|
tti = config.kcpItem.tti
|
||||||
|
};
|
||||||
if (iobound.Equals("out"))
|
if (iobound.Equals("out"))
|
||||||
{
|
{
|
||||||
kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity;
|
kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity;
|
||||||
|
@ -488,20 +502,26 @@ namespace v2rayN.Handler
|
||||||
kcpSettings.congestion = config.kcpItem.congestion;
|
kcpSettings.congestion = config.kcpItem.congestion;
|
||||||
kcpSettings.readBufferSize = config.kcpItem.readBufferSize;
|
kcpSettings.readBufferSize = config.kcpItem.readBufferSize;
|
||||||
kcpSettings.writeBufferSize = config.kcpItem.writeBufferSize;
|
kcpSettings.writeBufferSize = config.kcpItem.writeBufferSize;
|
||||||
kcpSettings.header = new Header();
|
kcpSettings.header = new Header
|
||||||
kcpSettings.header.type = config.headerType();
|
{
|
||||||
|
type = config.headerType()
|
||||||
|
};
|
||||||
streamSettings.kcpSettings = kcpSettings;
|
streamSettings.kcpSettings = kcpSettings;
|
||||||
break;
|
break;
|
||||||
//ws
|
//ws
|
||||||
case "ws":
|
case "ws":
|
||||||
WsSettings wsSettings = new WsSettings();
|
WsSettings wsSettings = new WsSettings
|
||||||
wsSettings.connectionReuse = true;
|
{
|
||||||
|
connectionReuse = true
|
||||||
|
};
|
||||||
|
|
||||||
string path = config.path();
|
string path = config.path();
|
||||||
if (!string.IsNullOrWhiteSpace(host))
|
if (!string.IsNullOrWhiteSpace(host))
|
||||||
{
|
{
|
||||||
wsSettings.headers = new Headers();
|
wsSettings.headers = new Headers
|
||||||
wsSettings.headers.Host = host;
|
{
|
||||||
|
Host = host
|
||||||
|
};
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrWhiteSpace(path))
|
if (!string.IsNullOrWhiteSpace(path))
|
||||||
{
|
{
|
||||||
|
@ -535,11 +555,15 @@ namespace v2rayN.Handler
|
||||||
break;
|
break;
|
||||||
//quic
|
//quic
|
||||||
case "quic":
|
case "quic":
|
||||||
QuicSettings quicsettings = new QuicSettings();
|
QuicSettings quicsettings = new QuicSettings
|
||||||
quicsettings.security = host;
|
{
|
||||||
quicsettings.key = config.path();
|
security = host,
|
||||||
quicsettings.header = new Header();
|
key = config.path(),
|
||||||
quicsettings.header.type = config.headerType();
|
header = new Header
|
||||||
|
{
|
||||||
|
type = config.headerType()
|
||||||
|
}
|
||||||
|
};
|
||||||
streamSettings.quicSettings = quicsettings;
|
streamSettings.quicSettings = quicsettings;
|
||||||
if (config.streamSecurity() == Global.StreamSecurity)
|
if (config.streamSecurity() == Global.StreamSecurity)
|
||||||
{
|
{
|
||||||
|
@ -550,10 +574,14 @@ namespace v2rayN.Handler
|
||||||
//tcp带http伪装
|
//tcp带http伪装
|
||||||
if (config.headerType().Equals(Global.TcpHeaderHttp))
|
if (config.headerType().Equals(Global.TcpHeaderHttp))
|
||||||
{
|
{
|
||||||
TcpSettings tcpSettings = new TcpSettings();
|
TcpSettings tcpSettings = new TcpSettings
|
||||||
tcpSettings.connectionReuse = true;
|
{
|
||||||
tcpSettings.header = new Header();
|
connectionReuse = true,
|
||||||
tcpSettings.header.type = config.headerType();
|
header = new Header
|
||||||
|
{
|
||||||
|
type = config.headerType()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (iobound.Equals("out"))
|
if (iobound.Equals("out"))
|
||||||
{
|
{
|
||||||
|
@ -616,8 +644,10 @@ namespace v2rayN.Handler
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
//servers.Add("localhost");
|
//servers.Add("localhost");
|
||||||
v2rayConfig.dns = new Mode.Dns();
|
v2rayConfig.dns = new Mode.Dns
|
||||||
v2rayConfig.dns.servers = servers;
|
{
|
||||||
|
servers = servers
|
||||||
|
};
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -629,10 +659,10 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (config.enableStatistics)
|
if (config.enableStatistics)
|
||||||
{
|
{
|
||||||
var tag = Global.InboundAPITagName;
|
string tag = Global.InboundAPITagName;
|
||||||
var apiObj = new Mode.API();
|
API apiObj = new API();
|
||||||
var policyObj = new Mode.Policy();
|
Policy policyObj = new Policy();
|
||||||
var policySystemSetting = new Mode.SystemPolicy();
|
SystemPolicy policySystemSetting = new SystemPolicy();
|
||||||
|
|
||||||
string[] services = { "StatsService" };
|
string[] services = { "StatsService" };
|
||||||
|
|
||||||
|
@ -649,8 +679,8 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (!v2rayConfig.inbounds.Exists(item => { return item.tag == tag; }))
|
if (!v2rayConfig.inbounds.Exists(item => { return item.tag == tag; }))
|
||||||
{
|
{
|
||||||
var apiInbound = new Mode.Inbounds();
|
Inbounds apiInbound = new Inbounds();
|
||||||
var apiInboundSettings = new Mode.Inboundsettings();
|
Inboundsettings apiInboundSettings = new Inboundsettings();
|
||||||
apiInbound.tag = tag;
|
apiInbound.tag = tag;
|
||||||
apiInbound.listen = Global.Loopback;
|
apiInbound.listen = Global.Loopback;
|
||||||
apiInbound.port = Global.statePort;
|
apiInbound.port = Global.statePort;
|
||||||
|
@ -662,10 +692,12 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (!v2rayConfig.routing.rules.Exists(item => { return item.outboundTag == tag; }))
|
if (!v2rayConfig.routing.rules.Exists(item => { return item.outboundTag == tag; }))
|
||||||
{
|
{
|
||||||
var apiRoutingRule = new Mode.RulesItem();
|
RulesItem apiRoutingRule = new RulesItem
|
||||||
apiRoutingRule.inboundTag = new List<string> { tag };
|
{
|
||||||
apiRoutingRule.outboundTag = tag;
|
inboundTag = new List<string> { tag },
|
||||||
apiRoutingRule.type = "field";
|
outboundTag = tag,
|
||||||
|
type = "field"
|
||||||
|
};
|
||||||
v2rayConfig.routing.rules.Add(apiRoutingRule);
|
v2rayConfig.routing.rules.Add(apiRoutingRule);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -800,7 +832,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var inbound = v2rayConfig.inbounds[0];
|
Inbounds inbound = v2rayConfig.inbounds[0];
|
||||||
UsersItem usersItem;
|
UsersItem usersItem;
|
||||||
if (inbound.settings.clients.Count <= 0)
|
if (inbound.settings.clients.Count <= 0)
|
||||||
{
|
{
|
||||||
|
@ -889,7 +921,7 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var outbound = v2rayConfig.outbounds[0];
|
Outbounds outbound = v2rayConfig.outbounds[0];
|
||||||
if (outbound == null
|
if (outbound == null
|
||||||
|| Utils.IsNullOrEmpty(outbound.protocol)
|
|| Utils.IsNullOrEmpty(outbound.protocol)
|
||||||
|| outbound.protocol != "vmess"
|
|| outbound.protocol != "vmess"
|
||||||
|
@ -1035,7 +1067,7 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var inbound = v2rayConfig.inbounds[0];
|
Inbounds inbound = v2rayConfig.inbounds[0];
|
||||||
if (inbound == null
|
if (inbound == null
|
||||||
|| Utils.IsNullOrEmpty(inbound.protocol)
|
|| Utils.IsNullOrEmpty(inbound.protocol)
|
||||||
|| inbound.protocol != "vmess"
|
|| inbound.protocol != "vmess"
|
||||||
|
@ -1345,9 +1377,10 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
private static VmessItem ResolveVmess4Kitsunebi(string result)
|
private static VmessItem ResolveVmess4Kitsunebi(string result)
|
||||||
{
|
{
|
||||||
VmessItem vmessItem = new VmessItem();
|
VmessItem vmessItem = new VmessItem
|
||||||
|
{
|
||||||
vmessItem.configType = (int)EConfigType.Vmess;
|
configType = (int)EConfigType.Vmess
|
||||||
|
};
|
||||||
result = result.Substring(Global.vmessProtocol.Length);
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
int indexSplit = result.IndexOf("?");
|
int indexSplit = result.IndexOf("?");
|
||||||
if (indexSplit > 0)
|
if (indexSplit > 0)
|
||||||
|
@ -1404,7 +1437,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
msg = UIRes.I18N("InitialConfiguration");
|
msg = UIRes.I18N("InitialConfiguration");
|
||||||
|
|
||||||
Config configCopy = Utils.DeepCopy<Config>(config);
|
Config configCopy = Utils.DeepCopy(config);
|
||||||
|
|
||||||
string result = Utils.GetEmbedText(SampleClient);
|
string result = Utils.GetEmbedText(SampleClient);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
@ -1425,7 +1458,7 @@ namespace v2rayN.Handler
|
||||||
dns(configCopy, ref v2rayConfig);
|
dns(configCopy, ref v2rayConfig);
|
||||||
|
|
||||||
|
|
||||||
var httpPort = configCopy.GetLocalPort("speedtest");
|
int httpPort = configCopy.GetLocalPort("speedtest");
|
||||||
foreach (int index in selecteds)
|
foreach (int index in selecteds)
|
||||||
{
|
{
|
||||||
if (configCopy.vmess[index].configType == (int)EConfigType.Custom)
|
if (configCopy.vmess[index].configType == (int)EConfigType.Custom)
|
||||||
|
@ -1435,23 +1468,27 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
configCopy.index = index;
|
configCopy.index = index;
|
||||||
|
|
||||||
var inbound = new Inbounds();
|
Inbounds inbound = new Inbounds
|
||||||
inbound.listen = Global.Loopback;
|
{
|
||||||
inbound.port = httpPort + index;
|
listen = Global.Loopback,
|
||||||
inbound.protocol = Global.InboundHttp;
|
port = httpPort + index,
|
||||||
|
protocol = Global.InboundHttp
|
||||||
|
};
|
||||||
inbound.tag = Global.InboundHttp + inbound.port.ToString();
|
inbound.tag = Global.InboundHttp + inbound.port.ToString();
|
||||||
v2rayConfig.inbounds.Add(inbound);
|
v2rayConfig.inbounds.Add(inbound);
|
||||||
|
|
||||||
|
|
||||||
var v2rayConfigCopy = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfigCopy = Utils.FromJson<V2rayConfig>(result);
|
||||||
outbound(configCopy, ref v2rayConfigCopy);
|
outbound(configCopy, ref v2rayConfigCopy);
|
||||||
v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString();
|
v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString();
|
||||||
v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]);
|
v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]);
|
||||||
|
|
||||||
var rule = new Mode.RulesItem();
|
RulesItem rule = new RulesItem
|
||||||
rule.inboundTag = new List<string> { inbound.tag };
|
{
|
||||||
rule.outboundTag = v2rayConfigCopy.outbounds[0].tag;
|
inboundTag = new List<string> { inbound.tag },
|
||||||
rule.type = "field";
|
outboundTag = v2rayConfigCopy.outbounds[0].tag,
|
||||||
|
type = "field"
|
||||||
|
};
|
||||||
v2rayConfig.routing.rules.Add(rule);
|
v2rayConfig.routing.rules.Add(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1459,7 +1496,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), configCopy.getSummary());
|
msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), configCopy.getSummary());
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -104,7 +104,7 @@ namespace v2rayN.Handler
|
||||||
Process[] existing = Process.GetProcessesByName(vName);
|
Process[] existing = Process.GetProcessesByName(vName);
|
||||||
foreach (Process p in existing)
|
foreach (Process p in existing)
|
||||||
{
|
{
|
||||||
var path = p.MainModule.FileName;
|
string path = p.MainModule.FileName;
|
||||||
if (path == $"{Utils.GetPath(vName)}.exe")
|
if (path == $"{Utils.GetPath(vName)}.exe")
|
||||||
{
|
{
|
||||||
KillProcess(p);
|
KillProcess(p);
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
{
|
{
|
||||||
if (type != 0)
|
if (type != 0)
|
||||||
{
|
{
|
||||||
var port = Global.httpPort;
|
int port = Global.httpPort;
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -114,7 +114,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var pac = GetPacList(address);
|
string pac = GetPacList(address);
|
||||||
return pac;
|
return pac;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -165,7 +165,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
|
|
||||||
private static string GetPacList(string address)
|
private static string GetPacList(string address)
|
||||||
{
|
{
|
||||||
var port = Global.httpPort;
|
int port = Global.httpPort;
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return "No port";
|
return "No port";
|
||||||
|
@ -174,22 +174,22 @@ namespace v2rayN.HttpProxyHandler
|
||||||
{
|
{
|
||||||
List<string> lstProxy = new List<string>();
|
List<string> lstProxy = new List<string>();
|
||||||
lstProxy.Add(string.Format("PROXY {0}:{1};", address, port));
|
lstProxy.Add(string.Format("PROXY {0}:{1};", address, port));
|
||||||
var proxy = string.Join("", lstProxy.ToArray());
|
string proxy = string.Join("", lstProxy.ToArray());
|
||||||
|
|
||||||
string strPacfile = Utils.GetPath(Global.pacFILE);
|
string strPacfile = Utils.GetPath(Global.pacFILE);
|
||||||
if (!File.Exists(strPacfile))
|
if (!File.Exists(strPacfile))
|
||||||
{
|
{
|
||||||
FileManager.UncompressFile(strPacfile, Resources.pac_txt);
|
FileManager.UncompressFile(strPacfile, Resources.pac_txt);
|
||||||
}
|
}
|
||||||
var pac = File.ReadAllText(strPacfile, Encoding.UTF8);
|
string pac = File.ReadAllText(strPacfile, Encoding.UTF8);
|
||||||
pac = pac.Replace("__PROXY__", proxy);
|
pac = pac.Replace("__PROXY__", proxy);
|
||||||
|
|
||||||
if (_config.userPacRule.Count > 0)
|
if (_config.userPacRule.Count > 0)
|
||||||
{
|
{
|
||||||
var keyWords = "var rules = [";
|
string keyWords = "var rules = [";
|
||||||
if (pac.IndexOf(keyWords) >= 0)
|
if (pac.IndexOf(keyWords) >= 0)
|
||||||
{
|
{
|
||||||
var userPac = string.Join($"\",{Environment.NewLine}\"", _config.userPacRule.ToArray());
|
string userPac = string.Join($"\",{Environment.NewLine}\"", _config.userPacRule.ToArray());
|
||||||
userPac = string.Format("\"{0}\",", userPac);
|
userPac = string.Format("\"{0}\",", userPac);
|
||||||
pac = pac.Replace(keyWords, keyWords + userPac);
|
pac = pac.Replace(keyWords, keyWords + userPac);
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,7 +172,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
/*
|
/*
|
||||||
* Under PortableMode, we could identify it by the path of v2ray_privoxy.exe.
|
* Under PortableMode, we could identify it by the path of v2ray_privoxy.exe.
|
||||||
*/
|
*/
|
||||||
var path = process.MainModule.FileName;
|
string path = process.MainModule.FileName;
|
||||||
|
|
||||||
return Utils.GetTempPath($"{_privoxyName}.exe").Equals(path);
|
return Utils.GetTempPath($"{_privoxyName}.exe").Equals(path);
|
||||||
|
|
||||||
|
|
|
@ -128,7 +128,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
public InternetConnectionOptionValue m_Value;
|
public InternetConnectionOptionValue m_Value;
|
||||||
static InternetConnectionOption()
|
static InternetConnectionOption()
|
||||||
{
|
{
|
||||||
InternetConnectionOption.Size = Marshal.SizeOf(typeof(InternetConnectionOption));
|
Size = Marshal.SizeOf(typeof(InternetConnectionOption));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nested Types
|
// Nested Types
|
||||||
|
|
|
@ -4,7 +4,6 @@ using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Properties;
|
using v2rayN.Properties;
|
||||||
using v2rayN.Tool;
|
using v2rayN.Tool;
|
||||||
|
@ -69,10 +68,10 @@ namespace v2rayN.HttpProxyHandler
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// restore user settings
|
// restore user settings
|
||||||
var flags = _userSettings.Flags;
|
string flags = _userSettings.Flags;
|
||||||
var proxy_server = _userSettings.ProxyServer ?? "-";
|
string proxy_server = _userSettings.ProxyServer ?? "-";
|
||||||
var bypass_list = _userSettings.BypassList ?? "-";
|
string bypass_list = _userSettings.BypassList ?? "-";
|
||||||
var pac_url = _userSettings.PacUrl ?? "-";
|
string pac_url = _userSettings.PacUrl ?? "-";
|
||||||
arguments = $"set {flags} {proxy_server} {bypass_list} {pac_url}";
|
arguments = $"set {flags} {proxy_server} {bypass_list} {pac_url}";
|
||||||
|
|
||||||
// have to get new settings
|
// have to get new settings
|
||||||
|
@ -110,7 +109,7 @@ namespace v2rayN.HttpProxyHandler
|
||||||
using (AutoResetEvent outputWaitHandle = new AutoResetEvent(false))
|
using (AutoResetEvent outputWaitHandle = new AutoResetEvent(false))
|
||||||
using (AutoResetEvent errorWaitHandle = new AutoResetEvent(false))
|
using (AutoResetEvent errorWaitHandle = new AutoResetEvent(false))
|
||||||
{
|
{
|
||||||
using (var process = new Process())
|
using (Process process = new Process())
|
||||||
{
|
{
|
||||||
// Configure the process using the StartInfo properties.
|
// Configure the process using the StartInfo properties.
|
||||||
process.StartInfo.FileName = Utils.GetTempPath("sysproxy.exe");
|
process.StartInfo.FileName = Utils.GetTempPath("sysproxy.exe");
|
||||||
|
@ -167,10 +166,10 @@ namespace v2rayN.HttpProxyHandler
|
||||||
// log the arguments
|
// log the arguments
|
||||||
throw new Exception(process.StartInfo.Arguments);
|
throw new Exception(process.StartInfo.Arguments);
|
||||||
}
|
}
|
||||||
var stderr = error.ToString();
|
string stderr = error.ToString();
|
||||||
var stdout = output.ToString();
|
string stdout = output.ToString();
|
||||||
|
|
||||||
var exitCode = process.ExitCode;
|
int exitCode = process.ExitCode;
|
||||||
if (exitCode != (int)RET_ERRORS.RET_NO_ERROR)
|
if (exitCode != (int)RET_ERRORS.RET_NO_ERROR)
|
||||||
{
|
{
|
||||||
throw new Exception(stderr);
|
throw new Exception(stderr);
|
||||||
|
|
|
@ -114,6 +114,20 @@ namespace v2rayN.Mode
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义服务器下载测速url
|
||||||
|
/// </summary>
|
||||||
|
public string speedTestUrl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义“服务器真连接延迟”测试url
|
||||||
|
/// </summary>
|
||||||
|
public string speedPingTestUrl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义GFWList url
|
/// 自定义GFWList url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -138,6 +152,14 @@ namespace v2rayN.Mode
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 去重时优先保留较旧(顶部)节点
|
||||||
|
/// </summary>
|
||||||
|
public bool keepOlderDedupl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 视图刷新率
|
/// 视图刷新率
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -419,7 +441,7 @@ namespace v2rayN.Mode
|
||||||
|
|
||||||
public string getItemId()
|
public string getItemId()
|
||||||
{
|
{
|
||||||
var itemId = $"{address}{port}{requestHost}{path}";
|
string itemId = $"{address}{port}{requestHost}{path}";
|
||||||
itemId = Utils.Base64Encode(itemId);
|
itemId = Utils.Base64Encode(itemId);
|
||||||
return itemId;
|
return itemId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace v2rayN
|
||||||
}
|
}
|
||||||
|
|
||||||
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
||||||
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
|
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
|
||||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ namespace v2rayN
|
||||||
|
|
||||||
//设置语言环境
|
//设置语言环境
|
||||||
string lang = Utils.RegReadValue(Global.MyRegPath, Global.MyRegKeyLanguage, "zh-Hans");
|
string lang = Utils.RegReadValue(Global.MyRegPath, Global.MyRegKeyLanguage, "zh-Hans");
|
||||||
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
|
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
|
||||||
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
@ -100,7 +100,7 @@ namespace v2rayN
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
|
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
|
||||||
{
|
{
|
||||||
Utils.SaveLog("Application_ThreadException", e.Exception);
|
Utils.SaveLog("Application_ThreadException", e.Exception);
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ namespace v2rayN
|
||||||
|
|
||||||
static bool UnzipLibs()
|
static bool UnzipLibs()
|
||||||
{
|
{
|
||||||
var fileName = Utils.GetPath("libs.zip");
|
string fileName = Utils.GetPath("libs.zip");
|
||||||
if (!FileManager.ByteArrayToFile(fileName, Resources.libs))
|
if (!FileManager.ByteArrayToFile(fileName, Resources.libs))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// 有关程序集的常规信息通过以下
|
// 有关程序集的常规信息通过以下
|
||||||
|
|
|
@ -123,9 +123,36 @@
|
||||||
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
||||||
<value>Batch export share URL to clipboard successfully</value>
|
<value>Batch export share URL to clipboard successfully</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CheckServerSettings" xml:space="preserve">
|
||||||
|
<value>Please check the server settings first</value>
|
||||||
|
</data>
|
||||||
|
<data name="ConfigurationFormatIncorrect" xml:space="preserve">
|
||||||
|
<value> configuration format is incorrect</value>
|
||||||
|
</data>
|
||||||
|
<data name="CustomServerTips" xml:space="preserve">
|
||||||
|
<value>Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound.</value>
|
||||||
|
</data>
|
||||||
|
<data name="downloadSpeed" xml:space="preserve">
|
||||||
|
<value>DOWN</value>
|
||||||
|
</data>
|
||||||
|
<data name="DownloadYesNo" xml:space="preserve">
|
||||||
|
<value>Whether to download? {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="FailedConversionConfiguration" xml:space="preserve">
|
||||||
|
<value>Failed to convert configuration file</value>
|
||||||
|
</data>
|
||||||
|
<data name="FailedGenDefaultConfiguration" xml:space="preserve">
|
||||||
|
<value>Failed to generate default configuration file</value>
|
||||||
|
</data>
|
||||||
|
<data name="FailedGetDefaultConfiguration" xml:space="preserve">
|
||||||
|
<value> Failed to get the default configuration</value>
|
||||||
|
</data>
|
||||||
<data name="FailedImportedCustomServer" xml:space="preserve">
|
<data name="FailedImportedCustomServer" xml:space="preserve">
|
||||||
<value>Failed to import custom configuration server</value>
|
<value>Failed to import custom configuration server</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FailedReadConfiguration" xml:space="preserve">
|
||||||
|
<value>Failed to read configuration file</value>
|
||||||
|
</data>
|
||||||
<data name="FillCorrectAlterId" xml:space="preserve">
|
<data name="FillCorrectAlterId" xml:space="preserve">
|
||||||
<value>Please fill in the correct format extra ID</value>
|
<value>Please fill in the correct format extra ID</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -147,75 +174,6 @@
|
||||||
<data name="FillUUID" xml:space="preserve">
|
<data name="FillUUID" xml:space="preserve">
|
||||||
<value>Please fill in the user ID</value>
|
<value>Please fill in the user ID</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NeedHttpGlobalProxy" xml:space="preserve">
|
|
||||||
<value> This feature relies on the Http global proxy, please set it correctly first.</value>
|
|
||||||
</data>
|
|
||||||
<data name="NonVmessService" xml:space="preserve">
|
|
||||||
<value> non-Vmess service, this feature is invalid</value>
|
|
||||||
</data>
|
|
||||||
<data name="NoValidQRcodeFound" xml:space="preserve">
|
|
||||||
<value>Scan completed, no valid QR code found</value>
|
|
||||||
</data>
|
|
||||||
<data name="OperationFailed" xml:space="preserve">
|
|
||||||
<value> operation failed, please check retry</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseFillRemarks" xml:space="preserve">
|
|
||||||
<value>Please Fill Remarks</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseSelectEncryption" xml:space="preserve">
|
|
||||||
<value>Please select the encryption method</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseSelectProtocol" xml:space="preserve">
|
|
||||||
<value>Please select an agreement</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseSelectServer" xml:space="preserve">
|
|
||||||
<value>Please select the server first</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfullyImportedCustomServer" xml:space="preserve">
|
|
||||||
<value>Successfully imported custom configuration server</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfullyImportedServerViaClipboard" xml:space="preserve">
|
|
||||||
<value>{0} servers have been imported from clipboard.</value>
|
|
||||||
</data>
|
|
||||||
<data name="CustomServerTips" xml:space="preserve">
|
|
||||||
<value>Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound.</value>
|
|
||||||
</data>
|
|
||||||
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
|
||||||
<value>The client configuration file is saved at: {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
|
||||||
<value>The server configuration file is saved at: {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="SpeedServerTips" xml:space="preserve">
|
|
||||||
<value>Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node!</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
|
||||||
<value>Scan import URL successfully</value>
|
|
||||||
</data>
|
|
||||||
<data name="DownloadYesNo" xml:space="preserve">
|
|
||||||
<value>Whether to download? {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="RemoveServer" xml:space="preserve">
|
|
||||||
<value>Are you sure to remove the server?</value>
|
|
||||||
</data>
|
|
||||||
<data name="CheckServerSettings" xml:space="preserve">
|
|
||||||
<value>Please check the server settings first</value>
|
|
||||||
</data>
|
|
||||||
<data name="ConfigurationFormatIncorrect" xml:space="preserve">
|
|
||||||
<value> configuration format is incorrect</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedConversionConfiguration" xml:space="preserve">
|
|
||||||
<value>Failed to convert configuration file</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedGenDefaultConfiguration" xml:space="preserve">
|
|
||||||
<value>Failed to generate default configuration file</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedGetDefaultConfiguration" xml:space="preserve">
|
|
||||||
<value> Failed to get the default configuration</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedReadConfiguration" xml:space="preserve">
|
|
||||||
<value>Failed to read configuration file</value>
|
|
||||||
</data>
|
|
||||||
<data name="IncorrectClientConfiguration" xml:space="preserve">
|
<data name="IncorrectClientConfiguration" xml:space="preserve">
|
||||||
<value> is not the correct client configuration file, please check</value>
|
<value> is not the correct client configuration file, please check</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -228,24 +186,11 @@
|
||||||
<data name="InitialConfiguration" xml:space="preserve">
|
<data name="InitialConfiguration" xml:space="preserve">
|
||||||
<value>Initial Configuration</value>
|
<value>Initial Configuration</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
|
||||||
<value>Non-vmess or ss protocol</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfulConfiguration" xml:space="preserve">
|
|
||||||
<value>Successful configuration
|
|
||||||
{0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotFoundCore" xml:space="preserve">
|
|
||||||
<value>V2ray-core not found, please download: {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="IsLatestN" xml:space="preserve">
|
|
||||||
<value>{0} already up to date.</value>
|
|
||||||
</data>
|
|
||||||
<data name="IsLatestCore" xml:space="preserve">
|
<data name="IsLatestCore" xml:space="preserve">
|
||||||
<value>{0} already up to date.</value>
|
<value>{0} already up to date.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StartService" xml:space="preserve">
|
<data name="IsLatestN" xml:space="preserve">
|
||||||
<value>Start service ({0})...</value>
|
<value>{0} already up to date.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LvAddress" xml:space="preserve">
|
<data name="LvAddress" xml:space="preserve">
|
||||||
<value>Address</value>
|
<value>Address</value>
|
||||||
|
@ -268,9 +213,24 @@
|
||||||
<data name="LvTestResults" xml:space="preserve">
|
<data name="LvTestResults" xml:space="preserve">
|
||||||
<value>Test Results</value>
|
<value>Test Results</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LvTodayDownloadDataAmount" xml:space="preserve">
|
||||||
|
<value>Today download traffic</value>
|
||||||
|
</data>
|
||||||
|
<data name="LvTodayUploadDataAmount" xml:space="preserve">
|
||||||
|
<value>Today upload traffic</value>
|
||||||
|
</data>
|
||||||
|
<data name="LvTotalDownloadDataAmount" xml:space="preserve">
|
||||||
|
<value>Total download traffic</value>
|
||||||
|
</data>
|
||||||
|
<data name="LvTotalUploadDataAmount" xml:space="preserve">
|
||||||
|
<value>Total upload traffic</value>
|
||||||
|
</data>
|
||||||
<data name="LvTransportProtocol" xml:space="preserve">
|
<data name="LvTransportProtocol" xml:space="preserve">
|
||||||
<value>Transport</value>
|
<value>Transport</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MediumFresh" xml:space="preserve">
|
||||||
|
<value>MediumFresh</value>
|
||||||
|
</data>
|
||||||
<data name="MsgClearSubscription" xml:space="preserve">
|
<data name="MsgClearSubscription" xml:space="preserve">
|
||||||
<value>Clear original subscription content</value>
|
<value>Clear original subscription content</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -325,34 +285,74 @@
|
||||||
<data name="MsgUpdateV2rayCoreSuccessfullyMore" xml:space="preserve">
|
<data name="MsgUpdateV2rayCoreSuccessfullyMore" xml:space="preserve">
|
||||||
<value>Update V2rayCore successfully! Restarting service...</value>
|
<value>Update V2rayCore successfully! Restarting service...</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MediumFresh" xml:space="preserve">
|
<data name="NeedHttpGlobalProxy" xml:space="preserve">
|
||||||
<value>MediumFresh</value>
|
<value> This feature relies on the Http global proxy, please set it correctly first.</value>
|
||||||
|
</data>
|
||||||
|
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
||||||
|
<value>Non-vmess or ss protocol</value>
|
||||||
|
</data>
|
||||||
|
<data name="NonVmessService" xml:space="preserve">
|
||||||
|
<value> non-Vmess service, this feature is invalid</value>
|
||||||
|
</data>
|
||||||
|
<data name="NotFoundCore" xml:space="preserve">
|
||||||
|
<value>V2ray-core not found, please download: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="NoValidQRcodeFound" xml:space="preserve">
|
||||||
|
<value>Scan completed, no valid QR code found</value>
|
||||||
|
</data>
|
||||||
|
<data name="OperationFailed" xml:space="preserve">
|
||||||
|
<value> operation failed, please check retry</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseFillRemarks" xml:space="preserve">
|
||||||
|
<value>Please Fill Remarks</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseSelectEncryption" xml:space="preserve">
|
||||||
|
<value>Please select the encryption method</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseSelectProtocol" xml:space="preserve">
|
||||||
|
<value>Please select an agreement</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseSelectServer" xml:space="preserve">
|
||||||
|
<value>Please select the server first</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickFresh" xml:space="preserve">
|
<data name="QuickFresh" xml:space="preserve">
|
||||||
<value>QuickFresh</value>
|
<value>QuickFresh</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="RemoveDuplicateServerResult" xml:space="preserve">
|
||||||
|
<value>Servers deduplication completed. Old: {0}, New: {1}.</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveServer" xml:space="preserve">
|
||||||
|
<value>Are you sure to remove the server?</value>
|
||||||
|
</data>
|
||||||
|
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
||||||
|
<value>The client configuration file is saved at: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
||||||
|
<value>The server configuration file is saved at: {0}</value>
|
||||||
|
</data>
|
||||||
<data name="SlowFresh" xml:space="preserve">
|
<data name="SlowFresh" xml:space="preserve">
|
||||||
<value>SlowFresh</value>
|
<value>SlowFresh</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="downloadSpeed" xml:space="preserve">
|
<data name="SpeedServerTips" xml:space="preserve">
|
||||||
<value>DOWN</value>
|
<value>Note: After this function relies on the Http global proxy test, please manually adjust the Http global proxy and active node!</value>
|
||||||
</data>
|
|
||||||
<data name="LvTodayDownloadDataAmount" xml:space="preserve">
|
|
||||||
<value>Today download traffic</value>
|
|
||||||
</data>
|
|
||||||
<data name="LvTodayUploadDataAmount" xml:space="preserve">
|
|
||||||
<value>Today upload traffic</value>
|
|
||||||
</data>
|
|
||||||
<data name="LvTotalDownloadDataAmount" xml:space="preserve">
|
|
||||||
<value>Total download traffic</value>
|
|
||||||
</data>
|
|
||||||
<data name="LvTotalUploadDataAmount" xml:space="preserve">
|
|
||||||
<value>Total upload traffic</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="StartPacFailed" xml:space="preserve">
|
<data name="StartPacFailed" xml:space="preserve">
|
||||||
<value>PAC failed to start. Run it with Admin right.</value>
|
<value>PAC failed to start. Run it with Admin right.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemoveDuplicateServerResult" xml:space="preserve">
|
<data name="StartService" xml:space="preserve">
|
||||||
<value>Servers deduplication completed. Old: {0}, New: {1}.</value>
|
<value>Start service ({0})...</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfulConfiguration" xml:space="preserve">
|
||||||
|
<value>Successful configuration
|
||||||
|
{0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfullyImportedCustomServer" xml:space="preserve">
|
||||||
|
<value>Successfully imported custom configuration server</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfullyImportedServerViaClipboard" xml:space="preserve">
|
||||||
|
<value>{0} servers have been imported from clipboard.</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||||
|
<value>Scan import URL successfully</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -123,9 +123,36 @@
|
||||||
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
<data name="BatchExportURLSuccessfully" xml:space="preserve">
|
||||||
<value>批量导出分享URL至剪贴板成功</value>
|
<value>批量导出分享URL至剪贴板成功</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CheckServerSettings" xml:space="preserve">
|
||||||
|
<value>请先检查服务器设置</value>
|
||||||
|
</data>
|
||||||
|
<data name="ConfigurationFormatIncorrect" xml:space="preserve">
|
||||||
|
<value>配置格式不正确</value>
|
||||||
|
</data>
|
||||||
|
<data name="CustomServerTips" xml:space="preserve">
|
||||||
|
<value>注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。在自定义配置inbound中有socks port等于设置中的port时,系统代理才可用</value>
|
||||||
|
</data>
|
||||||
|
<data name="downloadSpeed" xml:space="preserve">
|
||||||
|
<value>下载</value>
|
||||||
|
</data>
|
||||||
|
<data name="DownloadYesNo" xml:space="preserve">
|
||||||
|
<value>是否下载? {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="FailedConversionConfiguration" xml:space="preserve">
|
||||||
|
<value>转换配置文件失败</value>
|
||||||
|
</data>
|
||||||
|
<data name="FailedGenDefaultConfiguration" xml:space="preserve">
|
||||||
|
<value>生成默认配置文件失败</value>
|
||||||
|
</data>
|
||||||
|
<data name="FailedGetDefaultConfiguration" xml:space="preserve">
|
||||||
|
<value>取得默认配置失败</value>
|
||||||
|
</data>
|
||||||
<data name="FailedImportedCustomServer" xml:space="preserve">
|
<data name="FailedImportedCustomServer" xml:space="preserve">
|
||||||
<value>导入自定义配置服务器失败</value>
|
<value>导入自定义配置服务器失败</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FailedReadConfiguration" xml:space="preserve">
|
||||||
|
<value>读取配置文件失败</value>
|
||||||
|
</data>
|
||||||
<data name="FillCorrectAlterId" xml:space="preserve">
|
<data name="FillCorrectAlterId" xml:space="preserve">
|
||||||
<value>请填写正确格式额外ID</value>
|
<value>请填写正确格式额外ID</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -147,75 +174,6 @@
|
||||||
<data name="FillUUID" xml:space="preserve">
|
<data name="FillUUID" xml:space="preserve">
|
||||||
<value>请填写用户ID</value>
|
<value>请填写用户ID</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NeedHttpGlobalProxy" xml:space="preserve">
|
|
||||||
<value>此功能依赖Http全局代理,请先设置正确。</value>
|
|
||||||
</data>
|
|
||||||
<data name="NonVmessService" xml:space="preserve">
|
|
||||||
<value>非Vmess服务,此功能无效</value>
|
|
||||||
</data>
|
|
||||||
<data name="NoValidQRcodeFound" xml:space="preserve">
|
|
||||||
<value>扫描完成,未发现有效二维码</value>
|
|
||||||
</data>
|
|
||||||
<data name="OperationFailed" xml:space="preserve">
|
|
||||||
<value>操作失败,请检查重试</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseFillRemarks" xml:space="preserve">
|
|
||||||
<value>请填写备注</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseSelectEncryption" xml:space="preserve">
|
|
||||||
<value>请选择加密方式</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseSelectProtocol" xml:space="preserve">
|
|
||||||
<value>请选择协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="PleaseSelectServer" xml:space="preserve">
|
|
||||||
<value>请先选择服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfullyImportedCustomServer" xml:space="preserve">
|
|
||||||
<value>成功导入自定义配置服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfullyImportedServerViaClipboard" xml:space="preserve">
|
|
||||||
<value>成功从剪贴板导入 {0} 个服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="CustomServerTips" xml:space="preserve">
|
|
||||||
<value>注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。在自定义配置inbound中有socks port等于设置中的port时,系统代理才可用</value>
|
|
||||||
</data>
|
|
||||||
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
|
||||||
<value>客户端配置文件保存在:{0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
|
||||||
<value>服务端配置文件保存在:{0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="SpeedServerTips" xml:space="preserve">
|
|
||||||
<value>注意:此功能依赖Http全局代理!测试完成后,请手工调整Http全局代理和活动节点。</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
|
||||||
<value>扫描导入URL成功</value>
|
|
||||||
</data>
|
|
||||||
<data name="DownloadYesNo" xml:space="preserve">
|
|
||||||
<value>是否下载? {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="RemoveServer" xml:space="preserve">
|
|
||||||
<value>是否确定移除服务器?</value>
|
|
||||||
</data>
|
|
||||||
<data name="CheckServerSettings" xml:space="preserve">
|
|
||||||
<value>请先检查服务器设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="ConfigurationFormatIncorrect" xml:space="preserve">
|
|
||||||
<value>配置格式不正确</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedConversionConfiguration" xml:space="preserve">
|
|
||||||
<value>转换配置文件失败</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedGenDefaultConfiguration" xml:space="preserve">
|
|
||||||
<value>生成默认配置文件失败</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedGetDefaultConfiguration" xml:space="preserve">
|
|
||||||
<value>取得默认配置失败</value>
|
|
||||||
</data>
|
|
||||||
<data name="FailedReadConfiguration" xml:space="preserve">
|
|
||||||
<value>读取配置文件失败</value>
|
|
||||||
</data>
|
|
||||||
<data name="IncorrectClientConfiguration" xml:space="preserve">
|
<data name="IncorrectClientConfiguration" xml:space="preserve">
|
||||||
<value>不是正确的客户端配置文件,请检查</value>
|
<value>不是正确的客户端配置文件,请检查</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -228,24 +186,11 @@
|
||||||
<data name="InitialConfiguration" xml:space="preserve">
|
<data name="InitialConfiguration" xml:space="preserve">
|
||||||
<value>初始化配置</value>
|
<value>初始化配置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
|
||||||
<value>非vmess或ss协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="SuccessfulConfiguration" xml:space="preserve">
|
|
||||||
<value>配置成功
|
|
||||||
{0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotFoundCore" xml:space="preserve">
|
|
||||||
<value>找不到 v2ray-core,下载地址: {0}</value>
|
|
||||||
</data>
|
|
||||||
<data name="IsLatestN" xml:space="preserve">
|
|
||||||
<value>{0} 已是最新版本。</value>
|
|
||||||
</data>
|
|
||||||
<data name="IsLatestCore" xml:space="preserve">
|
<data name="IsLatestCore" xml:space="preserve">
|
||||||
<value>{0} 已是最新版本。</value>
|
<value>{0} 已是最新版本。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StartService" xml:space="preserve">
|
<data name="IsLatestN" xml:space="preserve">
|
||||||
<value>启动服务({0})...</value>
|
<value>{0} 已是最新版本。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LvAddress" xml:space="preserve">
|
<data name="LvAddress" xml:space="preserve">
|
||||||
<value>地址</value>
|
<value>地址</value>
|
||||||
|
@ -268,9 +213,24 @@
|
||||||
<data name="LvTestResults" xml:space="preserve">
|
<data name="LvTestResults" xml:space="preserve">
|
||||||
<value>测试结果</value>
|
<value>测试结果</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LvTodayDownloadDataAmount" xml:space="preserve">
|
||||||
|
<value>今日下载</value>
|
||||||
|
</data>
|
||||||
|
<data name="LvTodayUploadDataAmount" xml:space="preserve">
|
||||||
|
<value>今日上传</value>
|
||||||
|
</data>
|
||||||
|
<data name="LvTotalDownloadDataAmount" xml:space="preserve">
|
||||||
|
<value>总下载</value>
|
||||||
|
</data>
|
||||||
|
<data name="LvTotalUploadDataAmount" xml:space="preserve">
|
||||||
|
<value>总上传</value>
|
||||||
|
</data>
|
||||||
<data name="LvTransportProtocol" xml:space="preserve">
|
<data name="LvTransportProtocol" xml:space="preserve">
|
||||||
<value>传输协议</value>
|
<value>传输协议</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MediumFresh" xml:space="preserve">
|
||||||
|
<value>中等</value>
|
||||||
|
</data>
|
||||||
<data name="MsgClearSubscription" xml:space="preserve">
|
<data name="MsgClearSubscription" xml:space="preserve">
|
||||||
<value>清除原订阅内容</value>
|
<value>清除原订阅内容</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -325,34 +285,74 @@
|
||||||
<data name="MsgUpdateV2rayCoreSuccessfullyMore" xml:space="preserve">
|
<data name="MsgUpdateV2rayCoreSuccessfullyMore" xml:space="preserve">
|
||||||
<value>更新V2rayCore成功!正在重启服务...</value>
|
<value>更新V2rayCore成功!正在重启服务...</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MediumFresh" xml:space="preserve">
|
<data name="NeedHttpGlobalProxy" xml:space="preserve">
|
||||||
<value>中等</value>
|
<value>此功能依赖Http全局代理,请先设置正确。</value>
|
||||||
|
</data>
|
||||||
|
<data name="NonvmessOrssProtocol" xml:space="preserve">
|
||||||
|
<value>非vmess或ss协议</value>
|
||||||
|
</data>
|
||||||
|
<data name="NonVmessService" xml:space="preserve">
|
||||||
|
<value>非Vmess服务,此功能无效</value>
|
||||||
|
</data>
|
||||||
|
<data name="NotFoundCore" xml:space="preserve">
|
||||||
|
<value>找不到 v2ray-core,下载地址: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="NoValidQRcodeFound" xml:space="preserve">
|
||||||
|
<value>扫描完成,未发现有效二维码</value>
|
||||||
|
</data>
|
||||||
|
<data name="OperationFailed" xml:space="preserve">
|
||||||
|
<value>操作失败,请检查重试</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseFillRemarks" xml:space="preserve">
|
||||||
|
<value>请填写备注</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseSelectEncryption" xml:space="preserve">
|
||||||
|
<value>请选择加密方式</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseSelectProtocol" xml:space="preserve">
|
||||||
|
<value>请选择协议</value>
|
||||||
|
</data>
|
||||||
|
<data name="PleaseSelectServer" xml:space="preserve">
|
||||||
|
<value>请先选择服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickFresh" xml:space="preserve">
|
<data name="QuickFresh" xml:space="preserve">
|
||||||
<value>快</value>
|
<value>快</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="RemoveDuplicateServerResult" xml:space="preserve">
|
||||||
|
<value>服务器去重完成。原数量: {0},现数量: {1}</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveServer" xml:space="preserve">
|
||||||
|
<value>是否确定移除服务器?</value>
|
||||||
|
</data>
|
||||||
|
<data name="SaveClientConfigurationIn" xml:space="preserve">
|
||||||
|
<value>客户端配置文件保存在:{0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="SaveServerConfigurationIn" xml:space="preserve">
|
||||||
|
<value>服务端配置文件保存在:{0}</value>
|
||||||
|
</data>
|
||||||
<data name="SlowFresh" xml:space="preserve">
|
<data name="SlowFresh" xml:space="preserve">
|
||||||
<value>慢</value>
|
<value>慢</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="downloadSpeed" xml:space="preserve">
|
<data name="SpeedServerTips" xml:space="preserve">
|
||||||
<value>下载</value>
|
<value>注意:此功能依赖Http全局代理!测试完成后,请手工调整Http全局代理和活动节点。</value>
|
||||||
</data>
|
|
||||||
<data name="LvTodayDownloadDataAmount" xml:space="preserve">
|
|
||||||
<value>今日下载</value>
|
|
||||||
</data>
|
|
||||||
<data name="LvTodayUploadDataAmount" xml:space="preserve">
|
|
||||||
<value>今日上传</value>
|
|
||||||
</data>
|
|
||||||
<data name="LvTotalDownloadDataAmount" xml:space="preserve">
|
|
||||||
<value>总下载</value>
|
|
||||||
</data>
|
|
||||||
<data name="LvTotalUploadDataAmount" xml:space="preserve">
|
|
||||||
<value>总上传</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="StartPacFailed" xml:space="preserve">
|
<data name="StartPacFailed" xml:space="preserve">
|
||||||
<value>PAC服务启动失败,请用管理员启动</value>
|
<value>PAC服务启动失败,请用管理员启动</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemoveDuplicateServerResult" xml:space="preserve">
|
<data name="StartService" xml:space="preserve">
|
||||||
<value>服务器去重完成。原数量: {0},现数量: {1}</value>
|
<value>启动服务({0})...</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfulConfiguration" xml:space="preserve">
|
||||||
|
<value>配置成功
|
||||||
|
{0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfullyImportedCustomServer" xml:space="preserve">
|
||||||
|
<value>成功导入自定义配置服务器</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfullyImportedServerViaClipboard" xml:space="preserve">
|
||||||
|
<value>成功从剪贴板导入 {0} 个服务器</value>
|
||||||
|
</data>
|
||||||
|
<data name="SuccessfullyImportedServerViaScan" xml:space="preserve">
|
||||||
|
<value>扫描导入URL成功</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -11,7 +11,7 @@ namespace v2rayN.Tool
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
|
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
|
||||||
fs.Write(content, 0, content.Length);
|
fs.Write(content, 0, content.Length);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,8 @@ namespace v2rayN.Tool
|
||||||
byte[] buffer = new byte[4096];
|
byte[] buffer = new byte[4096];
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
using (var fs = File.Create(fileName))
|
using (FileStream fs = File.Create(fileName))
|
||||||
using (var input = new GZipStream(new MemoryStream(content),
|
using (GZipStream input = new GZipStream(new MemoryStream(content),
|
||||||
CompressionMode.Decompress, false))
|
CompressionMode.Decompress, false))
|
||||||
{
|
{
|
||||||
while ((n = input.Read(buffer, 0, buffer.Length)) > 0)
|
while ((n = input.Read(buffer, 0, buffer.Length)) > 0)
|
||||||
|
@ -56,8 +56,8 @@ namespace v2rayN.Tool
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
using (var sr = new StreamReader(fs, encoding))
|
using (StreamReader sr = new StreamReader(fs, encoding))
|
||||||
{
|
{
|
||||||
return sr.ReadToEnd();
|
return sr.ReadToEnd();
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,13 +16,13 @@ namespace v2rayN
|
||||||
public Job()
|
public Job()
|
||||||
{
|
{
|
||||||
handle = CreateJobObject(IntPtr.Zero, null);
|
handle = CreateJobObject(IntPtr.Zero, null);
|
||||||
var extendedInfoPtr = IntPtr.Zero;
|
IntPtr extendedInfoPtr = IntPtr.Zero;
|
||||||
var info = new JOBOBJECT_BASIC_LIMIT_INFORMATION
|
JOBOBJECT_BASIC_LIMIT_INFORMATION info = new JOBOBJECT_BASIC_LIMIT_INFORMATION
|
||||||
{
|
{
|
||||||
LimitFlags = 0x2000
|
LimitFlags = 0x2000
|
||||||
};
|
};
|
||||||
|
|
||||||
var extendedInfo = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION
|
JOBOBJECT_EXTENDED_LIMIT_INFORMATION extendedInfo = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION
|
||||||
{
|
{
|
||||||
BasicLimitInformation = info
|
BasicLimitInformation = info
|
||||||
};
|
};
|
||||||
|
@ -50,7 +50,7 @@ namespace v2rayN
|
||||||
|
|
||||||
public bool AddProcess(IntPtr processHandle)
|
public bool AddProcess(IntPtr processHandle)
|
||||||
{
|
{
|
||||||
var succ = AssignProcessToJobObject(handle, processHandle);
|
bool succ = AssignProcessToJobObject(handle, processHandle);
|
||||||
|
|
||||||
if (!succ)
|
if (!succ)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System.Globalization;
|
using System.Windows.Forms;
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace v2rayN
|
namespace v2rayN
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace v2rayN
|
||||||
|
|
||||||
static string LoadString(ResourceManager resMgr, string key)
|
static string LoadString(ResourceManager resMgr, string key)
|
||||||
{
|
{
|
||||||
var value = resMgr.GetString(key);
|
string value = resMgr.GetString(key);
|
||||||
if (value == null)
|
if (value == null)
|
||||||
{
|
{
|
||||||
throw new KeyNotFoundException($"key: {key}");
|
throw new KeyNotFoundException($"key: {key}");
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace v2rayN
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var assembly = Assembly.GetExecutingAssembly();
|
Assembly assembly = Assembly.GetExecutingAssembly();
|
||||||
using (Stream stream = assembly.GetManifestResourceStream(res))
|
using (Stream stream = assembly.GetManifestResourceStream(res))
|
||||||
using (StreamReader reader = new StreamReader(stream))
|
using (StreamReader reader = new StreamReader(stream))
|
||||||
{
|
{
|
||||||
|
@ -124,7 +124,7 @@ namespace v2rayN
|
||||||
int result = -1;
|
int result = -1;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (StreamWriter file = System.IO.File.CreateText(filePath))
|
using (StreamWriter file = File.CreateText(filePath))
|
||||||
{
|
{
|
||||||
//JsonSerializer serializer = new JsonSerializer();
|
//JsonSerializer serializer = new JsonSerializer();
|
||||||
JsonSerializer serializer = new JsonSerializer() { Formatting = Formatting.Indented };
|
JsonSerializer serializer = new JsonSerializer() { Formatting = Formatting.Indented };
|
||||||
|
@ -194,7 +194,7 @@ namespace v2rayN
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
|
||||||
return Convert.ToBase64String(plainTextBytes);
|
return Convert.ToBase64String(plainTextBytes);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -272,20 +272,20 @@ namespace v2rayN
|
||||||
/// <param name="unit">单位</param>
|
/// <param name="unit">单位</param>
|
||||||
public static void ToHumanReadable(ulong amount, out double result, out string unit)
|
public static void ToHumanReadable(ulong amount, out double result, out string unit)
|
||||||
{
|
{
|
||||||
var factor = 1024u;
|
uint factor = 1024u;
|
||||||
var KBs = amount / factor;
|
ulong KBs = amount / factor;
|
||||||
if (KBs > 0)
|
if (KBs > 0)
|
||||||
{
|
{
|
||||||
// multi KB
|
// multi KB
|
||||||
var MBs = KBs / factor;
|
ulong MBs = KBs / factor;
|
||||||
if (MBs > 0)
|
if (MBs > 0)
|
||||||
{
|
{
|
||||||
// multi MB
|
// multi MB
|
||||||
var GBs = MBs / factor;
|
ulong GBs = MBs / factor;
|
||||||
if (GBs > 0)
|
if (GBs > 0)
|
||||||
{
|
{
|
||||||
// multi GB
|
// multi GB
|
||||||
var TBs = GBs / factor;
|
ulong TBs = GBs / factor;
|
||||||
if (TBs > 0)
|
if (TBs > 0)
|
||||||
{
|
{
|
||||||
// 你是魔鬼吗? 用这么多流量
|
// 你是魔鬼吗? 用这么多流量
|
||||||
|
@ -314,23 +314,39 @@ namespace v2rayN
|
||||||
|
|
||||||
public static string HumanFy(ulong amount)
|
public static string HumanFy(ulong amount)
|
||||||
{
|
{
|
||||||
double result;
|
ToHumanReadable(amount, out double result, out string unit);
|
||||||
string unit;
|
|
||||||
ToHumanReadable(amount, out result, out unit);
|
|
||||||
return $"{string.Format("{0:f1}", result)} {unit}";
|
return $"{string.Format("{0:f1}", result)} {unit}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DedupServerList(List<Mode.VmessItem> source, out List<Mode.VmessItem> result)
|
public static void DedupServerList(List<Mode.VmessItem> source, out List<Mode.VmessItem> result, bool keepOlder)
|
||||||
{
|
{
|
||||||
var list = new List<Mode.VmessItem>();
|
List<Mode.VmessItem> list = new List<Mode.VmessItem>();
|
||||||
foreach (var item in source)
|
if (!keepOlder) source.Reverse(); // Remove the early items first
|
||||||
|
|
||||||
|
bool _isAdded(Mode.VmessItem o, Mode.VmessItem n)
|
||||||
{
|
{
|
||||||
if (!list.Exists(i => item.address == i.address && item.port == i.port && item.path == i.path))
|
return o.configVersion == n.configVersion &&
|
||||||
|
o.configType == n.configType &&
|
||||||
|
o.address == n.address &&
|
||||||
|
o.port == n.port &&
|
||||||
|
o.id == n.id &&
|
||||||
|
o.alterId == n.alterId &&
|
||||||
|
o.security == n.security &&
|
||||||
|
o.network == n.network &&
|
||||||
|
o.headerType == n.headerType &&
|
||||||
|
o.requestHost == n.requestHost &&
|
||||||
|
o.path == n.path &&
|
||||||
|
o.streamSecurity == n.streamSecurity;
|
||||||
|
// skip (will remove) different remarks
|
||||||
|
}
|
||||||
|
foreach (Mode.VmessItem item in source)
|
||||||
|
{
|
||||||
|
if (!list.Exists(i => _isAdded(i, item)))
|
||||||
{
|
{
|
||||||
list.Add(item);
|
list.Add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!keepOlder) list.Reverse();
|
||||||
result = list;
|
result = list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,7 +364,7 @@ namespace v2rayN
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int var1 = Utils.ToInt(oText);
|
int var1 = ToInt(oText);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -392,7 +408,7 @@ namespace v2rayN
|
||||||
//可能是CIDR
|
//可能是CIDR
|
||||||
if (ip.IndexOf(@"/") > 0)
|
if (ip.IndexOf(@"/") > 0)
|
||||||
{
|
{
|
||||||
var cidr = ip.Split('/');
|
string[] cidr = ip.Split('/');
|
||||||
if (cidr.Length == 2)
|
if (cidr.Length == 2)
|
||||||
{
|
{
|
||||||
if (!IsNumberic(cidr[0]))
|
if (!IsNumberic(cidr[0]))
|
||||||
|
@ -497,7 +513,7 @@ namespace v2rayN
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var value = RegReadValue(autoRunRegPath, autoRunName, "");
|
string value = RegReadValue(autoRunRegPath, autoRunName, "");
|
||||||
string exePath = GetExePath();
|
string exePath = GetExePath();
|
||||||
if (value?.Equals(exePath) == true)
|
if (value?.Equals(exePath) == true)
|
||||||
{
|
{
|
||||||
|
@ -517,7 +533,7 @@ namespace v2rayN
|
||||||
public static string GetPath(string fileName)
|
public static string GetPath(string fileName)
|
||||||
{
|
{
|
||||||
string startupPath = StartupPath();
|
string startupPath = StartupPath();
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
if (IsNullOrEmpty(fileName))
|
||||||
{
|
{
|
||||||
return startupPath;
|
return startupPath;
|
||||||
}
|
}
|
||||||
|
@ -817,7 +833,7 @@ namespace v2rayN
|
||||||
sb.Write(buffer, 0, n);
|
sb.Write(buffer, 0, n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return System.Text.Encoding.UTF8.GetString(sb.ToArray());
|
return Encoding.UTF8.GetString(sb.ToArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -899,10 +915,10 @@ namespace v2rayN
|
||||||
GraphicsUnit.Pixel);
|
GraphicsUnit.Pixel);
|
||||||
}
|
}
|
||||||
|
|
||||||
var source = new BitmapLuminanceSource(target);
|
BitmapLuminanceSource source = new BitmapLuminanceSource(target);
|
||||||
var bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
||||||
QRCodeReader reader = new QRCodeReader();
|
QRCodeReader reader = new QRCodeReader();
|
||||||
var result = reader.decode(bitmap);
|
Result result = reader.decode(bitmap);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
ret = result.Text;
|
ret = result.Text;
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace v2rayUpgrade
|
||||||
Process[] existing = Process.GetProcessesByName("v2rayN");
|
Process[] existing = Process.GetProcessesByName("v2rayN");
|
||||||
foreach (Process p in existing)
|
foreach (Process p in existing)
|
||||||
{
|
{
|
||||||
var path = p.MainModule.FileName;
|
string path = p.MainModule.FileName;
|
||||||
if (path == GetPath("v2rayN.exe"))
|
if (path == GetPath("v2rayN.exe"))
|
||||||
{
|
{
|
||||||
p.Kill();
|
p.Kill();
|
||||||
|
@ -49,7 +49,7 @@ namespace v2rayUpgrade
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileName = GetPath(_tempFileName);
|
string fileName = GetPath(_tempFileName);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File.Delete(fileName);
|
File.Delete(fileName);
|
||||||
|
@ -60,7 +60,7 @@ namespace v2rayUpgrade
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var startKey = "v2rayN/";
|
string startKey = "v2rayN/";
|
||||||
|
|
||||||
using (ZipArchive archive = ZipFile.OpenRead(fileName))
|
using (ZipArchive archive = ZipFile.OpenRead(fileName))
|
||||||
{
|
{
|
||||||
|
@ -70,7 +70,7 @@ namespace v2rayUpgrade
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var fullName = entry.FullName;
|
string fullName = entry.FullName;
|
||||||
if (fullName.StartsWith(startKey))
|
if (fullName.StartsWith(startKey))
|
||||||
{
|
{
|
||||||
fullName = fullName.Substring(startKey.Length, fullName.Length - startKey.Length);
|
fullName = fullName.Substring(startKey.Length, fullName.Length - startKey.Length);
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace v2rayUpgrade
|
namespace v2rayUpgrade
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// 有关程序集的一般信息由以下
|
// 有关程序集的一般信息由以下
|
||||||
|
|
Loading…
Reference in New Issue