Compare commits
213 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57d5e02d6a | ||
|
|
e578c75545 | ||
|
|
77c5f6c583 | ||
|
|
d8ee3c3bba | ||
|
|
656451f604 | ||
|
|
9dc8cba3f0 | ||
|
|
03c4954c27 | ||
|
|
3c550e2803 | ||
|
|
52f1bdf834 | ||
|
|
c2c9c6a6db | ||
|
|
b390776219 | ||
|
|
47dce69aa4 | ||
|
|
3aeaadade6 | ||
|
|
162b3ab29c | ||
|
|
b8848823cd | ||
|
|
378f350c52 | ||
|
|
e7231d33b3 | ||
|
|
7c633374f6 | ||
|
|
1663c7d819 | ||
|
|
00982fd40b | ||
|
|
3697de973c | ||
|
|
3e575cc485 | ||
|
|
1675c67ddd | ||
|
|
b20c90acf0 | ||
|
|
a370f7bfbb | ||
|
|
e2de9b4703 | ||
|
|
b487dcf448 | ||
|
|
6c0a364d03 | ||
|
|
f892f0c533 | ||
|
|
0713c0c667 | ||
|
|
ab4d34b6ac | ||
|
|
3823e5ca91 | ||
|
|
c0430536a6 | ||
|
|
6f85b5318b | ||
|
|
76e67693fa | ||
|
|
478521d6d9 | ||
|
|
57299cf182 | ||
|
|
45738a7160 | ||
|
|
583bd22244 | ||
|
|
ba68f5008b | ||
|
|
2f3f52c5e0 | ||
|
|
1dcb72e9dc | ||
|
|
153c8a0a74 | ||
|
|
4e8ea374d8 | ||
|
|
e313e004eb | ||
|
|
93b8dec63e | ||
|
|
5c9c35c199 | ||
|
|
4a6b8968d5 | ||
|
|
088d2e6834 | ||
|
|
4f39f7a932 | ||
|
|
2615b72cee | ||
|
|
a799420d0f | ||
|
|
70069a05e6 | ||
|
|
d385b44a48 | ||
|
|
56c1557f4a | ||
|
|
737d563ebb | ||
|
|
81b70195cf | ||
|
|
e60851153b | ||
|
|
009a15f0d9 | ||
|
|
f234775bd5 | ||
|
|
9b8bd0fa8a | ||
|
|
f74191946c | ||
|
|
ffa8b6296d | ||
|
|
0b2a392de2 | ||
|
|
f6b044c10c | ||
|
|
88c87aec0e | ||
|
|
b632dee0ce | ||
|
|
0db772aaeb | ||
|
|
fedfed4028 | ||
|
|
3b27e7be36 | ||
|
|
78402118ef | ||
|
|
aa3094f796 | ||
|
|
20498ce453 | ||
|
|
56559e6509 | ||
|
|
9549d17b03 | ||
|
|
a822fa9766 | ||
|
|
dee4b19775 | ||
|
|
f4b885dce5 | ||
|
|
2c02285def | ||
|
|
be7d76947b | ||
|
|
a81254dfff | ||
|
|
cb24a909ae | ||
|
|
8a87318b68 | ||
|
|
219f544a43 | ||
|
|
46c887537e | ||
|
|
8cf66da07c | ||
|
|
57bcf8a1a7 | ||
|
|
05efff10da | ||
|
|
414ac3225a | ||
|
|
0a8e822f35 | ||
|
|
301d1dd998 | ||
|
|
621565f4a4 | ||
|
|
6f51d447c7 | ||
|
|
f9c7556c54 | ||
|
|
32b98524ff | ||
|
|
efaec3ee17 | ||
|
|
28826cad1b | ||
|
|
ca9840abf4 | ||
|
|
8813d66274 | ||
|
|
da2b0f7dd4 | ||
|
|
b1773dab90 | ||
|
|
9538a67be1 | ||
|
|
fbfbc811d4 | ||
|
|
1c04b752cd | ||
|
|
3b1a2287d5 | ||
|
|
f3e6bd2736 | ||
|
|
4e449811e7 | ||
|
|
910be7f471 | ||
|
|
1e088f851b | ||
|
|
a0b0ad53d2 | ||
|
|
5b3f09aaf7 | ||
|
|
f48468029e | ||
|
|
c837ba5482 | ||
|
|
2708ff7c1a | ||
|
|
1722e50402 | ||
|
|
244da05e70 | ||
|
|
0c26662602 | ||
|
|
2f65575fdf | ||
|
|
b1814c246a | ||
|
|
fd4af7c90c | ||
|
|
d337d4bc7b | ||
|
|
da96e75ad5 | ||
|
|
04e50d521a | ||
|
|
93aad41181 | ||
|
|
ab025b39f4 | ||
|
|
7b2bd8876d | ||
|
|
033f83465f | ||
|
|
e5547307b3 | ||
|
|
82f77b41ba | ||
|
|
8e37712175 | ||
|
|
3b06b553eb | ||
|
|
5de50009d2 | ||
|
|
56a8521893 | ||
|
|
33d541f067 | ||
|
|
957ffa203d | ||
|
|
3af13d64f3 | ||
|
|
f1e51ae1a3 | ||
|
|
6d2a1e0e9c | ||
|
|
ac2d71d7b0 | ||
|
|
002a8c505c | ||
|
|
49355da702 | ||
|
|
3b38dc51ba | ||
|
|
3a27b56cc1 | ||
|
|
fbb9c3cd64 | ||
|
|
07bdcb5491 | ||
|
|
01ac3be89f | ||
|
|
5f90b5b4c4 | ||
|
|
a616ba50c2 | ||
|
|
3ebaabc1ef | ||
|
|
1510549663 | ||
|
|
db0a757a49 | ||
|
|
20ab51e339 | ||
|
|
948b9c26d9 | ||
|
|
300a4d8067 | ||
|
|
a65afd7524 | ||
|
|
d8458e84f4 | ||
|
|
a6664fbc01 | ||
|
|
111f77c59c | ||
|
|
48218a3dad | ||
|
|
ec3eb2215b | ||
|
|
a6fcf53b10 | ||
|
|
be9bbcc2c7 | ||
|
|
a4a0b29250 | ||
|
|
01b34dd45a | ||
|
|
2d2e4deb82 | ||
|
|
3daa8f479c | ||
|
|
d2ab186e44 | ||
|
|
5b2a6b12af | ||
|
|
5357f504d8 | ||
|
|
df427d80a1 | ||
|
|
b1f5d5ad75 | ||
|
|
af71eed96e | ||
|
|
6293ddacc6 | ||
|
|
1a807c056c | ||
|
|
3bd65b8d85 | ||
|
|
cf6d0598f8 | ||
|
|
a2758f0e0a | ||
|
|
300f5ef949 | ||
|
|
01fef4d357 | ||
|
|
62b521718e | ||
|
|
6da0b6a628 | ||
|
|
9f3b128044 | ||
|
|
a7e215dd5b | ||
|
|
443605d1dc | ||
|
|
1865621a6a | ||
|
|
d94fcbd8a3 | ||
|
|
794b88e5ab | ||
|
|
e60369c817 | ||
|
|
2add30cc77 | ||
|
|
ec3c471df6 | ||
|
|
2f6236353b | ||
|
|
973d4ddbb2 | ||
|
|
0334d52cfb | ||
|
|
88d1948b51 | ||
|
|
11d90dfb68 | ||
|
|
cdc96817e8 | ||
|
|
edea40012c | ||
|
|
67b99c4c8b | ||
|
|
56c3c22568 | ||
|
|
d8d8346d45 | ||
|
|
8b68ecb891 | ||
|
|
c183f1ed6e | ||
|
|
4a9d9ac2ac | ||
|
|
5dffb30b27 | ||
|
|
cf195c7694 | ||
|
|
1922f30f0f | ||
|
|
b6d1c4330f | ||
|
|
aee8994c41 | ||
|
|
593313a684 | ||
|
|
c71caec9df | ||
|
|
89bc92b98e | ||
|
|
17dec098cd | ||
|
|
c1bb333555 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -5,10 +5,9 @@
|
|||||||
/v2rayN/.vs/
|
/v2rayN/.vs/
|
||||||
/v2rayN/v2rayN/bin/Debug/app.publish
|
/v2rayN/v2rayN/bin/Debug/app.publish
|
||||||
/v2rayN/v2rayN/bin/Debug
|
/v2rayN/v2rayN/bin/Debug
|
||||||
/v2rayN/v2rayN/obj/Debug
|
|
||||||
/v2rayN/.vs/v2rayN/DesignTimeBuild
|
|
||||||
/v2rayN/v2rayN/bin/Release
|
/v2rayN/v2rayN/bin/Release
|
||||||
/v2rayN/v2rayN/obj/Release
|
/v2rayN/v2rayN/obj/
|
||||||
|
/v2rayN/.vs/v2rayN/DesignTimeBuild
|
||||||
/v2rayN/packages
|
/v2rayN/packages
|
||||||
.vs/ProjectSettings.json
|
.vs/ProjectSettings.json
|
||||||
.vs/slnx.sqlite
|
.vs/slnx.sqlite
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# v2rayN
|
# v2rayN
|
||||||
|
|
||||||
### How to use
|
### How to use
|
||||||
- Download exe from release download
|
- If you are newbie please download v2rayN-Core.zip from releases
|
||||||
- Also need to download v2ray core in the same folder
|
- Otherwise please download v2rayN.zip (Also need to download v2ray core in the same folder)
|
||||||
- Run v2rayN.exe
|
- Run v2rayN.exe
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
- Microsoft [.NET Framework 4.6](https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers) or higher
|
- Microsoft [.NET Framework 4.6](https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers) or higher
|
||||||
- Project V core [https://github.com/v2ray/v2ray-core/releases](https://github.com/v2ray/v2ray-core/releases)
|
- Project V core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,101 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
public class HttpWebServer
|
|
||||||
{
|
|
||||||
private HttpListener _listener;
|
|
||||||
private Func<string, string> _responderMethod;
|
|
||||||
|
|
||||||
public HttpWebServer(string[] prefixes, Func<string, string> method)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_listener = new HttpListener();
|
|
||||||
|
|
||||||
if (!HttpListener.IsSupported)
|
|
||||||
throw new NotSupportedException(
|
|
||||||
"Needs Windows XP SP2, Server 2003 or later.");
|
|
||||||
|
|
||||||
// URI prefixes are required, for example
|
|
||||||
// "http://localhost:8080/index/".
|
|
||||||
if (prefixes == null || prefixes.Length == 0)
|
|
||||||
throw new ArgumentException("prefixes");
|
|
||||||
|
|
||||||
// A responder method is required
|
|
||||||
if (method == null)
|
|
||||||
throw new ArgumentException("method");
|
|
||||||
|
|
||||||
foreach (string s in prefixes)
|
|
||||||
_listener.Prefixes.Add(s);
|
|
||||||
|
|
||||||
_responderMethod = method;
|
|
||||||
_listener.Start();
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public HttpWebServer(Func<string, string> method, params string[] prefixes)
|
|
||||||
: this(prefixes, method) { }
|
|
||||||
|
|
||||||
public void Run()
|
|
||||||
{
|
|
||||||
ThreadPool.QueueUserWorkItem((o) =>
|
|
||||||
{
|
|
||||||
Utils.SaveLog("Webserver running...");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
while (_listener.IsListening)
|
|
||||||
{
|
|
||||||
ThreadPool.QueueUserWorkItem((c) =>
|
|
||||||
{
|
|
||||||
var ctx = c as HttpListenerContext;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string address = ctx.Request.LocalEndPoint.Address.ToString();
|
|
||||||
Utils.SaveLog("Webserver Request " + address);
|
|
||||||
string rstr = _responderMethod(address);
|
|
||||||
byte[] buf = Encoding.UTF8.GetBytes(rstr);
|
|
||||||
ctx.Response.StatusCode = 200;
|
|
||||||
ctx.Response.ContentType = "application/x-ns-proxy-autoconfig";
|
|
||||||
ctx.Response.ContentLength64 = buf.Length;
|
|
||||||
ctx.Response.OutputStream.Write(buf, 0, buf.Length);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
} // suppress any exceptions
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
// always close the stream
|
|
||||||
ctx.Response.OutputStream.Close();
|
|
||||||
}
|
|
||||||
}, _listener.GetContext());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
} // suppress any exceptions
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Stop()
|
|
||||||
{
|
|
||||||
if (_listener != null)
|
|
||||||
{
|
|
||||||
_listener.Stop();
|
|
||||||
_listener.Close();
|
|
||||||
_listener = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Threading;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
public class HttpWebServerB
|
|
||||||
{
|
|
||||||
private TcpListener listener;
|
|
||||||
private int port;
|
|
||||||
private Func<string, string> _responderMethod;
|
|
||||||
|
|
||||||
public HttpWebServerB(int port, Func<string, string> method)
|
|
||||||
{
|
|
||||||
this.port = port;
|
|
||||||
this._responderMethod = method;
|
|
||||||
|
|
||||||
Thread thread = new Thread(StartListen);
|
|
||||||
thread.IsBackground = true;
|
|
||||||
thread.Start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Stop()
|
|
||||||
{
|
|
||||||
if (listener != null)
|
|
||||||
{
|
|
||||||
listener.Stop();
|
|
||||||
listener = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StartListen()
|
|
||||||
{
|
|
||||||
listener = new TcpListener(IPAddress.Any, port);
|
|
||||||
listener.Start();
|
|
||||||
Utils.SaveLog("WebserverB running...");
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
if (!listener.Pending())
|
|
||||||
{
|
|
||||||
Thread.Sleep(100);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
TcpClient socket = listener.AcceptTcpClient();
|
|
||||||
Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread));
|
|
||||||
thread.IsBackground = true;
|
|
||||||
thread.Start(socket);
|
|
||||||
Thread.Sleep(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ProcessThread(object obj)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var socket = obj as TcpClient;
|
|
||||||
|
|
||||||
var inputStream = new BufferedStream(socket.GetStream());
|
|
||||||
var outputStream = new StreamWriter(new BufferedStream(socket.GetStream()));
|
|
||||||
if (inputStream.CanRead)
|
|
||||||
{
|
|
||||||
var data = ReadStream(inputStream);
|
|
||||||
|
|
||||||
if (data.Contains("/pac/"))
|
|
||||||
{
|
|
||||||
if (_responderMethod != null)
|
|
||||||
{
|
|
||||||
var address = ((IPEndPoint)socket.Client.LocalEndPoint).Address.ToString();
|
|
||||||
Utils.SaveLog("WebserverB Request " + address);
|
|
||||||
string pac = _responderMethod(address);
|
|
||||||
|
|
||||||
if (inputStream.CanWrite)
|
|
||||||
{
|
|
||||||
WriteStream(outputStream, pac);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
outputStream.BaseStream.Flush();
|
|
||||||
inputStream = null;
|
|
||||||
outputStream = null;
|
|
||||||
socket.Close();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string ReadStream(Stream inputStream)
|
|
||||||
{
|
|
||||||
int nextchar;
|
|
||||||
string data = "";
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
nextchar = inputStream.ReadByte();
|
|
||||||
if (nextchar == '\n')
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (nextchar == '\r')
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (nextchar == -1)
|
|
||||||
{
|
|
||||||
Thread.Sleep(1);
|
|
||||||
continue;
|
|
||||||
};
|
|
||||||
data += Convert.ToChar(nextchar);
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void WriteStream(StreamWriter outputStream, string pac)
|
|
||||||
{
|
|
||||||
var content_type = "application/x-ns-proxy-autoconfig";
|
|
||||||
outputStream.WriteLine("HTTP/1.1 200 OK");
|
|
||||||
outputStream.WriteLine(String.Format("Content-Type:{0}", content_type));
|
|
||||||
outputStream.WriteLine("Connection: close");
|
|
||||||
outputStream.WriteLine("");
|
|
||||||
outputStream.WriteLine(pac);
|
|
||||||
outputStream.Flush();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -18,39 +18,35 @@ namespace v2rayN.Base
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int count = this.Columns.Count;
|
this.SuspendLayout();
|
||||||
int MaxWidth = 0;
|
|
||||||
Graphics graphics = this.CreateGraphics();
|
Graphics graphics = this.CreateGraphics();
|
||||||
Font font = this.Font;
|
|
||||||
ListView.ListViewItemCollection items = this.Items;
|
|
||||||
|
|
||||||
string str;
|
|
||||||
int width;
|
|
||||||
|
|
||||||
|
// 原生 ColumnHeaderAutoResizeStyle.ColumnContent 将忽略列头宽度
|
||||||
this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
||||||
|
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < this.Columns.Count; i++)
|
||||||
{
|
{
|
||||||
str = this.Columns[i].Text;
|
ColumnHeader c = this.Columns[i];
|
||||||
MaxWidth = this.Columns[i].Width;
|
int cWidth = c.Width;
|
||||||
|
string MaxStr = "";
|
||||||
|
Font font = this.Items[0].SubItems[0].Font;
|
||||||
|
|
||||||
foreach (ListViewItem item in items)
|
foreach (ListViewItem item in this.Items)
|
||||||
{
|
{
|
||||||
str = item.SubItems[i].Text;
|
// 整行视作相同字形,不单独计算每个单元格
|
||||||
width = (int)graphics.MeasureString(str, font).Width;
|
font = item.SubItems[i].Font;
|
||||||
if (width > MaxWidth)
|
string str = item.SubItems[i].Text;
|
||||||
{
|
if (str.Length > MaxStr.Length) // 未考虑非等宽问题
|
||||||
MaxWidth = width;
|
MaxStr = str;
|
||||||
}
|
}
|
||||||
|
int strWidth = (int)graphics.MeasureString(MaxStr, font).Width;
|
||||||
|
c.Width = System.Math.Max(cWidth, strWidth);
|
||||||
}
|
}
|
||||||
if (i == 0)
|
this.ResumeLayout();
|
||||||
{
|
|
||||||
this.Columns[i].Width = MaxWidth;
|
|
||||||
}
|
|
||||||
this.Columns[i].Width = MaxWidth;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -17,17 +17,7 @@ namespace v2rayN.Base
|
|||||||
protected override WebRequest GetWebRequest(Uri address)
|
protected override WebRequest GetWebRequest(Uri address)
|
||||||
{
|
{
|
||||||
HttpWebRequest request;
|
HttpWebRequest request;
|
||||||
if (address.Scheme == "https")
|
|
||||||
{
|
|
||||||
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => { return true; };
|
|
||||||
request = (HttpWebRequest)base.GetWebRequest(address);
|
request = (HttpWebRequest)base.GetWebRequest(address);
|
||||||
request.ProtocolVersion = HttpVersion.Version10;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
request = (HttpWebRequest)base.GetWebRequest(address);
|
|
||||||
}
|
|
||||||
|
|
||||||
request.Timeout = Timeout;
|
request.Timeout = Timeout;
|
||||||
request.ReadWriteTimeout = Timeout;
|
request.ReadWriteTimeout = Timeout;
|
||||||
//request.AllowAutoRedirect = false;
|
//request.AllowAutoRedirect = false;
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ using v2rayN.Mode;
|
|||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class AddServer2Form : BaseForm
|
public partial class AddServer2Form : BaseServerForm
|
||||||
{
|
{
|
||||||
public int EditIndex { get; set; }
|
|
||||||
VmessItem vmessItem;
|
|
||||||
|
|
||||||
public AddServer2Form()
|
public AddServer2Form()
|
||||||
{
|
{
|
||||||
@@ -63,7 +61,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
14
v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
generated
14
v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
generated
@@ -55,14 +55,15 @@
|
|||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
this.groupBox1.Controls.Add(this.label13);
|
||||||
this.groupBox1.Controls.Add(this.cmbSecurity);
|
this.groupBox1.Controls.Add(this.cmbSecurity);
|
||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
this.groupBox1.Controls.Add(this.txtRemarks);
|
||||||
@@ -74,7 +75,6 @@
|
|||||||
this.groupBox1.Controls.Add(this.label2);
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
this.groupBox1.Controls.Add(this.txtAddress);
|
this.groupBox1.Controls.Add(this.txtAddress);
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -85,6 +85,7 @@
|
|||||||
//
|
//
|
||||||
// cmbSecurity
|
// cmbSecurity
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbSecurity.FormattingEnabled = true;
|
this.cmbSecurity.FormattingEnabled = true;
|
||||||
this.cmbSecurity.Items.AddRange(new object[] {
|
this.cmbSecurity.Items.AddRange(new object[] {
|
||||||
@@ -96,7 +97,6 @@
|
|||||||
resources.GetString("cmbSecurity.Items5"),
|
resources.GetString("cmbSecurity.Items5"),
|
||||||
resources.GetString("cmbSecurity.Items6"),
|
resources.GetString("cmbSecurity.Items6"),
|
||||||
resources.GetString("cmbSecurity.Items7")});
|
resources.GetString("cmbSecurity.Items7")});
|
||||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
|
||||||
this.cmbSecurity.Name = "cmbSecurity";
|
this.cmbSecurity.Name = "cmbSecurity";
|
||||||
//
|
//
|
||||||
// txtRemarks
|
// txtRemarks
|
||||||
@@ -146,9 +146,9 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
@@ -165,22 +165,22 @@
|
|||||||
//
|
//
|
||||||
// menuServer
|
// menuServer
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.menuServer, "menuServer");
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.MenuItem1});
|
this.MenuItem1});
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Name = "menuServer";
|
this.menuServer.Name = "menuServer";
|
||||||
//
|
//
|
||||||
// MenuItem1
|
// MenuItem1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
||||||
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.menuItemImportClipboard});
|
this.menuItemImportClipboard});
|
||||||
this.MenuItem1.Name = "MenuItem1";
|
this.MenuItem1.Name = "MenuItem1";
|
||||||
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
|
||||||
//
|
//
|
||||||
// menuItemImportClipboard
|
// menuItemImportClipboard
|
||||||
//
|
//
|
||||||
this.menuItemImportClipboard.Name = "menuItemImportClipboard";
|
|
||||||
resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard");
|
resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard");
|
||||||
|
this.menuItemImportClipboard.Name = "menuItemImportClipboard";
|
||||||
this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click);
|
this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click);
|
||||||
//
|
//
|
||||||
// AddServer3Form
|
// AddServer3Form
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ using v2rayN.Mode;
|
|||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class AddServer3Form : BaseForm
|
public partial class AddServer3Form : BaseServerForm
|
||||||
{
|
{
|
||||||
public int EditIndex { get; set; }
|
|
||||||
VmessItem vmessItem = null;
|
|
||||||
|
|
||||||
public AddServer3Form()
|
public AddServer3Form()
|
||||||
{
|
{
|
||||||
@@ -96,7 +94,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
@@ -121,11 +119,10 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
string msg;
|
VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg);
|
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.ShowWarning(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,489 +118,489 @@
|
|||||||
<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="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>396, 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" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<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>0</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">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>113, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>22</value>
|
<value>53, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name=">>label6.Name" xml:space="preserve">
|
||||||
<value>* Fill in manually</value>
|
<value>label6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
<data name=">>cmbSecurity.Parent" xml:space="preserve">
|
||||||
<value>label13</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
<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=">>label5.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 25</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>11</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
<data name=">>label13.Parent" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<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>
|
||||||
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>Import configuration file</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Name" xml:space="preserve">
|
||||||
|
<value>panel1</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>Password</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=">>label6.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</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=">>menuItemImportClipboard.Name" xml:space="preserve">
|
||||||
|
<value>menuItemImportClipboard</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 27</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<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>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbSecurity.Items1" xml:space="preserve">
|
|
||||||
<value>aes-128-cfb</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items2" xml:space="preserve">
|
|
||||||
<value>chacha20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items3" xml:space="preserve">
|
|
||||||
<value>chacha20-ietf</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items4" xml:space="preserve">
|
|
||||||
<value>aes-256-gcm</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items5" xml:space="preserve">
|
|
||||||
<value>aes-128-gcm</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items6" xml:space="preserve">
|
|
||||||
<value>chacha20-poly1305</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items7" xml:space="preserve">
|
|
||||||
<value>chacha20-ietf-poly1305</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 120</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>194, 20</value>
|
|
||||||
</data>
|
|
||||||
<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="txtId.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>cmbSecurity</value>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.Type" xml:space="preserve">
|
<data name="btnOK.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>303, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.Parent" xml:space="preserve">
|
<data name=">>panel1.Type" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>MenuItem1.Name" xml:space="preserve">
|
||||||
<value>127, 154</value>
|
<value>MenuItem1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||||
<value>194, 21</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>11</value>
|
<value>359, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
<data name=">>txtAddress.Type" 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>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>groupBox1</value>
|
<value>396, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
<data name=">>label2.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>
|
|
||||||
</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>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.Name" xml:space="preserve">
|
||||||
|
<value>label1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 25</value>
|
||||||
|
</data>
|
||||||
<data name="label5.Text" xml:space="preserve">
|
<data name="label5.Text" xml:space="preserve">
|
||||||
<value>Encryption</value>
|
<value>Encryption</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
||||||
<value>label5</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>22</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>162, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 123</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 91</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
<data name=">>label5.Parent" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
<data name=">>btnOK.Parent" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
<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>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Text" xml:space="preserve">
|
||||||
|
<value>Alias (remarks)</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label5.Name" xml:space="preserve">
|
||||||
|
<value>label5</value>
|
||||||
|
</data>
|
||||||
<data name=">>txtId.Name" xml:space="preserve">
|
<data name=">>txtId.Name" xml:space="preserve">
|
||||||
<value>txtId</value>
|
<value>txtId</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtId.Type" xml:space="preserve">
|
<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>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtId.Parent" xml:space="preserve">
|
<data name=">>txtRemarks.Type" 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>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</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 name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>12, 31</value>
|
<value>12, 31</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||||
<value>89, 12</value>
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>AddServer3Form</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 59</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</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=">>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=">>groupBox1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</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=">>panel1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 124</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.Name" xml:space="preserve">
|
||||||
|
<value>txtPort</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Items1" xml:space="preserve">
|
||||||
|
<value>aes-128-cfb</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 10</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 35</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.ZOrder" xml:space="preserve">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>235, 22</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.Text" xml:space="preserve">
|
||||||
|
<value>Edit or add a [Shadowsocks] server</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>&OK</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Items2" xml:space="preserve">
|
||||||
|
<value>chacha20</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbSecurity.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Name" xml:space="preserve">
|
||||||
|
<value>btnClose</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
||||||
<value>Server address</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>label1</value>
|
<value>12, 93</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Items3" xml:space="preserve">
|
||||||
|
<value>chacha20-ietf</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.Name" xml:space="preserve">
|
||||||
|
<value>panel2</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="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>1</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="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Name" xml:space="preserve">
|
||||||
|
<value>label13</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Items4" xml:space="preserve">
|
||||||
|
<value>aes-256-gcm</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>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
<data name=">>label1.Parent" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
<value>10</value>
|
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name=">>label3.Name" xml:space="preserve">
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<value>label3</value>
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>0, 35</value>
|
<value>Server port</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>
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
<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>
|
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>$this</value>
|
<value>0, 231</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>9</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="cmbSecurity.Items5" xml:space="preserve">
|
||||||
<value>Top</value>
|
<value>aes-128-gcm</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>label5.ZOrder" xml:space="preserve">
|
||||||
<value>0, 25</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
<value>547, 10</value>
|
<value>&Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>6</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>panel1</value>
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>Server address</value>
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>235, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
|
||||||
<value>Import URL from clipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>162, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>Import configuration file</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Name" xml:space="preserve">
|
<data name=">>menuServer.Name" xml:space="preserve">
|
||||||
<value>menuServer</value>
|
<value>menuServer</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Type" xml:space="preserve">
|
<data name=">>txtAddress.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>txtAddress</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Parent" xml:space="preserve">
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 154</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Items6" xml:space="preserve">
|
||||||
|
<value>chacha20-poly1305</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</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="label13.Text" xml:space="preserve">
|
||||||
|
<value>* Fill in manually</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
|
<value>label2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 291</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Items7" xml:space="preserve">
|
||||||
|
<value>chacha20-ietf-poly1305</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.Name" xml:space="preserve">
|
||||||
|
<value>btnOK</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbSecurity.Name" xml:space="preserve">
|
||||||
|
<value>cmbSecurity</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.Parent" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 196</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>337, 158</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
||||||
|
<value>*</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
|
<value>Import URL from clipboard</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Name" xml:space="preserve">
|
||||||
|
<value>txtRemarks</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 155</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>278, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
<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">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>6, 12</value>
|
<value>17, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 291</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit or add a [Shadowsocks] server</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>
|
|
||||||
</root>
|
</root>
|
||||||
@@ -120,39 +120,58 @@
|
|||||||
<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="label13.Text" xml:space="preserve">
|
<data name="label13.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="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</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="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
<data name="label5.Text" xml:space="preserve">
|
<data name="label5.Text" xml:space="preserve">
|
||||||
<value>加密方式</value>
|
<value>加密方式</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>密码</value>
|
<value>密码</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">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>服务器端口</value>
|
<value>服务器端口</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>服务器地址</value>
|
<value>服务器地址</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>确定(&O)</value>
|
<value>确定(&O)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>从剪贴板导入URL</value>
|
<value>92, 21</value>
|
||||||
</data>
|
|
||||||
<data name="menuItemScanScreen.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
<data name="MenuItem1.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="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>编辑或添加[Shadowsocks]服务器</value>
|
<value>编辑或添加[Shadowsocks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
12
v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs
generated
12
v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs
generated
@@ -55,14 +55,15 @@
|
|||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Controls.Add(this.txtSecurity);
|
this.groupBox1.Controls.Add(this.txtSecurity);
|
||||||
this.groupBox1.Controls.Add(this.label4);
|
this.groupBox1.Controls.Add(this.label4);
|
||||||
this.groupBox1.Controls.Add(this.txtId);
|
this.groupBox1.Controls.Add(this.txtId);
|
||||||
@@ -74,7 +75,6 @@
|
|||||||
this.groupBox1.Controls.Add(this.label2);
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
this.groupBox1.Controls.Add(this.txtAddress);
|
this.groupBox1.Controls.Add(this.txtAddress);
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -135,9 +135,9 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
@@ -154,22 +154,22 @@
|
|||||||
//
|
//
|
||||||
// menuServer
|
// menuServer
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.menuServer, "menuServer");
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.MenuItem1});
|
this.MenuItem1});
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Name = "menuServer";
|
this.menuServer.Name = "menuServer";
|
||||||
//
|
//
|
||||||
// MenuItem1
|
// MenuItem1
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
||||||
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.menuItemImportClipboard});
|
this.menuItemImportClipboard});
|
||||||
this.MenuItem1.Name = "MenuItem1";
|
this.MenuItem1.Name = "MenuItem1";
|
||||||
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
|
||||||
//
|
//
|
||||||
// menuItemImportClipboard
|
// menuItemImportClipboard
|
||||||
//
|
//
|
||||||
this.menuItemImportClipboard.Name = "menuItemImportClipboard";
|
|
||||||
resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard");
|
resources.ApplyResources(this.menuItemImportClipboard, "menuItemImportClipboard");
|
||||||
|
this.menuItemImportClipboard.Name = "menuItemImportClipboard";
|
||||||
this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click);
|
this.menuItemImportClipboard.Click += new System.EventHandler(this.menuItemImportClipboard_Click);
|
||||||
//
|
//
|
||||||
// AddServer4Form
|
// AddServer4Form
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ using v2rayN.Mode;
|
|||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class AddServer4Form : BaseForm
|
public partial class AddServer4Form : BaseServerForm
|
||||||
{
|
{
|
||||||
public int EditIndex { get; set; }
|
|
||||||
VmessItem vmessItem = null;
|
|
||||||
|
|
||||||
public AddServer4Form()
|
public AddServer4Form()
|
||||||
{
|
{
|
||||||
@@ -85,7 +83,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
@@ -110,11 +108,10 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
string msg;
|
VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg);
|
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.ShowWarning(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,471 +118,471 @@
|
|||||||
<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="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>396, 17</value>
|
<value>113, 12</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" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<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>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 84</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSecurity.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>26</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSecurity.Name" xml:space="preserve">
|
|
||||||
<value>txtSecurity</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSecurity.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=">>txtSecurity.Parent" xml:space="preserve">
|
|
||||||
<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>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 88</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>User(Optional)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.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=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 117</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>24</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>2</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, 121</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>113, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
<data name=">>label6.Name" xml:space="preserve">
|
||||||
<value>23</value>
|
<value>label6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name=">>txtSecurity.Parent" xml:space="preserve">
|
||||||
<value>Password(Optional)</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>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<value>3</value>
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
</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=">>groupBox1.Type" xml:space="preserve">
|
||||||
<value>337, 158</value>
|
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>panel2.Name" xml:space="preserve">
|
||||||
<value>113, 12</value>
|
<value>panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>22</value>
|
<value>547, 25</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>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>
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>11</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<value>txtRemarks</value>
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>Import configuration file</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
<data name=">>panel1.Name" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>panel1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>5</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>True</value>
|
<value>Password(Optional)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>label1.Type" xml:space="preserve">
|
||||||
<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>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
<data name=">>label6.Parent" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.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">
|
<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>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
<data name=">>menuItemImportClipboard.Name" xml:space="preserve">
|
||||||
<value>groupBox1</value>
|
<value>menuItemImportClipboard</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 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>
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>label3.Parent" xml:space="preserve">
|
||||||
<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>
|
<value>groupBox1</value>
|
||||||
</data>
|
</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 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, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</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=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>235, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
|
||||||
<value>Import URL from clipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>162, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>Import configuration file</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>8</value>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Name" xml:space="preserve">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>menuServer</value>
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 27</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServer.Type" xml:space="preserve">
|
<data name=">>menuServer.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>Edit or add a [Socks] server</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>24</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
||||||
|
<value>Import URL from clipboard</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>303, 17</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="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>MenuItem1.Name" xml:space="preserve">
|
||||||
|
<value>MenuItem1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>359, 21</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="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>396, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.Name" xml:space="preserve">
|
||||||
|
<value>label1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 25</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>22</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>162, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 120</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtSecurity.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>26</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.Name" xml:space="preserve">
|
||||||
|
<value>menuServer</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</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="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.Name" xml:space="preserve">
|
||||||
|
<value>txtId</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>235, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 93</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=">>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="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 31</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>AddServer4Form</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.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=">>txtPort.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 58</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</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=">>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=">>groupBox1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</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=">>panel1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.Name" xml:space="preserve">
|
||||||
|
<value>txtPort</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 10</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
||||||
|
<value>*</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtSecurity.Name" xml:space="preserve">
|
||||||
|
<value>txtSecurity</value>
|
||||||
|
</data>
|
||||||
<data name=">>menuServer.Parent" xml:space="preserve">
|
<data name=">>menuServer.Parent" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</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=">>label4.Name" xml:space="preserve">
|
||||||
|
<value>label4</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>&OK</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Name" xml:space="preserve">
|
||||||
|
<value>btnClose</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>278, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 124</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.Name" xml:space="preserve">
|
||||||
|
<value>btnOK</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>1</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="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Name" xml:space="preserve">
|
||||||
|
<value>label13</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=">>txtSecurity.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.Type" xml:space="preserve">
|
||||||
|
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.Name" xml:space="preserve">
|
||||||
|
<value>label3</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Server port</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.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 231</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
||||||
|
<value>9</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>&Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>Server address</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>25</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Name" xml:space="preserve">
|
||||||
|
<value>txtAddress</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 151</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</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="label6.Text" xml:space="preserve">
|
||||||
|
<value>Alias (remarks)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>* Fill in manually</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
|
<value>label2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 291</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 196</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtSecurity.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 89</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>337, 155</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 35</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Name" xml:space="preserve">
|
||||||
|
<value>txtRemarks</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 155</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>User(Optional)</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>278, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>6, 12</value>
|
<value>17, 17</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 291</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit or add a [Socks] server</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>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>
|
|
||||||
</root>
|
</root>
|
||||||
@@ -124,11 +124,8 @@
|
|||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="txtSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>127, 85</value>
|
<value>194, 21</value>
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 89</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>77, 12</value>
|
<value>77, 12</value>
|
||||||
@@ -136,11 +133,8 @@
|
|||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="label4.Text" xml:space="preserve">
|
||||||
<value>用户名(可选)</value>
|
<value>用户名(可选)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>127, 115</value>
|
<value>194, 21</value>
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 119</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>65, 12</value>
|
||||||
|
|||||||
513
v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs
generated
Normal file
513
v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs
generated
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class AddServer5Form
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer5Form));
|
||||||
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.cmbFlow = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.btnGUID = new System.Windows.Forms.Button();
|
||||||
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label24 = new System.Windows.Forms.Label();
|
||||||
|
this.label23 = new System.Windows.Forms.Label();
|
||||||
|
this.panTlsMore = new System.Windows.Forms.Panel();
|
||||||
|
this.label21 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbAllowInsecure = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
|
this.label20 = new System.Windows.Forms.Label();
|
||||||
|
this.txtPath = new System.Windows.Forms.TextBox();
|
||||||
|
this.cmbNetwork = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
|
this.label19 = new System.Windows.Forms.Label();
|
||||||
|
this.label18 = new System.Windows.Forms.Label();
|
||||||
|
this.label17 = new System.Windows.Forms.Label();
|
||||||
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
|
this.label14 = new System.Windows.Forms.Label();
|
||||||
|
this.label15 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbStreamSecurity = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
|
this.txtRequestHost = new System.Windows.Forms.TextBox();
|
||||||
|
this.label11 = new System.Windows.Forms.Label();
|
||||||
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbHeaderType = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
||||||
|
this.txtRemarks = new System.Windows.Forms.TextBox();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.txtId = new System.Windows.Forms.TextBox();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.txtPort = new System.Windows.Forms.TextBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.txtAddress = new System.Windows.Forms.TextBox();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.menuServer = new System.Windows.Forms.MenuStrip();
|
||||||
|
this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.MenuItemImportClient = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.MenuItemImportServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.MenuItemImportClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.groupBox1.SuspendLayout();
|
||||||
|
this.groupBox2.SuspendLayout();
|
||||||
|
this.panTlsMore.SuspendLayout();
|
||||||
|
this.panel2.SuspendLayout();
|
||||||
|
this.menuServer.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// btnClose
|
||||||
|
//
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.Name = "btnClose";
|
||||||
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
this.groupBox1.Controls.Add(this.cmbFlow);
|
||||||
|
this.groupBox1.Controls.Add(this.label4);
|
||||||
|
this.groupBox1.Controls.Add(this.btnGUID);
|
||||||
|
this.groupBox1.Controls.Add(this.label13);
|
||||||
|
this.groupBox1.Controls.Add(this.groupBox2);
|
||||||
|
this.groupBox1.Controls.Add(this.label8);
|
||||||
|
this.groupBox1.Controls.Add(this.cmbSecurity);
|
||||||
|
this.groupBox1.Controls.Add(this.txtRemarks);
|
||||||
|
this.groupBox1.Controls.Add(this.label6);
|
||||||
|
this.groupBox1.Controls.Add(this.label5);
|
||||||
|
this.groupBox1.Controls.Add(this.txtId);
|
||||||
|
this.groupBox1.Controls.Add(this.label3);
|
||||||
|
this.groupBox1.Controls.Add(this.txtPort);
|
||||||
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
|
this.groupBox1.Controls.Add(this.txtAddress);
|
||||||
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Name = "groupBox1";
|
||||||
|
this.groupBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// cmbFlow
|
||||||
|
//
|
||||||
|
this.cmbFlow.FormattingEnabled = true;
|
||||||
|
this.cmbFlow.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbFlow.Items"),
|
||||||
|
resources.GetString("cmbFlow.Items1"),
|
||||||
|
resources.GetString("cmbFlow.Items2"),
|
||||||
|
resources.GetString("cmbFlow.Items3"),
|
||||||
|
resources.GetString("cmbFlow.Items4")});
|
||||||
|
resources.ApplyResources(this.cmbFlow, "cmbFlow");
|
||||||
|
this.cmbFlow.Name = "cmbFlow";
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label4, "label4");
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
//
|
||||||
|
// btnGUID
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnGUID, "btnGUID");
|
||||||
|
this.btnGUID.Name = "btnGUID";
|
||||||
|
this.btnGUID.UseVisualStyleBackColor = true;
|
||||||
|
this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click);
|
||||||
|
//
|
||||||
|
// label13
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label13, "label13");
|
||||||
|
this.label13.Name = "label13";
|
||||||
|
//
|
||||||
|
// groupBox2
|
||||||
|
//
|
||||||
|
this.groupBox2.Controls.Add(this.label24);
|
||||||
|
this.groupBox2.Controls.Add(this.label23);
|
||||||
|
this.groupBox2.Controls.Add(this.panTlsMore);
|
||||||
|
this.groupBox2.Controls.Add(this.label9);
|
||||||
|
this.groupBox2.Controls.Add(this.label20);
|
||||||
|
this.groupBox2.Controls.Add(this.txtPath);
|
||||||
|
this.groupBox2.Controls.Add(this.cmbNetwork);
|
||||||
|
this.groupBox2.Controls.Add(this.label7);
|
||||||
|
this.groupBox2.Controls.Add(this.label19);
|
||||||
|
this.groupBox2.Controls.Add(this.label18);
|
||||||
|
this.groupBox2.Controls.Add(this.label17);
|
||||||
|
this.groupBox2.Controls.Add(this.label16);
|
||||||
|
this.groupBox2.Controls.Add(this.label14);
|
||||||
|
this.groupBox2.Controls.Add(this.label15);
|
||||||
|
this.groupBox2.Controls.Add(this.cmbStreamSecurity);
|
||||||
|
this.groupBox2.Controls.Add(this.label12);
|
||||||
|
this.groupBox2.Controls.Add(this.txtRequestHost);
|
||||||
|
this.groupBox2.Controls.Add(this.label11);
|
||||||
|
this.groupBox2.Controls.Add(this.label10);
|
||||||
|
this.groupBox2.Controls.Add(this.cmbHeaderType);
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
|
this.groupBox2.Name = "groupBox2";
|
||||||
|
this.groupBox2.TabStop = false;
|
||||||
|
//
|
||||||
|
// label24
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label24, "label24");
|
||||||
|
this.label24.Name = "label24";
|
||||||
|
//
|
||||||
|
// label23
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label23, "label23");
|
||||||
|
this.label23.Name = "label23";
|
||||||
|
//
|
||||||
|
// panTlsMore
|
||||||
|
//
|
||||||
|
this.panTlsMore.Controls.Add(this.label21);
|
||||||
|
this.panTlsMore.Controls.Add(this.cmbAllowInsecure);
|
||||||
|
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
||||||
|
this.panTlsMore.Name = "panTlsMore";
|
||||||
|
//
|
||||||
|
// label21
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label21, "label21");
|
||||||
|
this.label21.Name = "label21";
|
||||||
|
//
|
||||||
|
// cmbAllowInsecure
|
||||||
|
//
|
||||||
|
this.cmbAllowInsecure.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbAllowInsecure.FormattingEnabled = true;
|
||||||
|
this.cmbAllowInsecure.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbAllowInsecure.Items"),
|
||||||
|
resources.GetString("cmbAllowInsecure.Items1"),
|
||||||
|
resources.GetString("cmbAllowInsecure.Items2")});
|
||||||
|
resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure");
|
||||||
|
this.cmbAllowInsecure.Name = "cmbAllowInsecure";
|
||||||
|
//
|
||||||
|
// label9
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label9, "label9");
|
||||||
|
this.label9.Name = "label9";
|
||||||
|
//
|
||||||
|
// label20
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label20, "label20");
|
||||||
|
this.label20.Name = "label20";
|
||||||
|
//
|
||||||
|
// txtPath
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtPath, "txtPath");
|
||||||
|
this.txtPath.Name = "txtPath";
|
||||||
|
//
|
||||||
|
// cmbNetwork
|
||||||
|
//
|
||||||
|
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbNetwork.FormattingEnabled = true;
|
||||||
|
this.cmbNetwork.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbNetwork.Items"),
|
||||||
|
resources.GetString("cmbNetwork.Items1"),
|
||||||
|
resources.GetString("cmbNetwork.Items2"),
|
||||||
|
resources.GetString("cmbNetwork.Items3"),
|
||||||
|
resources.GetString("cmbNetwork.Items4")});
|
||||||
|
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
||||||
|
this.cmbNetwork.Name = "cmbNetwork";
|
||||||
|
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// label7
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label7, "label7");
|
||||||
|
this.label7.Name = "label7";
|
||||||
|
//
|
||||||
|
// label19
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label19, "label19");
|
||||||
|
this.label19.Name = "label19";
|
||||||
|
//
|
||||||
|
// label18
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label18, "label18");
|
||||||
|
this.label18.Name = "label18";
|
||||||
|
//
|
||||||
|
// label17
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label17, "label17");
|
||||||
|
this.label17.Name = "label17";
|
||||||
|
//
|
||||||
|
// label16
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label16, "label16");
|
||||||
|
this.label16.Name = "label16";
|
||||||
|
//
|
||||||
|
// label14
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label14, "label14");
|
||||||
|
this.label14.Name = "label14";
|
||||||
|
//
|
||||||
|
// label15
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label15, "label15");
|
||||||
|
this.label15.Name = "label15";
|
||||||
|
//
|
||||||
|
// cmbStreamSecurity
|
||||||
|
//
|
||||||
|
this.cmbStreamSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbStreamSecurity.FormattingEnabled = true;
|
||||||
|
this.cmbStreamSecurity.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbStreamSecurity.Items"),
|
||||||
|
resources.GetString("cmbStreamSecurity.Items1"),
|
||||||
|
resources.GetString("cmbStreamSecurity.Items2")});
|
||||||
|
resources.ApplyResources(this.cmbStreamSecurity, "cmbStreamSecurity");
|
||||||
|
this.cmbStreamSecurity.Name = "cmbStreamSecurity";
|
||||||
|
this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// label12
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label12, "label12");
|
||||||
|
this.label12.Name = "label12";
|
||||||
|
//
|
||||||
|
// txtRequestHost
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtRequestHost, "txtRequestHost");
|
||||||
|
this.txtRequestHost.Name = "txtRequestHost";
|
||||||
|
//
|
||||||
|
// label11
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label11, "label11");
|
||||||
|
this.label11.Name = "label11";
|
||||||
|
//
|
||||||
|
// label10
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label10, "label10");
|
||||||
|
this.label10.Name = "label10";
|
||||||
|
//
|
||||||
|
// cmbHeaderType
|
||||||
|
//
|
||||||
|
this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbHeaderType.FormattingEnabled = true;
|
||||||
|
this.cmbHeaderType.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbHeaderType.Items"),
|
||||||
|
resources.GetString("cmbHeaderType.Items1"),
|
||||||
|
resources.GetString("cmbHeaderType.Items2"),
|
||||||
|
resources.GetString("cmbHeaderType.Items3"),
|
||||||
|
resources.GetString("cmbHeaderType.Items4"),
|
||||||
|
resources.GetString("cmbHeaderType.Items5"),
|
||||||
|
resources.GetString("cmbHeaderType.Items6")});
|
||||||
|
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
||||||
|
this.cmbHeaderType.Name = "cmbHeaderType";
|
||||||
|
//
|
||||||
|
// label8
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label8, "label8");
|
||||||
|
this.label8.Name = "label8";
|
||||||
|
//
|
||||||
|
// cmbSecurity
|
||||||
|
//
|
||||||
|
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple;
|
||||||
|
this.cmbSecurity.FormattingEnabled = true;
|
||||||
|
this.cmbSecurity.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbSecurity.Items")});
|
||||||
|
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
||||||
|
this.cmbSecurity.Name = "cmbSecurity";
|
||||||
|
//
|
||||||
|
// txtRemarks
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
||||||
|
this.txtRemarks.Name = "txtRemarks";
|
||||||
|
//
|
||||||
|
// label6
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label6, "label6");
|
||||||
|
this.label6.Name = "label6";
|
||||||
|
//
|
||||||
|
// label5
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label5, "label5");
|
||||||
|
this.label5.Name = "label5";
|
||||||
|
//
|
||||||
|
// txtId
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId, "txtId");
|
||||||
|
this.txtId.Name = "txtId";
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
|
// txtPort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtPort, "txtPort");
|
||||||
|
this.txtPort.Name = "txtPort";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label2, "label2");
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
//
|
||||||
|
// txtAddress
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtAddress, "txtAddress");
|
||||||
|
this.txtAddress.Name = "txtAddress";
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label1, "label1");
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
//
|
||||||
|
// btnOK
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnOK, "btnOK");
|
||||||
|
this.btnOK.Name = "btnOK";
|
||||||
|
this.btnOK.UseVisualStyleBackColor = true;
|
||||||
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
//
|
||||||
|
// menuServer
|
||||||
|
//
|
||||||
|
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.MenuItem1});
|
||||||
|
resources.ApplyResources(this.menuServer, "menuServer");
|
||||||
|
this.menuServer.Name = "menuServer";
|
||||||
|
//
|
||||||
|
// MenuItem1
|
||||||
|
//
|
||||||
|
this.MenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.MenuItemImportClient,
|
||||||
|
this.MenuItemImportServer,
|
||||||
|
this.toolStripSeparator1,
|
||||||
|
this.MenuItemImportClipboard});
|
||||||
|
this.MenuItem1.Name = "MenuItem1";
|
||||||
|
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
||||||
|
//
|
||||||
|
// MenuItemImportClient
|
||||||
|
//
|
||||||
|
this.MenuItemImportClient.Name = "MenuItemImportClient";
|
||||||
|
resources.ApplyResources(this.MenuItemImportClient, "MenuItemImportClient");
|
||||||
|
this.MenuItemImportClient.Click += new System.EventHandler(this.MenuItemImportClient_Click);
|
||||||
|
//
|
||||||
|
// MenuItemImportServer
|
||||||
|
//
|
||||||
|
this.MenuItemImportServer.Name = "MenuItemImportServer";
|
||||||
|
resources.ApplyResources(this.MenuItemImportServer, "MenuItemImportServer");
|
||||||
|
this.MenuItemImportServer.Click += new System.EventHandler(this.MenuItemImportServer_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||||
|
//
|
||||||
|
// MenuItemImportClipboard
|
||||||
|
//
|
||||||
|
this.MenuItemImportClipboard.Name = "MenuItemImportClipboard";
|
||||||
|
resources.ApplyResources(this.MenuItemImportClipboard, "MenuItemImportClipboard");
|
||||||
|
this.MenuItemImportClipboard.Click += new System.EventHandler(this.MenuItemImportClipboard_Click);
|
||||||
|
//
|
||||||
|
// AddServer5Form
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this, "$this");
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.CancelButton = this.btnClose;
|
||||||
|
this.Controls.Add(this.groupBox1);
|
||||||
|
this.Controls.Add(this.panel2);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Controls.Add(this.menuServer);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
|
this.Name = "AddServer5Form";
|
||||||
|
this.Load += new System.EventHandler(this.AddServer5Form_Load);
|
||||||
|
this.groupBox1.ResumeLayout(false);
|
||||||
|
this.groupBox1.PerformLayout();
|
||||||
|
this.groupBox2.ResumeLayout(false);
|
||||||
|
this.groupBox2.PerformLayout();
|
||||||
|
this.panTlsMore.ResumeLayout(false);
|
||||||
|
this.panTlsMore.PerformLayout();
|
||||||
|
this.panel2.ResumeLayout(false);
|
||||||
|
this.menuServer.ResumeLayout(false);
|
||||||
|
this.menuServer.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
|
private System.Windows.Forms.Button btnClose;
|
||||||
|
private System.Windows.Forms.Button btnOK;
|
||||||
|
private System.Windows.Forms.TextBox txtRemarks;
|
||||||
|
private System.Windows.Forms.Label label6;
|
||||||
|
private System.Windows.Forms.Label label5;
|
||||||
|
private System.Windows.Forms.TextBox txtId;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.TextBox txtPort;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.TextBox txtAddress;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.ComboBox cmbSecurity;
|
||||||
|
private System.Windows.Forms.ComboBox cmbNetwork;
|
||||||
|
private System.Windows.Forms.Label label7;
|
||||||
|
private System.Windows.Forms.Label label9;
|
||||||
|
private System.Windows.Forms.Label label8;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Panel panel2;
|
||||||
|
private System.Windows.Forms.TextBox txtRequestHost;
|
||||||
|
private System.Windows.Forms.Label label10;
|
||||||
|
private System.Windows.Forms.Label label11;
|
||||||
|
private System.Windows.Forms.ComboBox cmbHeaderType;
|
||||||
|
private System.Windows.Forms.Label label12;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox2;
|
||||||
|
private System.Windows.Forms.Label label13;
|
||||||
|
private System.Windows.Forms.MenuStrip menuServer;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem MenuItem1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem MenuItemImportClient;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem MenuItemImportServer;
|
||||||
|
private System.Windows.Forms.Label label15;
|
||||||
|
private System.Windows.Forms.ComboBox cmbStreamSecurity;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem MenuItemImportClipboard;
|
||||||
|
private System.Windows.Forms.Button btnGUID;
|
||||||
|
private System.Windows.Forms.Label label16;
|
||||||
|
private System.Windows.Forms.Label label14;
|
||||||
|
private System.Windows.Forms.Label label17;
|
||||||
|
private System.Windows.Forms.Label label18;
|
||||||
|
private System.Windows.Forms.Label label19;
|
||||||
|
private System.Windows.Forms.TextBox txtPath;
|
||||||
|
private System.Windows.Forms.Label label20;
|
||||||
|
private System.Windows.Forms.Label label21;
|
||||||
|
private System.Windows.Forms.ComboBox cmbAllowInsecure;
|
||||||
|
private System.Windows.Forms.Panel panTlsMore;
|
||||||
|
private System.Windows.Forms.Label label24;
|
||||||
|
private System.Windows.Forms.Label label23;
|
||||||
|
private System.Windows.Forms.ComboBox cmbFlow;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
}
|
||||||
|
}
|
||||||
286
v2rayN/v2rayN/Forms/AddServer5Form.cs
Normal file
286
v2rayN/v2rayN/Forms/AddServer5Form.cs
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class AddServer5Form : BaseServerForm
|
||||||
|
{
|
||||||
|
|
||||||
|
public AddServer5Form()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddServer5Form_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (EditIndex >= 0)
|
||||||
|
{
|
||||||
|
vmessItem = config.vmess[EditIndex];
|
||||||
|
BindingServer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem = new VmessItem();
|
||||||
|
ClearServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 绑定数据
|
||||||
|
/// </summary>
|
||||||
|
private void BindingServer()
|
||||||
|
{
|
||||||
|
txtAddress.Text = vmessItem.address;
|
||||||
|
txtPort.Text = vmessItem.port.ToString();
|
||||||
|
txtId.Text = vmessItem.id;
|
||||||
|
cmbFlow.Text = vmessItem.flow;
|
||||||
|
cmbSecurity.Text = vmessItem.security;
|
||||||
|
cmbNetwork.Text = vmessItem.network;
|
||||||
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
|
|
||||||
|
cmbHeaderType.Text = vmessItem.headerType;
|
||||||
|
txtRequestHost.Text = vmessItem.requestHost;
|
||||||
|
txtPath.Text = vmessItem.path;
|
||||||
|
cmbStreamSecurity.Text = vmessItem.streamSecurity;
|
||||||
|
cmbAllowInsecure.Text = vmessItem.allowInsecure;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清除设置
|
||||||
|
/// </summary>
|
||||||
|
private void ClearServer()
|
||||||
|
{
|
||||||
|
txtAddress.Text = "";
|
||||||
|
txtPort.Text = "";
|
||||||
|
txtId.Text = "";
|
||||||
|
cmbFlow.Text = "";
|
||||||
|
cmbSecurity.Text = Global.None;
|
||||||
|
cmbNetwork.Text = Global.DefaultNetwork;
|
||||||
|
txtRemarks.Text = "";
|
||||||
|
|
||||||
|
cmbHeaderType.Text = Global.None;
|
||||||
|
txtRequestHost.Text = "";
|
||||||
|
cmbStreamSecurity.Text = "";
|
||||||
|
cmbAllowInsecure.Text = "";
|
||||||
|
txtPath.Text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SetHeaderType();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置伪装选项
|
||||||
|
/// </summary>
|
||||||
|
private void SetHeaderType()
|
||||||
|
{
|
||||||
|
cmbHeaderType.Items.Clear();
|
||||||
|
|
||||||
|
string network = cmbNetwork.Text;
|
||||||
|
if (Utils.IsNullOrEmpty(network))
|
||||||
|
{
|
||||||
|
cmbHeaderType.Items.Add(Global.None);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmbHeaderType.Items.Add(Global.None);
|
||||||
|
if (network.Equals(Global.DefaultNetwork))
|
||||||
|
{
|
||||||
|
cmbHeaderType.Items.Add(Global.TcpHeaderHttp);
|
||||||
|
}
|
||||||
|
else if (network.Equals("kcp") || network.Equals("quic"))
|
||||||
|
{
|
||||||
|
cmbHeaderType.Items.Add("srtp");
|
||||||
|
cmbHeaderType.Items.Add("utp");
|
||||||
|
cmbHeaderType.Items.Add("wechat-video");
|
||||||
|
cmbHeaderType.Items.Add("dtls");
|
||||||
|
cmbHeaderType.Items.Add("wireguard");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
cmbHeaderType.Text = Global.None;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string address = txtAddress.Text;
|
||||||
|
string port = txtPort.Text;
|
||||||
|
string id = txtId.Text;
|
||||||
|
string flow = cmbFlow.Text;
|
||||||
|
string security = cmbSecurity.Text;
|
||||||
|
string network = cmbNetwork.Text;
|
||||||
|
string remarks = txtRemarks.Text;
|
||||||
|
|
||||||
|
string headerType = cmbHeaderType.Text;
|
||||||
|
string requestHost = txtRequestHost.Text;
|
||||||
|
string path = txtPath.Text;
|
||||||
|
string streamSecurity = cmbStreamSecurity.Text;
|
||||||
|
string allowInsecure = cmbAllowInsecure.Text;
|
||||||
|
|
||||||
|
if (Utils.IsNullOrEmpty(address))
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("FillServerAddress"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port))
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("FillCorrectServerPort"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(id))
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("FillUUID"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vmessItem.address = address;
|
||||||
|
vmessItem.port = Utils.ToInt(port);
|
||||||
|
vmessItem.id = id;
|
||||||
|
vmessItem.flow = flow;
|
||||||
|
vmessItem.security = security;
|
||||||
|
vmessItem.network = network;
|
||||||
|
vmessItem.remarks = remarks;
|
||||||
|
|
||||||
|
vmessItem.headerType = headerType;
|
||||||
|
vmessItem.requestHost = requestHost.Replace(" ", "");
|
||||||
|
vmessItem.path = path.Replace(" ", "");
|
||||||
|
vmessItem.streamSecurity = streamSecurity;
|
||||||
|
vmessItem.allowInsecure = allowInsecure;
|
||||||
|
|
||||||
|
if (ConfigHandler.AddVlessServer(ref config, vmessItem, EditIndex) == 0)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnGUID_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
txtId.Text = Utils.GetGUID();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.Cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cmbStreamSecurity_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string security = cmbStreamSecurity.Text;
|
||||||
|
if (Utils.IsNullOrEmpty(security))
|
||||||
|
{
|
||||||
|
panTlsMore.Hide();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
panTlsMore.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 导入客户端/服务端配置
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入客户端
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void MenuItemImportClient_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MenuItemImport(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入服务端
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void MenuItemImportServer_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MenuItemImport(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MenuItemImport(int type)
|
||||||
|
{
|
||||||
|
ClearServer();
|
||||||
|
|
||||||
|
OpenFileDialog fileDialog = new OpenFileDialog
|
||||||
|
{
|
||||||
|
Multiselect = false,
|
||||||
|
Filter = "Config|*.json|All|*.*"
|
||||||
|
};
|
||||||
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string fileName = fileDialog.FileName;
|
||||||
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string msg;
|
||||||
|
VmessItem vmessItem;
|
||||||
|
if (type.Equals(1))
|
||||||
|
{
|
||||||
|
vmessItem = V2rayConfigHandler.ImportFromClientConfig(fileName, out msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem = V2rayConfigHandler.ImportFromServerConfig(fileName, out msg);
|
||||||
|
}
|
||||||
|
if (vmessItem == null)
|
||||||
|
{
|
||||||
|
UI.ShowWarning(msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
txtAddress.Text = vmessItem.address;
|
||||||
|
txtPort.Text = vmessItem.port.ToString();
|
||||||
|
txtId.Text = vmessItem.id;
|
||||||
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
|
cmbNetwork.Text = vmessItem.network;
|
||||||
|
cmbHeaderType.Text = vmessItem.headerType;
|
||||||
|
txtRequestHost.Text = vmessItem.requestHost;
|
||||||
|
txtPath.Text = vmessItem.path;
|
||||||
|
cmbStreamSecurity.Text = vmessItem.streamSecurity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 从剪贴板导入URL
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void MenuItemImportClipboard_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ClearServer();
|
||||||
|
|
||||||
|
VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
|
if (vmessItem == null)
|
||||||
|
{
|
||||||
|
UI.ShowWarning(msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
txtAddress.Text = vmessItem.address;
|
||||||
|
txtPort.Text = vmessItem.port.ToString();
|
||||||
|
txtId.Text = vmessItem.id;
|
||||||
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
|
cmbNetwork.Text = vmessItem.network;
|
||||||
|
cmbHeaderType.Text = vmessItem.headerType;
|
||||||
|
txtRequestHost.Text = vmessItem.requestHost;
|
||||||
|
txtPath.Text = vmessItem.path;
|
||||||
|
cmbStreamSecurity.Text = vmessItem.streamSecurity;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
1386
v2rayN/v2rayN/Forms/AddServer5Form.resx
Normal file
1386
v2rayN/v2rayN/Forms/AddServer5Form.resx
Normal file
File diff suppressed because it is too large
Load Diff
344
v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx
Normal file
344
v2rayN/v2rayN/Forms/AddServer5Form.zh-Hans.resx
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>取消(&C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>服务器</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="cmbFlow.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>220, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>流控(flow)</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnGUID.Text" xml:space="preserve">
|
||||||
|
<value>生成(&G)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>*手填,方便识别管理</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
|
<value>底层传输方式(transport)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>149, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label24.Text" xml:space="preserve">
|
||||||
|
<value>3)QUIC 加密密钥/Kcp seed</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="label21.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>167, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label21.Text" xml:space="preserve">
|
||||||
|
<value>跳过证书验证(allowInsecure)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>223, 7</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>353, 36</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="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="txtPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 168</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 32</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>220, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 36</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="label19.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 168</value>
|
||||||
|
</data>
|
||||||
|
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label19.Text" xml:space="preserve">
|
||||||
|
<value>路径(path)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>161, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label14.Text" xml:space="preserve">
|
||||||
|
<value>1)http host中间逗号(,)隔开</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 241</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>107, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Text" xml:space="preserve">
|
||||||
|
<value>底层传输安全(tls)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 237</value>
|
||||||
|
</data>
|
||||||
|
<data name="label12.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>282, 71</value>
|
||||||
|
</data>
|
||||||
|
<data name="label12.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>127, 102</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>334, 51</value>
|
||||||
|
</data>
|
||||||
|
<data name="label11.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 71</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.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 102</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="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 67</value>
|
||||||
|
</data>
|
||||||
|
<data name="label8.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>353, 158</value>
|
||||||
|
</data>
|
||||||
|
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label8.Text" xml:space="preserve">
|
||||||
|
<value>*非空(none)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>220, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>220, 21</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>101, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>加密(encryption)</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="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>端口(port)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>83, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>地址(address)</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="MenuItem1.Enabled" type="System.Boolean, mscorlib">
|
||||||
|
<value>False</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>92, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>导入配置文件</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItemImportClient.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>171, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItemImportClient.Text" xml:space="preserve">
|
||||||
|
<value>导入客户端配置</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItemImportServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>171, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItemImportServer.Text" xml:space="preserve">
|
||||||
|
<value>导入服务端配置</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>168, 6</value>
|
||||||
|
</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="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑或添加[VLESS]服务器</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
189
v2rayN/v2rayN/Forms/AddServer6Form.Designer.cs
generated
Normal file
189
v2rayN/v2rayN/Forms/AddServer6Form.Designer.cs
generated
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class AddServer6Form
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer6Form));
|
||||||
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.txtRequestHost = new System.Windows.Forms.TextBox();
|
||||||
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
|
this.txtRemarks = new System.Windows.Forms.TextBox();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
|
this.txtId = new System.Windows.Forms.TextBox();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.txtPort = new System.Windows.Forms.TextBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.txtAddress = new System.Windows.Forms.TextBox();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.groupBox1.SuspendLayout();
|
||||||
|
this.panel2.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// btnClose
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.btnClose.Name = "btnClose";
|
||||||
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Controls.Add(this.label4);
|
||||||
|
this.groupBox1.Controls.Add(this.txtRequestHost);
|
||||||
|
this.groupBox1.Controls.Add(this.label13);
|
||||||
|
this.groupBox1.Controls.Add(this.txtRemarks);
|
||||||
|
this.groupBox1.Controls.Add(this.label6);
|
||||||
|
this.groupBox1.Controls.Add(this.txtId);
|
||||||
|
this.groupBox1.Controls.Add(this.label3);
|
||||||
|
this.groupBox1.Controls.Add(this.txtPort);
|
||||||
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
|
this.groupBox1.Controls.Add(this.txtAddress);
|
||||||
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
|
this.groupBox1.Name = "groupBox1";
|
||||||
|
this.groupBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label4, "label4");
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
//
|
||||||
|
// txtRequestHost
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtRequestHost, "txtRequestHost");
|
||||||
|
this.txtRequestHost.Name = "txtRequestHost";
|
||||||
|
//
|
||||||
|
// label13
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label13, "label13");
|
||||||
|
this.label13.Name = "label13";
|
||||||
|
//
|
||||||
|
// txtRemarks
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
||||||
|
this.txtRemarks.Name = "txtRemarks";
|
||||||
|
//
|
||||||
|
// label6
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label6, "label6");
|
||||||
|
this.label6.Name = "label6";
|
||||||
|
//
|
||||||
|
// txtId
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId, "txtId");
|
||||||
|
this.txtId.Name = "txtId";
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
|
// txtPort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtPort, "txtPort");
|
||||||
|
this.txtPort.Name = "txtPort";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label2, "label2");
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
//
|
||||||
|
// txtAddress
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtAddress, "txtAddress");
|
||||||
|
this.txtAddress.Name = "txtAddress";
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label1, "label1");
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
//
|
||||||
|
// btnOK
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnOK, "btnOK");
|
||||||
|
this.btnOK.Name = "btnOK";
|
||||||
|
this.btnOK.UseVisualStyleBackColor = true;
|
||||||
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
//
|
||||||
|
// AddServer6Form
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this, "$this");
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.CancelButton = this.btnClose;
|
||||||
|
this.Controls.Add(this.groupBox1);
|
||||||
|
this.Controls.Add(this.panel2);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
|
this.MinimizeBox = true;
|
||||||
|
this.Name = "AddServer6Form";
|
||||||
|
this.Load += new System.EventHandler(this.AddServer6Form_Load);
|
||||||
|
this.groupBox1.ResumeLayout(false);
|
||||||
|
this.groupBox1.PerformLayout();
|
||||||
|
this.panel2.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
|
private System.Windows.Forms.Button btnClose;
|
||||||
|
private System.Windows.Forms.Button btnOK;
|
||||||
|
private System.Windows.Forms.TextBox txtRemarks;
|
||||||
|
private System.Windows.Forms.Label label6;
|
||||||
|
private System.Windows.Forms.TextBox txtId;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.TextBox txtPort;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.TextBox txtAddress;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Panel panel2;
|
||||||
|
private System.Windows.Forms.Label label13;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.TextBox txtRequestHost;
|
||||||
|
}
|
||||||
|
}
|
||||||
100
v2rayN/v2rayN/Forms/AddServer6Form.cs
Normal file
100
v2rayN/v2rayN/Forms/AddServer6Form.cs
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class AddServer6Form : BaseServerForm
|
||||||
|
{
|
||||||
|
public AddServer6Form()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddServer6Form_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (EditIndex >= 0)
|
||||||
|
{
|
||||||
|
vmessItem = config.vmess[EditIndex];
|
||||||
|
BindingServer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem = new VmessItem();
|
||||||
|
ClearServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 绑定数据
|
||||||
|
/// </summary>
|
||||||
|
private void BindingServer()
|
||||||
|
{
|
||||||
|
|
||||||
|
txtAddress.Text = vmessItem.address;
|
||||||
|
txtPort.Text = vmessItem.port.ToString();
|
||||||
|
txtId.Text = vmessItem.id;
|
||||||
|
txtRequestHost.Text = vmessItem.requestHost;
|
||||||
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清除设置
|
||||||
|
/// </summary>
|
||||||
|
private void ClearServer()
|
||||||
|
{
|
||||||
|
txtAddress.Text = "";
|
||||||
|
txtPort.Text = "";
|
||||||
|
txtId.Text = "";
|
||||||
|
txtRequestHost.Text = "";
|
||||||
|
txtRemarks.Text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string address = txtAddress.Text;
|
||||||
|
string port = txtPort.Text;
|
||||||
|
string id = txtId.Text;
|
||||||
|
string requestHost = txtRequestHost.Text;
|
||||||
|
string remarks = txtRemarks.Text;
|
||||||
|
|
||||||
|
if (Utils.IsNullOrEmpty(address))
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("FillServerAddress"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port))
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("FillCorrectServerPort"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(id))
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("FillPassword"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vmessItem.address = address;
|
||||||
|
vmessItem.port = Utils.ToInt(port);
|
||||||
|
vmessItem.id = id;
|
||||||
|
vmessItem.requestHost = requestHost.Replace(" ", "");
|
||||||
|
vmessItem.remarks = remarks;
|
||||||
|
|
||||||
|
if (ConfigHandler.AddTrojanServer(ref config, vmessItem, EditIndex) == 0)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.Cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
537
v2rayN/v2rayN/Forms/AddServer6Form.resx
Normal file
537
v2rayN/v2rayN/Forms/AddServer6Form.resx
Normal file
@@ -0,0 +1,537 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name=">>txtPort.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>Server address</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>3</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" />
|
||||||
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.Name" xml:space="preserve">
|
||||||
|
<value>txtPort</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Text" xml:space="preserve">
|
||||||
|
<value>Alias (remarks)</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>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 21</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>AddServer6Form</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.Name" xml:space="preserve">
|
||||||
|
<value>label1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>359, 21</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=">>txtRequestHost.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=">>btnClose.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 155</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 123</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>194, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>396, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.Name" xml:space="preserve">
|
||||||
|
<value>label3</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 154</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</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="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 93</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>Server</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</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=">>txtRequestHost.Name" xml:space="preserve">
|
||||||
|
<value>txtRequestHost</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.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="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 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=">>txtRequestHost.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>359, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>Edit or add a [Trojan] server</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>359, 21</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="txtId.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
||||||
|
<value>*</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="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>24</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.Name" xml:space="preserve">
|
||||||
|
<value>label4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.Name" xml:space="preserve">
|
||||||
|
<value>txtId</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>303, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Name" xml:space="preserve">
|
||||||
|
<value>btnClose</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>Host(SNI)</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.Name" xml:space="preserve">
|
||||||
|
<value>label6</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</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="label3.Text" xml:space="preserve">
|
||||||
|
<value>Password</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRequestHost.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Name" xml:space="preserve">
|
||||||
|
<value>txtAddress</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</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>4</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="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 221</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</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, 27</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</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="txtRequestHost.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>23</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 59</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.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label6.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 10</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
|
<value>8</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, 31</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>&OK</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=">>btnClose.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Server port</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>337, 158</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 62</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 91</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 126</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>59, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.Name" xml:space="preserve">
|
||||||
|
<value>label13</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtId.ZOrder" xml:space="preserve">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
|
<value>label2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.Name" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 231</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
||||||
|
<value>9</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>547, 291</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
|
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel2.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
|
<value>6</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=">>panel2.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Name" xml:space="preserve">
|
||||||
|
<value>panel1</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="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
163
v2rayN/v2rayN/Forms/AddServer6Form.zh-Hans.resx
Normal file
163
v2rayN/v2rayN/Forms/AddServer6Form.zh-Hans.resx
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>取消(&C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>服务器</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>域名(SNI)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label13.Text" xml:space="preserve">
|
||||||
|
<value>*手填,方便识别管理</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<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="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="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="$this.Text" xml:space="preserve">
|
||||||
|
<value>编辑或添加[Trojan]服务器</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
68
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
68
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
@@ -37,11 +37,13 @@
|
|||||||
this.label24 = new System.Windows.Forms.Label();
|
this.label24 = new System.Windows.Forms.Label();
|
||||||
this.label23 = new System.Windows.Forms.Label();
|
this.label23 = new System.Windows.Forms.Label();
|
||||||
this.panTlsMore = new System.Windows.Forms.Panel();
|
this.panTlsMore = new System.Windows.Forms.Panel();
|
||||||
this.label22 = new System.Windows.Forms.Label();
|
|
||||||
this.label21 = new System.Windows.Forms.Label();
|
this.label21 = new System.Windows.Forms.Label();
|
||||||
this.cmbAllowInsecure = new System.Windows.Forms.ComboBox();
|
this.cmbAllowInsecure = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
this.label20 = new System.Windows.Forms.Label();
|
this.label20 = new System.Windows.Forms.Label();
|
||||||
this.txtPath = new System.Windows.Forms.TextBox();
|
this.txtPath = new System.Windows.Forms.TextBox();
|
||||||
|
this.cmbNetwork = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
this.label19 = new System.Windows.Forms.Label();
|
this.label19 = new System.Windows.Forms.Label();
|
||||||
this.label18 = new System.Windows.Forms.Label();
|
this.label18 = new System.Windows.Forms.Label();
|
||||||
this.label17 = new System.Windows.Forms.Label();
|
this.label17 = new System.Windows.Forms.Label();
|
||||||
@@ -54,10 +56,7 @@
|
|||||||
this.label11 = new System.Windows.Forms.Label();
|
this.label11 = new System.Windows.Forms.Label();
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
this.cmbHeaderType = new System.Windows.Forms.ComboBox();
|
this.cmbHeaderType = new System.Windows.Forms.ComboBox();
|
||||||
this.label9 = new System.Windows.Forms.Label();
|
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
this.cmbNetwork = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
this.txtRemarks = new System.Windows.Forms.TextBox();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
@@ -99,10 +98,7 @@
|
|||||||
this.groupBox1.Controls.Add(this.btnGUID);
|
this.groupBox1.Controls.Add(this.btnGUID);
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
this.groupBox1.Controls.Add(this.label13);
|
||||||
this.groupBox1.Controls.Add(this.groupBox2);
|
this.groupBox1.Controls.Add(this.groupBox2);
|
||||||
this.groupBox1.Controls.Add(this.label9);
|
|
||||||
this.groupBox1.Controls.Add(this.label8);
|
this.groupBox1.Controls.Add(this.label8);
|
||||||
this.groupBox1.Controls.Add(this.cmbNetwork);
|
|
||||||
this.groupBox1.Controls.Add(this.label7);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbSecurity);
|
this.groupBox1.Controls.Add(this.cmbSecurity);
|
||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
this.groupBox1.Controls.Add(this.txtRemarks);
|
||||||
this.groupBox1.Controls.Add(this.label6);
|
this.groupBox1.Controls.Add(this.label6);
|
||||||
@@ -136,8 +132,11 @@
|
|||||||
this.groupBox2.Controls.Add(this.label24);
|
this.groupBox2.Controls.Add(this.label24);
|
||||||
this.groupBox2.Controls.Add(this.label23);
|
this.groupBox2.Controls.Add(this.label23);
|
||||||
this.groupBox2.Controls.Add(this.panTlsMore);
|
this.groupBox2.Controls.Add(this.panTlsMore);
|
||||||
|
this.groupBox2.Controls.Add(this.label9);
|
||||||
this.groupBox2.Controls.Add(this.label20);
|
this.groupBox2.Controls.Add(this.label20);
|
||||||
this.groupBox2.Controls.Add(this.txtPath);
|
this.groupBox2.Controls.Add(this.txtPath);
|
||||||
|
this.groupBox2.Controls.Add(this.cmbNetwork);
|
||||||
|
this.groupBox2.Controls.Add(this.label7);
|
||||||
this.groupBox2.Controls.Add(this.label19);
|
this.groupBox2.Controls.Add(this.label19);
|
||||||
this.groupBox2.Controls.Add(this.label18);
|
this.groupBox2.Controls.Add(this.label18);
|
||||||
this.groupBox2.Controls.Add(this.label17);
|
this.groupBox2.Controls.Add(this.label17);
|
||||||
@@ -166,17 +165,11 @@
|
|||||||
//
|
//
|
||||||
// panTlsMore
|
// panTlsMore
|
||||||
//
|
//
|
||||||
this.panTlsMore.Controls.Add(this.label22);
|
|
||||||
this.panTlsMore.Controls.Add(this.label21);
|
this.panTlsMore.Controls.Add(this.label21);
|
||||||
this.panTlsMore.Controls.Add(this.cmbAllowInsecure);
|
this.panTlsMore.Controls.Add(this.cmbAllowInsecure);
|
||||||
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
||||||
this.panTlsMore.Name = "panTlsMore";
|
this.panTlsMore.Name = "panTlsMore";
|
||||||
//
|
//
|
||||||
// label22
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label22, "label22");
|
|
||||||
this.label22.Name = "label22";
|
|
||||||
//
|
|
||||||
// label21
|
// label21
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label21, "label21");
|
resources.ApplyResources(this.label21, "label21");
|
||||||
@@ -193,6 +186,11 @@
|
|||||||
resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure");
|
resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure");
|
||||||
this.cmbAllowInsecure.Name = "cmbAllowInsecure";
|
this.cmbAllowInsecure.Name = "cmbAllowInsecure";
|
||||||
//
|
//
|
||||||
|
// label9
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label9, "label9");
|
||||||
|
this.label9.Name = "label9";
|
||||||
|
//
|
||||||
// label20
|
// label20
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label20, "label20");
|
resources.ApplyResources(this.label20, "label20");
|
||||||
@@ -203,6 +201,25 @@
|
|||||||
resources.ApplyResources(this.txtPath, "txtPath");
|
resources.ApplyResources(this.txtPath, "txtPath");
|
||||||
this.txtPath.Name = "txtPath";
|
this.txtPath.Name = "txtPath";
|
||||||
//
|
//
|
||||||
|
// cmbNetwork
|
||||||
|
//
|
||||||
|
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbNetwork.FormattingEnabled = true;
|
||||||
|
this.cmbNetwork.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbNetwork.Items"),
|
||||||
|
resources.GetString("cmbNetwork.Items1"),
|
||||||
|
resources.GetString("cmbNetwork.Items2"),
|
||||||
|
resources.GetString("cmbNetwork.Items3"),
|
||||||
|
resources.GetString("cmbNetwork.Items4")});
|
||||||
|
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
||||||
|
this.cmbNetwork.Name = "cmbNetwork";
|
||||||
|
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// label7
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label7, "label7");
|
||||||
|
this.label7.Name = "label7";
|
||||||
|
//
|
||||||
// label19
|
// label19
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label19, "label19");
|
resources.ApplyResources(this.label19, "label19");
|
||||||
@@ -279,35 +296,11 @@
|
|||||||
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
||||||
this.cmbHeaderType.Name = "cmbHeaderType";
|
this.cmbHeaderType.Name = "cmbHeaderType";
|
||||||
//
|
//
|
||||||
// label9
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label9, "label9");
|
|
||||||
this.label9.Name = "label9";
|
|
||||||
//
|
|
||||||
// label8
|
// label8
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label8, "label8");
|
resources.ApplyResources(this.label8, "label8");
|
||||||
this.label8.Name = "label8";
|
this.label8.Name = "label8";
|
||||||
//
|
//
|
||||||
// cmbNetwork
|
|
||||||
//
|
|
||||||
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbNetwork.FormattingEnabled = true;
|
|
||||||
this.cmbNetwork.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbNetwork.Items"),
|
|
||||||
resources.GetString("cmbNetwork.Items1"),
|
|
||||||
resources.GetString("cmbNetwork.Items2"),
|
|
||||||
resources.GetString("cmbNetwork.Items3"),
|
|
||||||
resources.GetString("cmbNetwork.Items4")});
|
|
||||||
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
|
||||||
this.cmbNetwork.Name = "cmbNetwork";
|
|
||||||
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label7, "label7");
|
|
||||||
this.label7.Name = "label7";
|
|
||||||
//
|
|
||||||
// cmbSecurity
|
// cmbSecurity
|
||||||
//
|
//
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
@@ -508,7 +501,6 @@
|
|||||||
private System.Windows.Forms.Label label20;
|
private System.Windows.Forms.Label label20;
|
||||||
private System.Windows.Forms.Label label21;
|
private System.Windows.Forms.Label label21;
|
||||||
private System.Windows.Forms.ComboBox cmbAllowInsecure;
|
private System.Windows.Forms.ComboBox cmbAllowInsecure;
|
||||||
private System.Windows.Forms.Label label22;
|
|
||||||
private System.Windows.Forms.Panel panTlsMore;
|
private System.Windows.Forms.Panel panTlsMore;
|
||||||
private System.Windows.Forms.Label label24;
|
private System.Windows.Forms.Label label24;
|
||||||
private System.Windows.Forms.Label label23;
|
private System.Windows.Forms.Label label23;
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ using v2rayN.Mode;
|
|||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class AddServerForm : BaseForm
|
public partial class AddServerForm : BaseServerForm
|
||||||
{
|
{
|
||||||
public int EditIndex { get; set; }
|
|
||||||
VmessItem vmessItem = null;
|
|
||||||
|
|
||||||
public AddServerForm()
|
public AddServerForm()
|
||||||
{
|
{
|
||||||
@@ -166,7 +164,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,6 +178,18 @@ namespace v2rayN.Forms
|
|||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void cmbStreamSecurity_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string security = cmbStreamSecurity.Text;
|
||||||
|
if (Utils.IsNullOrEmpty(security))
|
||||||
|
{
|
||||||
|
panTlsMore.Hide();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
panTlsMore.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region 导入客户端/服务端配置
|
#region 导入客户端/服务端配置
|
||||||
|
|
||||||
@@ -207,9 +217,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;
|
||||||
@@ -231,7 +243,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.ShowWarning(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,11 +268,10 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
ClearServer();
|
ClearServer();
|
||||||
|
|
||||||
string msg;
|
VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out msg);
|
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.ShowWarning(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,17 +288,5 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void cmbStreamSecurity_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string security = cmbStreamSecurity.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(security))
|
|
||||||
{
|
|
||||||
panTlsMore.Hide();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
panTlsMore.Show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,7 +171,7 @@
|
|||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>285, 203</value>
|
<value>285, 175</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>113, 12</value>
|
||||||
@@ -202,16 +202,16 @@
|
|||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label24.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label24.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>526, 165</value>
|
<value>529, 207</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>119, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label24.TabIndex" type="System.Int32, mscorlib">
|
<data name="label24.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>35</value>
|
<value>35</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label24.Text" xml:space="preserve">
|
<data name="label24.Text" xml:space="preserve">
|
||||||
<value>3)QUIC key</value>
|
<value>3)QUIC key/Kcp seed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label24.Name" xml:space="preserve">
|
<data name=">>label24.Name" xml:space="preserve">
|
||||||
<value>label24</value>
|
<value>label24</value>
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label23.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>470, 99</value>
|
<value>465, 146</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>89, 12</value>
|
<value>89, 12</value>
|
||||||
@@ -255,33 +255,6 @@
|
|||||||
<data name=">>label23.ZOrder" xml:space="preserve">
|
<data name=">>label23.ZOrder" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label22.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>205, 11</value>
|
|
||||||
</data>
|
|
||||||
<data name="label22.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label22.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name="label22.Text" xml:space="preserve">
|
|
||||||
<value>Default value true</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label22.Name" xml:space="preserve">
|
|
||||||
<value>label22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label22.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=">>label22.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label22.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label21.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label21.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -307,7 +280,7 @@
|
|||||||
<value>panTlsMore</value>
|
<value>panTlsMore</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label21.ZOrder" xml:space="preserve">
|
<data name=">>label21.ZOrder" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbAllowInsecure.Items" xml:space="preserve">
|
<data name="cmbAllowInsecure.Items" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
@@ -337,10 +310,10 @@
|
|||||||
<value>panTlsMore</value>
|
<value>panTlsMore</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbAllowInsecure.ZOrder" xml:space="preserve">
|
<data name=">>cmbAllowInsecure.ZOrder" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panTlsMore.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="panTlsMore.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>284, 189</value>
|
<value>284, 234</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panTlsMore.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panTlsMore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>338, 35</value>
|
<value>338, 35</value>
|
||||||
@@ -360,11 +333,38 @@
|
|||||||
<data name=">>panTlsMore.ZOrder" xml:space="preserve">
|
<data name=">>panTlsMore.ZOrder" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label9.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>350, 32</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>113, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>15</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Text" xml:space="preserve">
|
||||||
|
<value>*Default value tcp</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label9.Name" xml:space="preserve">
|
||||||
|
<value>label9</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label9.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=">>label9.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label9.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
<data name="label20.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label20.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label20.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label20.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>469, 83</value>
|
<value>464, 130</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>203, 12</value>
|
<value>203, 12</value>
|
||||||
@@ -385,10 +385,10 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label20.ZOrder" xml:space="preserve">
|
<data name=">>label20.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtPath.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>124, 125</value>
|
<value>127, 169</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtPath.Multiline" type="System.Boolean, mscorlib">
|
<data name="txtPath.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -409,13 +409,76 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtPath.ZOrder" xml:space="preserve">
|
<data name=">>txtPath.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Items" xml:space="preserve">
|
||||||
|
<value>tcp</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Items1" xml:space="preserve">
|
||||||
|
<value>kcp</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Items2" xml:space="preserve">
|
||||||
|
<value>ws</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Items3" xml:space="preserve">
|
||||||
|
<value>h2</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Items4" xml:space="preserve">
|
||||||
|
<value>quic</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>192, 28</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>143, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbNetwork.Name" xml:space="preserve">
|
||||||
|
<value>cmbNetwork</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbNetwork.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbNetwork.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbNetwork.ZOrder" xml:space="preserve">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 32</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>167, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>13</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Text" xml:space="preserve">
|
||||||
|
<value>Transport protocol(network)</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label7.Name" xml:space="preserve">
|
||||||
|
<value>label7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label7.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=">>label7.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label7.ZOrder" xml:space="preserve">
|
||||||
|
<value>7</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label19.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label19.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label19.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label19.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>9, 125</value>
|
<value>9, 169</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>29, 12</value>
|
<value>29, 12</value>
|
||||||
@@ -436,13 +499,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label19.ZOrder" xml:space="preserve">
|
<data name=">>label19.ZOrder" xml:space="preserve">
|
||||||
<value>5</value>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label18.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label18.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label18.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label18.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>526, 147</value>
|
<value>529, 189</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>59, 12</value>
|
<value>59, 12</value>
|
||||||
@@ -463,13 +526,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label18.ZOrder" xml:space="preserve">
|
<data name=">>label18.ZOrder" xml:space="preserve">
|
||||||
<value>6</value>
|
<value>9</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label17.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label17.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label17.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label17.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>469, 68</value>
|
<value>464, 115</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>59, 12</value>
|
<value>59, 12</value>
|
||||||
@@ -490,13 +553,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label17.ZOrder" xml:space="preserve">
|
<data name=">>label17.ZOrder" xml:space="preserve">
|
||||||
<value>7</value>
|
<value>10</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label16.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label16.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label16.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label16.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>526, 130</value>
|
<value>529, 172</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>59, 12</value>
|
<value>59, 12</value>
|
||||||
@@ -517,13 +580,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label16.ZOrder" xml:space="preserve">
|
<data name=">>label16.ZOrder" xml:space="preserve">
|
||||||
<value>8</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label14.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label14.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label14.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label14.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>469, 53</value>
|
<value>464, 100</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>215, 12</value>
|
<value>215, 12</value>
|
||||||
@@ -544,13 +607,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label14.ZOrder" xml:space="preserve">
|
<data name=">>label14.ZOrder" xml:space="preserve">
|
||||||
<value>9</value>
|
<value>12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label15.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label15.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>9, 201</value>
|
<value>9, 243</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>23, 12</value>
|
<value>23, 12</value>
|
||||||
@@ -571,7 +634,7 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label15.ZOrder" xml:space="preserve">
|
<data name=">>label15.ZOrder" xml:space="preserve">
|
||||||
<value>10</value>
|
<value>13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbStreamSecurity.Items" xml:space="preserve">
|
<data name="cmbStreamSecurity.Items" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
@@ -580,7 +643,7 @@
|
|||||||
<value>tls</value>
|
<value>tls</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>124, 197</value>
|
<value>127, 239</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>143, 20</value>
|
<value>143, 20</value>
|
||||||
@@ -598,13 +661,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbStreamSecurity.ZOrder" xml:space="preserve">
|
<data name=">>cmbStreamSecurity.ZOrder" xml:space="preserve">
|
||||||
<value>11</value>
|
<value>14</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label12.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label12.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label12.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label12.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>282, 34</value>
|
<value>282, 66</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>299, 12</value>
|
<value>299, 12</value>
|
||||||
@@ -625,10 +688,10 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label12.ZOrder" xml:space="preserve">
|
<data name=">>label12.ZOrder" xml:space="preserve">
|
||||||
<value>12</value>
|
<value>15</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>158, 58</value>
|
<value>158, 100</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRequestHost.Multiline" type="System.Boolean, mscorlib">
|
<data name="txtRequestHost.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -649,13 +712,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRequestHost.ZOrder" xml:space="preserve">
|
<data name=">>txtRequestHost.ZOrder" xml:space="preserve">
|
||||||
<value>13</value>
|
<value>16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label11.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label11.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label11.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label11.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>9, 34</value>
|
<value>9, 66</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>95, 12</value>
|
||||||
@@ -676,13 +739,13 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label11.ZOrder" xml:space="preserve">
|
<data name=">>label11.ZOrder" xml:space="preserve">
|
||||||
<value>14</value>
|
<value>17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label10.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label10.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label10.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label10.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>9, 62</value>
|
<value>9, 100</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>143, 12</value>
|
<value>143, 12</value>
|
||||||
@@ -703,7 +766,7 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label10.ZOrder" xml:space="preserve">
|
<data name=">>label10.ZOrder" xml:space="preserve">
|
||||||
<value>15</value>
|
<value>18</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbHeaderType.Items" xml:space="preserve">
|
<data name="cmbHeaderType.Items" xml:space="preserve">
|
||||||
<value>none</value>
|
<value>none</value>
|
||||||
@@ -727,7 +790,7 @@
|
|||||||
<value>wireguard</value>
|
<value>wireguard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>124, 30</value>
|
<value>127, 64</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>143, 20</value>
|
<value>143, 20</value>
|
||||||
@@ -745,22 +808,22 @@
|
|||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbHeaderType.ZOrder" xml:space="preserve">
|
<data name=">>cmbHeaderType.ZOrder" xml:space="preserve">
|
||||||
<value>16</value>
|
<value>19</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Bottom</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>3, 237</value>
|
<value>3, 215</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>723, 234</value>
|
<value>723, 281</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>21</value>
|
<value>21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>Keep the default value if it is not clear</value>
|
<value>Transport</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.Name" xml:space="preserve">
|
<data name=">>groupBox2.Name" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>groupBox2</value>
|
||||||
@@ -774,33 +837,6 @@
|
|||||||
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label9.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>353, 175</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>15</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Text" xml:space="preserve">
|
|
||||||
<value>*Default value tcp</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label9.Name" xml:space="preserve">
|
|
||||||
<value>label9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label9.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=">>label9.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label9.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label8.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -826,70 +862,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label8.ZOrder" xml:space="preserve">
|
<data name=">>label8.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>3</value>
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Items" xml:space="preserve">
|
|
||||||
<value>tcp</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Items1" xml:space="preserve">
|
|
||||||
<value>kcp</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Items2" xml:space="preserve">
|
|
||||||
<value>ws</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Items3" xml:space="preserve">
|
|
||||||
<value>h2</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Items4" xml:space="preserve">
|
|
||||||
<value>quic</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>195, 171</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>143, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.Name" xml:space="preserve">
|
|
||||||
<value>cmbNetwork</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 175</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>167, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>13</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Text" xml:space="preserve">
|
|
||||||
<value>Transport protocol(network)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label7.Name" xml:space="preserve">
|
|
||||||
<value>label7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label7.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=">>label7.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label7.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbSecurity.Items" xml:space="preserve">
|
<data name="cmbSecurity.Items" xml:space="preserve">
|
||||||
<value>aes-128-gcm</value>
|
<value>aes-128-gcm</value>
|
||||||
@@ -922,10 +895,10 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
||||||
<value>7</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 199</value>
|
<value>127, 171</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>143, 21</value>
|
<value>143, 21</value>
|
||||||
@@ -943,13 +916,13 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
<value>8</value>
|
<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>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>12, 203</value>
|
<value>12, 175</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>95, 12</value>
|
||||||
@@ -970,7 +943,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||||
<value>9</value>
|
<value>6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -997,7 +970,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
<data name=">>label5.ZOrder" xml:space="preserve">
|
||||||
<value>10</value>
|
<value>7</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtAlterId.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtAlterId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 114</value>
|
<value>127, 114</value>
|
||||||
@@ -1018,7 +991,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtAlterId.ZOrder" xml:space="preserve">
|
<data name=">>txtAlterId.ZOrder" xml:space="preserve">
|
||||||
<value>11</value>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -1045,7 +1018,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
<data name=">>label4.ZOrder" xml:space="preserve">
|
||||||
<value>12</value>
|
<value>9</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 85</value>
|
<value>127, 85</value>
|
||||||
@@ -1066,7 +1039,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtId.ZOrder" xml:space="preserve">
|
<data name=">>txtId.ZOrder" xml:space="preserve">
|
||||||
<value>13</value>
|
<value>10</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -1093,7 +1066,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
<value>14</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 56</value>
|
<value>127, 56</value>
|
||||||
@@ -1114,7 +1087,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
||||||
<value>15</value>
|
<value>12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -1141,7 +1114,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
<value>16</value>
|
<value>13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 27</value>
|
<value>127, 27</value>
|
||||||
@@ -1162,7 +1135,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
||||||
<value>17</value>
|
<value>14</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>
|
||||||
@@ -1189,7 +1162,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
<value>18</value>
|
<value>15</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
@@ -1198,7 +1171,7 @@
|
|||||||
<value>0, 35</value>
|
<value>0, 35</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>729, 474</value>
|
<value>729, 499</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
@@ -1246,7 +1219,7 @@
|
|||||||
<value>Bottom</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 509</value>
|
<value>0, 534</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>729, 60</value>
|
<value>729, 60</value>
|
||||||
@@ -1344,11 +1317,14 @@
|
|||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>114</value>
|
||||||
|
</metadata>
|
||||||
<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="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>729, 569</value>
|
<value>729, 594</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Edit or add a [VMess] server</value>
|
<value>Edit or add a [VMess] server</value>
|
||||||
@@ -1387,6 +1363,6 @@
|
|||||||
<value>AddServerForm</value>
|
<value>AddServerForm</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -130,14 +130,14 @@
|
|||||||
<value>*手填,方便识别管理</value>
|
<value>*手填,方便识别管理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
<value>不清楚则保持默认值</value>
|
<value>底层传输方式(transport)</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label24.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>149, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label24.Text" xml:space="preserve">
|
<data name="label24.Text" xml:space="preserve">
|
||||||
<value>3)QUIC 加密密钥</value>
|
<value>3)QUIC 加密密钥/Kcp seed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>95, 12</value>
|
||||||
@@ -145,11 +145,23 @@
|
|||||||
<data name="label23.Text" xml:space="preserve">
|
<data name="label23.Text" xml:space="preserve">
|
||||||
<value>4)QUIC 加密方式</value>
|
<value>4)QUIC 加密方式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label21.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>53, 12</value>
|
<value>167, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label22.Text" xml:space="preserve">
|
<data name="label21.Text" xml:space="preserve">
|
||||||
<value>默认true</value>
|
<value>跳过证书验证(allowInsecure)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>223, 7</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>350, 36</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="label20.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label20.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>149, 12</value>
|
<value>149, 12</value>
|
||||||
@@ -157,6 +169,27 @@
|
|||||||
<data name="label20.Text" xml:space="preserve">
|
<data name="label20.Text" xml:space="preserve">
|
||||||
<value>3)h2 host中间逗号(,)隔开</value>
|
<value>3)h2 host中间逗号(,)隔开</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="txtPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 168</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 32</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>211, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 36</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="label19.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 168</value>
|
||||||
|
</data>
|
||||||
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label19.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>65, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -169,11 +202,20 @@
|
|||||||
<data name="label14.Text" xml:space="preserve">
|
<data name="label14.Text" xml:space="preserve">
|
||||||
<value>1)http host中间逗号(,)隔开</value>
|
<value>1)http host中间逗号(,)隔开</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 237</value>
|
||||||
|
</data>
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>77, 12</value>
|
<value>107, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label15.Text" xml:space="preserve">
|
<data name="label15.Text" xml:space="preserve">
|
||||||
<value>底层传输安全</value>
|
<value>底层传输安全(tls)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 237</value>
|
||||||
|
</data>
|
||||||
|
<data name="label12.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>282, 71</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>197, 12</value>
|
<value>197, 12</value>
|
||||||
@@ -182,28 +224,31 @@
|
|||||||
<value>*tcp或kcp或QUIC伪装类型,默认none</value>
|
<value>*tcp或kcp或QUIC伪装类型,默认none</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>124, 58</value>
|
<value>127, 102</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>334, 51</value>
|
<value>334, 51</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label11.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 71</value>
|
||||||
|
</data>
|
||||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>89, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label11.Text" xml:space="preserve">
|
<data name="label11.Text" xml:space="preserve">
|
||||||
<value>伪装类型(type)</value>
|
<value>伪装类型(type)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label10.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>9, 102</value>
|
||||||
|
</data>
|
||||||
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>89, 12</value>
|
<value>89, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label10.Text" xml:space="preserve">
|
<data name="label10.Text" xml:space="preserve">
|
||||||
<value>伪装域名(host)</value>
|
<value>伪装域名(host)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>143, 12</value>
|
<value>127, 67</value>
|
||||||
</data>
|
|
||||||
<data name="label9.Text" xml:space="preserve">
|
|
||||||
<value>*默认tcp,选错会无法连接</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>113, 12</value>
|
||||||
@@ -211,18 +256,6 @@
|
|||||||
<data name="label8.Text" xml:space="preserve">
|
<data name="label8.Text" xml:space="preserve">
|
||||||
<value>*随便选,建议(auto)</value>
|
<value>*随便选,建议(auto)</value>
|
||||||
</data>
|
</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">
|
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 143</value>
|
<value>127, 143</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
51
v2rayN/v2rayN/Forms/BaseServerForm.Designer.cs
generated
Normal file
51
v2rayN/v2rayN/Forms/BaseServerForm.Designer.cs
generated
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class BaseServerForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseServerForm));
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// BaseServerForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(292, 273);
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "BaseServerForm";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "BaseServerForm";
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
18
v2rayN/v2rayN/Forms/BaseServerForm.cs
Normal file
18
v2rayN/v2rayN/Forms/BaseServerForm.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class BaseServerForm : BaseForm
|
||||||
|
{
|
||||||
|
public int EditIndex { get; set; }
|
||||||
|
protected VmessItem vmessItem = null;
|
||||||
|
|
||||||
|
public BaseServerForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
1253
v2rayN/v2rayN/Forms/BaseServerForm.resx
Normal file
1253
v2rayN/v2rayN/Forms/BaseServerForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
378
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
378
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -30,12 +30,14 @@
|
|||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
this.scMain = new System.Windows.Forms.SplitContainer();
|
||||||
this.lvServers = new v2rayN.Base.ListViewFlickerFree();
|
this.lvServers = new v2rayN.Base.ListViewFlickerFree();
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuAddVlessServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuAddShadowsocksServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddShadowsocksServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuAddSocksServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddSocksServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuAddTrojanServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuAddCustomServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddCustomServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -55,25 +57,24 @@
|
|||||||
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbTestMe = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
|
||||||
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
|
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
||||||
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
||||||
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuNotEnabledHttp = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuKeepClear = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuGlobalPAC = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuKeep = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuKeepPAC = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuServers = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuServers = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuCopyPACUrl = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuUpdateSubscriptions = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.menuExit = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuExit = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.bgwScan = new System.ComponentModel.BackgroundWorker();
|
this.bgwScan = new System.ComponentModel.BackgroundWorker();
|
||||||
@@ -87,8 +88,6 @@
|
|||||||
this.toolSslHttpPortLab = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslHttpPortLab = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslHttpPort = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslHttpPort = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslPacPortLab = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslPacPort = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank3 = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslBlank3 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
@@ -98,31 +97,32 @@
|
|||||||
this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbOptionSetting = new System.Windows.Forms.ToolStripButton();
|
this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
|
this.tsbOptionSetting = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbRoutingSetting = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbReload = new System.Windows.Forms.ToolStripButton();
|
this.tsbReload = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbCheckUpdatePACList = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbCheckClearPACList = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbHelp = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsbHelp = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tsbV2rayWebsite = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbAbout = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbAbout = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsbV2rayWebsite = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbLanguageDef = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbLanguageDef = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbLanguageZhHans = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbLanguageZhHans = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
|
||||||
this.splitContainer1.Panel1.SuspendLayout();
|
this.scMain.Panel1.SuspendLayout();
|
||||||
this.splitContainer1.Panel2.SuspendLayout();
|
this.scMain.Panel2.SuspendLayout();
|
||||||
this.splitContainer1.SuspendLayout();
|
this.scMain.SuspendLayout();
|
||||||
this.cmsLv.SuspendLayout();
|
this.cmsLv.SuspendLayout();
|
||||||
this.cmsMain.SuspendLayout();
|
this.cmsMain.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
@@ -131,25 +131,27 @@
|
|||||||
this.tsMain.SuspendLayout();
|
this.tsMain.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// splitContainer1
|
// scMain
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.splitContainer1, "splitContainer1");
|
resources.ApplyResources(this.scMain, "scMain");
|
||||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
this.scMain.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||||
this.splitContainer1.Name = "splitContainer1";
|
this.scMain.Name = "scMain";
|
||||||
//
|
//
|
||||||
// splitContainer1.Panel1
|
// scMain.Panel1
|
||||||
//
|
//
|
||||||
this.splitContainer1.Panel1.Controls.Add(this.lvServers);
|
resources.ApplyResources(this.scMain.Panel1, "scMain.Panel1");
|
||||||
|
this.scMain.Panel1.Controls.Add(this.lvServers);
|
||||||
//
|
//
|
||||||
// splitContainer1.Panel2
|
// scMain.Panel2
|
||||||
//
|
//
|
||||||
this.splitContainer1.Panel2.Controls.Add(this.qrCodeControl);
|
resources.ApplyResources(this.scMain.Panel2, "scMain.Panel2");
|
||||||
this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved);
|
this.scMain.Panel2.Controls.Add(this.qrCodeControl);
|
||||||
|
this.scMain.TabStop = false;
|
||||||
//
|
//
|
||||||
// lvServers
|
// lvServers
|
||||||
//
|
//
|
||||||
this.lvServers.ContextMenuStrip = this.cmsLv;
|
|
||||||
resources.ApplyResources(this.lvServers, "lvServers");
|
resources.ApplyResources(this.lvServers, "lvServers");
|
||||||
|
this.lvServers.ContextMenuStrip = this.cmsLv;
|
||||||
this.lvServers.FullRowSelect = true;
|
this.lvServers.FullRowSelect = true;
|
||||||
this.lvServers.GridLines = true;
|
this.lvServers.GridLines = true;
|
||||||
this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||||
@@ -160,6 +162,7 @@
|
|||||||
this.lvServers.Name = "lvServers";
|
this.lvServers.Name = "lvServers";
|
||||||
this.lvServers.UseCompatibleStateImageBehavior = false;
|
this.lvServers.UseCompatibleStateImageBehavior = false;
|
||||||
this.lvServers.View = System.Windows.Forms.View.Details;
|
this.lvServers.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lvServers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvServers_ColumnClick);
|
||||||
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
|
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
|
||||||
this.lvServers.Click += new System.EventHandler(this.lvServers_Click);
|
this.lvServers.Click += new System.EventHandler(this.lvServers_Click);
|
||||||
this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);
|
this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);
|
||||||
@@ -167,11 +170,14 @@
|
|||||||
//
|
//
|
||||||
// cmsLv
|
// cmsLv
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.cmsLv, "cmsLv");
|
||||||
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.menuAddVmessServer,
|
this.menuAddVmessServer,
|
||||||
|
this.menuAddVlessServer,
|
||||||
this.menuAddShadowsocksServer,
|
this.menuAddShadowsocksServer,
|
||||||
this.menuAddSocksServer,
|
this.menuAddSocksServer,
|
||||||
|
this.menuAddTrojanServer,
|
||||||
this.menuAddCustomServer,
|
this.menuAddCustomServer,
|
||||||
this.menuAddServers,
|
this.menuAddServers,
|
||||||
this.menuScanScreen,
|
this.menuScanScreen,
|
||||||
@@ -191,6 +197,7 @@
|
|||||||
this.menuTcpingServer,
|
this.menuTcpingServer,
|
||||||
this.menuRealPingServer,
|
this.menuRealPingServer,
|
||||||
this.menuSpeedServer,
|
this.menuSpeedServer,
|
||||||
|
this.tsbTestMe,
|
||||||
this.toolStripSeparator6,
|
this.toolStripSeparator6,
|
||||||
this.menuExport2ClientConfig,
|
this.menuExport2ClientConfig,
|
||||||
this.menuExport2ServerConfig,
|
this.menuExport2ServerConfig,
|
||||||
@@ -198,194 +205,211 @@
|
|||||||
this.menuExport2SubContent});
|
this.menuExport2SubContent});
|
||||||
this.cmsLv.Name = "cmsLv";
|
this.cmsLv.Name = "cmsLv";
|
||||||
this.cmsLv.OwnerItem = this.tsbServer;
|
this.cmsLv.OwnerItem = this.tsbServer;
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
|
||||||
//
|
//
|
||||||
// menuAddVmessServer
|
// menuAddVmessServer
|
||||||
//
|
//
|
||||||
this.menuAddVmessServer.Name = "menuAddVmessServer";
|
|
||||||
resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer");
|
resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer");
|
||||||
|
this.menuAddVmessServer.Name = "menuAddVmessServer";
|
||||||
this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click);
|
this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click);
|
||||||
//
|
//
|
||||||
|
// menuAddVlessServer
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuAddVlessServer, "menuAddVlessServer");
|
||||||
|
this.menuAddVlessServer.Name = "menuAddVlessServer";
|
||||||
|
this.menuAddVlessServer.Click += new System.EventHandler(this.menuAddVlessServer_Click);
|
||||||
|
//
|
||||||
// menuAddShadowsocksServer
|
// menuAddShadowsocksServer
|
||||||
//
|
//
|
||||||
this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer";
|
|
||||||
resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer");
|
resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer");
|
||||||
|
this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer";
|
||||||
this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click);
|
this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click);
|
||||||
//
|
//
|
||||||
// menuAddSocksServer
|
// menuAddSocksServer
|
||||||
//
|
//
|
||||||
this.menuAddSocksServer.Name = "menuAddSocksServer";
|
|
||||||
resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer");
|
resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer");
|
||||||
|
this.menuAddSocksServer.Name = "menuAddSocksServer";
|
||||||
this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click);
|
this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click);
|
||||||
//
|
//
|
||||||
|
// menuAddTrojanServer
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuAddTrojanServer, "menuAddTrojanServer");
|
||||||
|
this.menuAddTrojanServer.Name = "menuAddTrojanServer";
|
||||||
|
this.menuAddTrojanServer.Click += new System.EventHandler(this.menuAddTrojanServer_Click);
|
||||||
|
//
|
||||||
// menuAddCustomServer
|
// menuAddCustomServer
|
||||||
//
|
//
|
||||||
this.menuAddCustomServer.Name = "menuAddCustomServer";
|
|
||||||
resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer");
|
resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer");
|
||||||
|
this.menuAddCustomServer.Name = "menuAddCustomServer";
|
||||||
this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click);
|
this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click);
|
||||||
//
|
//
|
||||||
// menuAddServers
|
// menuAddServers
|
||||||
//
|
//
|
||||||
this.menuAddServers.Name = "menuAddServers";
|
|
||||||
resources.ApplyResources(this.menuAddServers, "menuAddServers");
|
resources.ApplyResources(this.menuAddServers, "menuAddServers");
|
||||||
|
this.menuAddServers.Name = "menuAddServers";
|
||||||
this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click);
|
this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click);
|
||||||
//
|
//
|
||||||
// menuScanScreen
|
// menuScanScreen
|
||||||
//
|
//
|
||||||
this.menuScanScreen.Name = "menuScanScreen";
|
|
||||||
resources.ApplyResources(this.menuScanScreen, "menuScanScreen");
|
resources.ApplyResources(this.menuScanScreen, "menuScanScreen");
|
||||||
|
this.menuScanScreen.Name = "menuScanScreen";
|
||||||
this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click);
|
this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator1
|
// toolStripSeparator1
|
||||||
//
|
//
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
//
|
//
|
||||||
// menuRemoveServer
|
// menuRemoveServer
|
||||||
//
|
//
|
||||||
this.menuRemoveServer.Name = "menuRemoveServer";
|
|
||||||
resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer");
|
resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer");
|
||||||
|
this.menuRemoveServer.Name = "menuRemoveServer";
|
||||||
this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click);
|
this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click);
|
||||||
//
|
//
|
||||||
// menuRemoveDuplicateServer
|
// menuRemoveDuplicateServer
|
||||||
//
|
//
|
||||||
this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer";
|
|
||||||
resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer");
|
resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer");
|
||||||
|
this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer";
|
||||||
this.menuRemoveDuplicateServer.Click += new System.EventHandler(this.menuRemoveDuplicateServer_Click);
|
this.menuRemoveDuplicateServer.Click += new System.EventHandler(this.menuRemoveDuplicateServer_Click);
|
||||||
//
|
//
|
||||||
// menuCopyServer
|
// menuCopyServer
|
||||||
//
|
//
|
||||||
this.menuCopyServer.Name = "menuCopyServer";
|
|
||||||
resources.ApplyResources(this.menuCopyServer, "menuCopyServer");
|
resources.ApplyResources(this.menuCopyServer, "menuCopyServer");
|
||||||
|
this.menuCopyServer.Name = "menuCopyServer";
|
||||||
this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click);
|
this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click);
|
||||||
//
|
//
|
||||||
// menuSetDefaultServer
|
// menuSetDefaultServer
|
||||||
//
|
//
|
||||||
this.menuSetDefaultServer.Name = "menuSetDefaultServer";
|
|
||||||
resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
|
resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
|
||||||
|
this.menuSetDefaultServer.Name = "menuSetDefaultServer";
|
||||||
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
|
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator3
|
// toolStripSeparator3
|
||||||
//
|
//
|
||||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
||||||
|
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
//
|
//
|
||||||
// menuMoveTop
|
// menuMoveTop
|
||||||
//
|
//
|
||||||
this.menuMoveTop.Name = "menuMoveTop";
|
|
||||||
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
|
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
|
||||||
|
this.menuMoveTop.Name = "menuMoveTop";
|
||||||
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
|
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
|
||||||
//
|
//
|
||||||
// menuMoveUp
|
// menuMoveUp
|
||||||
//
|
//
|
||||||
this.menuMoveUp.Name = "menuMoveUp";
|
|
||||||
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
|
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
|
||||||
|
this.menuMoveUp.Name = "menuMoveUp";
|
||||||
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
|
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
|
||||||
//
|
//
|
||||||
// menuMoveDown
|
// menuMoveDown
|
||||||
//
|
//
|
||||||
this.menuMoveDown.Name = "menuMoveDown";
|
|
||||||
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
|
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
|
||||||
|
this.menuMoveDown.Name = "menuMoveDown";
|
||||||
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
|
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
|
||||||
//
|
//
|
||||||
// menuMoveBottom
|
// menuMoveBottom
|
||||||
//
|
//
|
||||||
this.menuMoveBottom.Name = "menuMoveBottom";
|
|
||||||
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
|
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
|
||||||
|
this.menuMoveBottom.Name = "menuMoveBottom";
|
||||||
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
|
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
|
||||||
//
|
//
|
||||||
// menuSelectAll
|
// menuSelectAll
|
||||||
//
|
//
|
||||||
this.menuSelectAll.Name = "menuSelectAll";
|
|
||||||
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
||||||
|
this.menuSelectAll.Name = "menuSelectAll";
|
||||||
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator9
|
// toolStripSeparator9
|
||||||
//
|
//
|
||||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9");
|
resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9");
|
||||||
|
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
||||||
//
|
//
|
||||||
// menuPingServer
|
// menuPingServer
|
||||||
//
|
//
|
||||||
this.menuPingServer.Name = "menuPingServer";
|
|
||||||
resources.ApplyResources(this.menuPingServer, "menuPingServer");
|
resources.ApplyResources(this.menuPingServer, "menuPingServer");
|
||||||
|
this.menuPingServer.Name = "menuPingServer";
|
||||||
this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click);
|
this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click);
|
||||||
//
|
//
|
||||||
// menuTcpingServer
|
// menuTcpingServer
|
||||||
//
|
//
|
||||||
this.menuTcpingServer.Name = "menuTcpingServer";
|
|
||||||
resources.ApplyResources(this.menuTcpingServer, "menuTcpingServer");
|
resources.ApplyResources(this.menuTcpingServer, "menuTcpingServer");
|
||||||
|
this.menuTcpingServer.Name = "menuTcpingServer";
|
||||||
this.menuTcpingServer.Click += new System.EventHandler(this.menuTcpingServer_Click);
|
this.menuTcpingServer.Click += new System.EventHandler(this.menuTcpingServer_Click);
|
||||||
//
|
//
|
||||||
// menuRealPingServer
|
// menuRealPingServer
|
||||||
//
|
//
|
||||||
this.menuRealPingServer.Name = "menuRealPingServer";
|
|
||||||
resources.ApplyResources(this.menuRealPingServer, "menuRealPingServer");
|
resources.ApplyResources(this.menuRealPingServer, "menuRealPingServer");
|
||||||
|
this.menuRealPingServer.Name = "menuRealPingServer";
|
||||||
this.menuRealPingServer.Click += new System.EventHandler(this.menuRealPingServer_Click);
|
this.menuRealPingServer.Click += new System.EventHandler(this.menuRealPingServer_Click);
|
||||||
//
|
//
|
||||||
// menuSpeedServer
|
// menuSpeedServer
|
||||||
//
|
//
|
||||||
this.menuSpeedServer.Name = "menuSpeedServer";
|
|
||||||
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
||||||
|
this.menuSpeedServer.Name = "menuSpeedServer";
|
||||||
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
||||||
//
|
//
|
||||||
|
// tsbTestMe
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.tsbTestMe, "tsbTestMe");
|
||||||
|
this.tsbTestMe.Name = "tsbTestMe";
|
||||||
|
this.tsbTestMe.Click += new System.EventHandler(this.tsbTestMe_Click);
|
||||||
|
//
|
||||||
// toolStripSeparator6
|
// toolStripSeparator6
|
||||||
//
|
//
|
||||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6");
|
resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6");
|
||||||
|
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||||
//
|
//
|
||||||
// menuExport2ClientConfig
|
// menuExport2ClientConfig
|
||||||
//
|
//
|
||||||
this.menuExport2ClientConfig.Name = "menuExport2ClientConfig";
|
|
||||||
resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig");
|
resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig");
|
||||||
|
this.menuExport2ClientConfig.Name = "menuExport2ClientConfig";
|
||||||
this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click);
|
this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click);
|
||||||
//
|
//
|
||||||
// menuExport2ServerConfig
|
// menuExport2ServerConfig
|
||||||
//
|
//
|
||||||
this.menuExport2ServerConfig.Name = "menuExport2ServerConfig";
|
|
||||||
resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig");
|
resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig");
|
||||||
|
this.menuExport2ServerConfig.Name = "menuExport2ServerConfig";
|
||||||
this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click);
|
this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click);
|
||||||
//
|
//
|
||||||
// menuExport2ShareUrl
|
// menuExport2ShareUrl
|
||||||
//
|
//
|
||||||
this.menuExport2ShareUrl.Name = "menuExport2ShareUrl";
|
|
||||||
resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl");
|
resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl");
|
||||||
|
this.menuExport2ShareUrl.Name = "menuExport2ShareUrl";
|
||||||
this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click);
|
this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click);
|
||||||
//
|
//
|
||||||
// menuExport2SubContent
|
// menuExport2SubContent
|
||||||
//
|
//
|
||||||
this.menuExport2SubContent.Name = "menuExport2SubContent";
|
|
||||||
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
||||||
|
this.menuExport2SubContent.Name = "menuExport2SubContent";
|
||||||
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
||||||
//
|
//
|
||||||
|
// tsbServer
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.tsbServer, "tsbServer");
|
||||||
|
this.tsbServer.DropDown = this.cmsLv;
|
||||||
|
this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
|
||||||
|
this.tsbServer.Name = "tsbServer";
|
||||||
|
//
|
||||||
// qrCodeControl
|
// qrCodeControl
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
||||||
this.qrCodeControl.Name = "qrCodeControl";
|
this.qrCodeControl.Name = "qrCodeControl";
|
||||||
//
|
//
|
||||||
// tsbServer
|
|
||||||
//
|
|
||||||
this.tsbServer.DropDown = this.cmsLv;
|
|
||||||
this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
|
|
||||||
resources.ApplyResources(this.tsbServer, "tsbServer");
|
|
||||||
this.tsbServer.Name = "tsbServer";
|
|
||||||
//
|
|
||||||
// notifyMain
|
// notifyMain
|
||||||
//
|
//
|
||||||
this.notifyMain.ContextMenuStrip = this.cmsMain;
|
|
||||||
resources.ApplyResources(this.notifyMain, "notifyMain");
|
resources.ApplyResources(this.notifyMain, "notifyMain");
|
||||||
|
this.notifyMain.ContextMenuStrip = this.cmsMain;
|
||||||
this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick);
|
this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick);
|
||||||
//
|
//
|
||||||
// cmsMain
|
// cmsMain
|
||||||
//
|
//
|
||||||
this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
resources.ApplyResources(this.cmsMain, "cmsMain");
|
resources.ApplyResources(this.cmsMain, "cmsMain");
|
||||||
|
this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.menuSysAgentMode,
|
this.menuSysAgentMode,
|
||||||
this.menuServers,
|
this.menuServers,
|
||||||
this.menuAddServers2,
|
this.menuAddServers2,
|
||||||
this.menuScanScreen2,
|
this.menuScanScreen2,
|
||||||
this.menuCopyPACUrl,
|
this.menuUpdateSubscriptions,
|
||||||
this.toolStripSeparator2,
|
this.toolStripSeparator2,
|
||||||
this.menuExit});
|
this.menuExit});
|
||||||
this.cmsMain.Name = "contextMenuStrip1";
|
this.cmsMain.Name = "contextMenuStrip1";
|
||||||
@@ -395,77 +419,63 @@
|
|||||||
//
|
//
|
||||||
// menuSysAgentMode
|
// menuSysAgentMode
|
||||||
//
|
//
|
||||||
this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuNotEnabledHttp,
|
|
||||||
this.menuGlobal,
|
|
||||||
this.menuGlobalPAC,
|
|
||||||
this.menuKeep,
|
|
||||||
this.menuKeepPAC});
|
|
||||||
this.menuSysAgentMode.Name = "menuSysAgentMode";
|
|
||||||
resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode");
|
resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode");
|
||||||
|
this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuKeepClear,
|
||||||
|
this.menuGlobal,
|
||||||
|
this.menuKeepNothing});
|
||||||
|
this.menuSysAgentMode.Name = "menuSysAgentMode";
|
||||||
//
|
//
|
||||||
// menuNotEnabledHttp
|
// menuKeepClear
|
||||||
//
|
//
|
||||||
this.menuNotEnabledHttp.Name = "menuNotEnabledHttp";
|
resources.ApplyResources(this.menuKeepClear, "menuKeepClear");
|
||||||
resources.ApplyResources(this.menuNotEnabledHttp, "menuNotEnabledHttp");
|
this.menuKeepClear.Name = "menuKeepClear";
|
||||||
this.menuNotEnabledHttp.Click += new System.EventHandler(this.menuNotEnabledHttp_Click);
|
this.menuKeepClear.Click += new System.EventHandler(this.menuKeepClear_Click);
|
||||||
//
|
//
|
||||||
// menuGlobal
|
// menuGlobal
|
||||||
//
|
//
|
||||||
this.menuGlobal.Name = "menuGlobal";
|
|
||||||
resources.ApplyResources(this.menuGlobal, "menuGlobal");
|
resources.ApplyResources(this.menuGlobal, "menuGlobal");
|
||||||
|
this.menuGlobal.Name = "menuGlobal";
|
||||||
this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click);
|
this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click);
|
||||||
//
|
//
|
||||||
// menuGlobalPAC
|
// menuKeepNothing
|
||||||
//
|
//
|
||||||
this.menuGlobalPAC.Name = "menuGlobalPAC";
|
resources.ApplyResources(this.menuKeepNothing, "menuKeepNothing");
|
||||||
resources.ApplyResources(this.menuGlobalPAC, "menuGlobalPAC");
|
this.menuKeepNothing.Name = "menuKeepNothing";
|
||||||
this.menuGlobalPAC.Click += new System.EventHandler(this.menuGlobalPAC_Click);
|
this.menuKeepNothing.Click += new System.EventHandler(this.menuKeepNothing_Click);
|
||||||
//
|
|
||||||
// menuKeep
|
|
||||||
//
|
|
||||||
this.menuKeep.Name = "menuKeep";
|
|
||||||
resources.ApplyResources(this.menuKeep, "menuKeep");
|
|
||||||
this.menuKeep.Click += new System.EventHandler(this.menuKeep_Click);
|
|
||||||
//
|
|
||||||
// menuKeepPAC
|
|
||||||
//
|
|
||||||
this.menuKeepPAC.Name = "menuKeepPAC";
|
|
||||||
resources.ApplyResources(this.menuKeepPAC, "menuKeepPAC");
|
|
||||||
this.menuKeepPAC.Click += new System.EventHandler(this.menuKeepPAC_Click);
|
|
||||||
//
|
//
|
||||||
// menuServers
|
// menuServers
|
||||||
//
|
//
|
||||||
this.menuServers.Name = "menuServers";
|
|
||||||
resources.ApplyResources(this.menuServers, "menuServers");
|
resources.ApplyResources(this.menuServers, "menuServers");
|
||||||
|
this.menuServers.Name = "menuServers";
|
||||||
//
|
//
|
||||||
// menuAddServers2
|
// menuAddServers2
|
||||||
//
|
//
|
||||||
this.menuAddServers2.Name = "menuAddServers2";
|
|
||||||
resources.ApplyResources(this.menuAddServers2, "menuAddServers2");
|
resources.ApplyResources(this.menuAddServers2, "menuAddServers2");
|
||||||
|
this.menuAddServers2.Name = "menuAddServers2";
|
||||||
this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click);
|
this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click);
|
||||||
//
|
//
|
||||||
// menuScanScreen2
|
// menuScanScreen2
|
||||||
//
|
//
|
||||||
this.menuScanScreen2.Name = "menuScanScreen2";
|
|
||||||
resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2");
|
resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2");
|
||||||
|
this.menuScanScreen2.Name = "menuScanScreen2";
|
||||||
this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click);
|
this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click);
|
||||||
//
|
//
|
||||||
// menuCopyPACUrl
|
// menuUpdateSubscriptions
|
||||||
//
|
//
|
||||||
this.menuCopyPACUrl.Name = "menuCopyPACUrl";
|
resources.ApplyResources(this.menuUpdateSubscriptions, "menuUpdateSubscriptions");
|
||||||
resources.ApplyResources(this.menuCopyPACUrl, "menuCopyPACUrl");
|
this.menuUpdateSubscriptions.Name = "menuUpdateSubscriptions";
|
||||||
this.menuCopyPACUrl.Click += new System.EventHandler(this.menuCopyPACUrl_Click);
|
this.menuUpdateSubscriptions.Click += new System.EventHandler(this.menuUpdateSubscriptions_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator2
|
// toolStripSeparator2
|
||||||
//
|
//
|
||||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
|
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
|
||||||
|
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
//
|
//
|
||||||
// menuExit
|
// menuExit
|
||||||
//
|
//
|
||||||
this.menuExit.Name = "menuExit";
|
|
||||||
resources.ApplyResources(this.menuExit, "menuExit");
|
resources.ApplyResources(this.menuExit, "menuExit");
|
||||||
|
this.menuExit.Name = "menuExit";
|
||||||
this.menuExit.Click += new System.EventHandler(this.menuExit_Click);
|
this.menuExit.Click += new System.EventHandler(this.menuExit_Click);
|
||||||
//
|
//
|
||||||
// bgwScan
|
// bgwScan
|
||||||
@@ -476,30 +486,31 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
this.groupBox1.Controls.Add(this.splitContainer1);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Controls.Add(this.scMain);
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
this.groupBox2.Controls.Add(this.txtMsgBox);
|
this.groupBox2.Controls.Add(this.txtMsgBox);
|
||||||
this.groupBox2.Controls.Add(this.ssMain);
|
this.groupBox2.Controls.Add(this.ssMain);
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
// txtMsgBox
|
// txtMsgBox
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
||||||
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
||||||
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
|
||||||
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
||||||
this.txtMsgBox.Name = "txtMsgBox";
|
this.txtMsgBox.Name = "txtMsgBox";
|
||||||
this.txtMsgBox.ReadOnly = true;
|
this.txtMsgBox.ReadOnly = true;
|
||||||
//
|
//
|
||||||
// ssMain
|
// ssMain
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.ssMain, "ssMain");
|
||||||
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.toolSslSocksPortLab,
|
this.toolSslSocksPortLab,
|
||||||
this.toolSslSocksPort,
|
this.toolSslSocksPort,
|
||||||
@@ -507,12 +518,9 @@
|
|||||||
this.toolSslHttpPortLab,
|
this.toolSslHttpPortLab,
|
||||||
this.toolSslHttpPort,
|
this.toolSslHttpPort,
|
||||||
this.toolSslBlank2,
|
this.toolSslBlank2,
|
||||||
this.toolSslPacPortLab,
|
|
||||||
this.toolSslPacPort,
|
|
||||||
this.toolSslBlank3,
|
this.toolSslBlank3,
|
||||||
this.toolSslServerSpeed,
|
this.toolSslServerSpeed,
|
||||||
this.toolSslBlank4});
|
this.toolSslBlank4});
|
||||||
resources.ApplyResources(this.ssMain, "ssMain");
|
|
||||||
this.ssMain.Name = "ssMain";
|
this.ssMain.Name = "ssMain";
|
||||||
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
||||||
//
|
//
|
||||||
@@ -523,8 +531,8 @@
|
|||||||
//
|
//
|
||||||
// toolSslSocksPort
|
// toolSslSocksPort
|
||||||
//
|
//
|
||||||
this.toolSslSocksPort.Name = "toolSslSocksPort";
|
|
||||||
resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort");
|
resources.ApplyResources(this.toolSslSocksPort, "toolSslSocksPort");
|
||||||
|
this.toolSslSocksPort.Name = "toolSslSocksPort";
|
||||||
//
|
//
|
||||||
// toolSslBlank1
|
// toolSslBlank1
|
||||||
//
|
//
|
||||||
@@ -539,8 +547,8 @@
|
|||||||
//
|
//
|
||||||
// toolSslHttpPort
|
// toolSslHttpPort
|
||||||
//
|
//
|
||||||
this.toolSslHttpPort.Name = "toolSslHttpPort";
|
|
||||||
resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort");
|
resources.ApplyResources(this.toolSslHttpPort, "toolSslHttpPort");
|
||||||
|
this.toolSslHttpPort.Name = "toolSslHttpPort";
|
||||||
//
|
//
|
||||||
// toolSslBlank2
|
// toolSslBlank2
|
||||||
//
|
//
|
||||||
@@ -548,16 +556,6 @@
|
|||||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
this.toolSslBlank2.Name = "toolSslBlank2";
|
||||||
this.toolSslBlank2.Spring = true;
|
this.toolSslBlank2.Spring = true;
|
||||||
//
|
//
|
||||||
// toolSslPacPortLab
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslPacPortLab, "toolSslPacPortLab");
|
|
||||||
this.toolSslPacPortLab.Name = "toolSslPacPortLab";
|
|
||||||
//
|
|
||||||
// toolSslPacPort
|
|
||||||
//
|
|
||||||
this.toolSslPacPort.Name = "toolSslPacPort";
|
|
||||||
resources.ApplyResources(this.toolSslPacPort, "toolSslPacPort");
|
|
||||||
//
|
|
||||||
// toolSslBlank3
|
// toolSslBlank3
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3");
|
resources.ApplyResources(this.toolSslBlank3, "toolSslBlank3");
|
||||||
@@ -572,8 +570,8 @@
|
|||||||
//
|
//
|
||||||
// toolSslBlank4
|
// toolSslBlank4
|
||||||
//
|
//
|
||||||
this.toolSslBlank4.Name = "toolSslBlank4";
|
|
||||||
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
||||||
|
this.toolSslBlank4.Name = "toolSslBlank4";
|
||||||
//
|
//
|
||||||
// panel1
|
// panel1
|
||||||
//
|
//
|
||||||
@@ -582,13 +580,15 @@
|
|||||||
//
|
//
|
||||||
// tsMain
|
// tsMain
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.tsMain, "tsMain");
|
||||||
this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32);
|
this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||||
this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsbServer,
|
this.tsbServer,
|
||||||
this.toolStripSeparator4,
|
this.toolStripSeparator4,
|
||||||
this.tsbSub,
|
this.tsbSub,
|
||||||
|
this.tsbQRCodeSwitch,
|
||||||
this.toolStripSeparator8,
|
this.toolStripSeparator8,
|
||||||
this.tsbOptionSetting,
|
this.tsbSetting,
|
||||||
this.toolStripSeparator5,
|
this.toolStripSeparator5,
|
||||||
this.tsbReload,
|
this.tsbReload,
|
||||||
this.toolStripSeparator7,
|
this.toolStripSeparator7,
|
||||||
@@ -598,51 +598,74 @@
|
|||||||
this.tsbPromotion,
|
this.tsbPromotion,
|
||||||
this.toolStripSeparator11,
|
this.toolStripSeparator11,
|
||||||
this.tsbClose});
|
this.tsbClose});
|
||||||
resources.ApplyResources(this.tsMain, "tsMain");
|
|
||||||
this.tsMain.Name = "tsMain";
|
this.tsMain.Name = "tsMain";
|
||||||
|
this.tsMain.TabStop = true;
|
||||||
//
|
//
|
||||||
// toolStripSeparator4
|
// toolStripSeparator4
|
||||||
//
|
//
|
||||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
|
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
|
||||||
|
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||||
//
|
//
|
||||||
// tsbSub
|
// tsbSub
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.tsbSub, "tsbSub");
|
||||||
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsbSubSetting,
|
this.tsbSubSetting,
|
||||||
this.tsbSubUpdate});
|
this.tsbSubUpdate});
|
||||||
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
|
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
|
||||||
resources.ApplyResources(this.tsbSub, "tsbSub");
|
|
||||||
this.tsbSub.Name = "tsbSub";
|
this.tsbSub.Name = "tsbSub";
|
||||||
//
|
//
|
||||||
// tsbSubSetting
|
// tsbSubSetting
|
||||||
//
|
//
|
||||||
this.tsbSubSetting.Name = "tsbSubSetting";
|
|
||||||
resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting");
|
resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting");
|
||||||
|
this.tsbSubSetting.Name = "tsbSubSetting";
|
||||||
this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click);
|
this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click);
|
||||||
//
|
//
|
||||||
// tsbSubUpdate
|
// tsbSubUpdate
|
||||||
//
|
//
|
||||||
this.tsbSubUpdate.Name = "tsbSubUpdate";
|
|
||||||
resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
|
resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
|
||||||
|
this.tsbSubUpdate.Name = "tsbSubUpdate";
|
||||||
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
|
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
|
||||||
//
|
//
|
||||||
|
// tsbQRCodeSwitch
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.tsbQRCodeSwitch, "tsbQRCodeSwitch");
|
||||||
|
this.tsbQRCodeSwitch.CheckOnClick = true;
|
||||||
|
this.tsbQRCodeSwitch.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.tsbQRCodeSwitch.Image = global::v2rayN.Properties.Resources.share;
|
||||||
|
this.tsbQRCodeSwitch.Name = "tsbQRCodeSwitch";
|
||||||
|
this.tsbQRCodeSwitch.CheckedChanged += new System.EventHandler(this.tsbQRCodeSwitch_CheckedChanged);
|
||||||
|
//
|
||||||
// toolStripSeparator8
|
// toolStripSeparator8
|
||||||
//
|
//
|
||||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8");
|
resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8");
|
||||||
|
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||||
|
//
|
||||||
|
// tsbSetting
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.tsbSetting, "tsbSetting");
|
||||||
|
this.tsbSetting.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.tsbOptionSetting,
|
||||||
|
this.tsbRoutingSetting});
|
||||||
|
this.tsbSetting.Image = global::v2rayN.Properties.Resources.option;
|
||||||
|
this.tsbSetting.Name = "tsbSetting";
|
||||||
//
|
//
|
||||||
// tsbOptionSetting
|
// tsbOptionSetting
|
||||||
//
|
//
|
||||||
this.tsbOptionSetting.Image = global::v2rayN.Properties.Resources.option;
|
|
||||||
resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting");
|
resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting");
|
||||||
this.tsbOptionSetting.Name = "tsbOptionSetting";
|
this.tsbOptionSetting.Name = "tsbOptionSetting";
|
||||||
this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click);
|
this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click);
|
||||||
//
|
//
|
||||||
|
// tsbRoutingSetting
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.tsbRoutingSetting, "tsbRoutingSetting");
|
||||||
|
this.tsbRoutingSetting.Name = "tsbRoutingSetting";
|
||||||
|
this.tsbRoutingSetting.Click += new System.EventHandler(this.tsbRoutingSetting_Click);
|
||||||
|
//
|
||||||
// toolStripSeparator5
|
// toolStripSeparator5
|
||||||
//
|
//
|
||||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5");
|
resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5");
|
||||||
|
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||||
//
|
//
|
||||||
// tsbReload
|
// tsbReload
|
||||||
//
|
//
|
||||||
@@ -652,57 +675,45 @@
|
|||||||
//
|
//
|
||||||
// toolStripSeparator7
|
// toolStripSeparator7
|
||||||
//
|
//
|
||||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7");
|
resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7");
|
||||||
|
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
||||||
//
|
//
|
||||||
// tsbCheckUpdate
|
// tsbCheckUpdate
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
|
||||||
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsbCheckUpdateN,
|
this.tsbCheckUpdateN,
|
||||||
this.tsbCheckUpdateCore,
|
this.tsbCheckUpdateCore,
|
||||||
this.tsbCheckUpdatePACList,
|
this.tsbCheckUpdateXrayCore});
|
||||||
this.toolStripSeparator13,
|
|
||||||
this.tsbCheckClearPACList});
|
|
||||||
this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
|
this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
|
||||||
resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
|
|
||||||
this.tsbCheckUpdate.Name = "tsbCheckUpdate";
|
this.tsbCheckUpdate.Name = "tsbCheckUpdate";
|
||||||
//
|
//
|
||||||
// tsbCheckUpdateN
|
// tsbCheckUpdateN
|
||||||
//
|
//
|
||||||
this.tsbCheckUpdateN.Name = "tsbCheckUpdateN";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN");
|
resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN");
|
||||||
|
this.tsbCheckUpdateN.Name = "tsbCheckUpdateN";
|
||||||
this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click);
|
this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click);
|
||||||
//
|
//
|
||||||
// tsbCheckUpdateCore
|
// tsbCheckUpdateCore
|
||||||
//
|
//
|
||||||
this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
|
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
|
||||||
|
this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore";
|
||||||
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
|
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
|
||||||
//
|
//
|
||||||
// tsbCheckUpdatePACList
|
// tsbCheckUpdateXrayCore
|
||||||
//
|
//
|
||||||
this.tsbCheckUpdatePACList.Name = "tsbCheckUpdatePACList";
|
resources.ApplyResources(this.tsbCheckUpdateXrayCore, "tsbCheckUpdateXrayCore");
|
||||||
resources.ApplyResources(this.tsbCheckUpdatePACList, "tsbCheckUpdatePACList");
|
this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore";
|
||||||
this.tsbCheckUpdatePACList.Click += new System.EventHandler(this.tsbCheckUpdatePACList_Click);
|
this.tsbCheckUpdateXrayCore.Click += new System.EventHandler(this.tsbCheckUpdateXrayCore_Click);
|
||||||
//
|
|
||||||
// toolStripSeparator13
|
|
||||||
//
|
|
||||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13");
|
|
||||||
//
|
|
||||||
// tsbCheckClearPACList
|
|
||||||
//
|
|
||||||
this.tsbCheckClearPACList.Name = "tsbCheckClearPACList";
|
|
||||||
resources.ApplyResources(this.tsbCheckClearPACList, "tsbCheckClearPACList");
|
|
||||||
this.tsbCheckClearPACList.Click += new System.EventHandler(this.tsbCheckClearPACList_Click);
|
|
||||||
//
|
//
|
||||||
// toolStripSeparator10
|
// toolStripSeparator10
|
||||||
//
|
//
|
||||||
this.toolStripSeparator10.Name = "toolStripSeparator10";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10");
|
resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10");
|
||||||
|
this.toolStripSeparator10.Name = "toolStripSeparator10";
|
||||||
//
|
//
|
||||||
// tsbHelp
|
// tsbHelp
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.tsbHelp, "tsbHelp");
|
||||||
this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsbAbout,
|
this.tsbAbout,
|
||||||
this.tsbV2rayWebsite,
|
this.tsbV2rayWebsite,
|
||||||
@@ -710,50 +721,49 @@
|
|||||||
this.tsbLanguageDef,
|
this.tsbLanguageDef,
|
||||||
this.tsbLanguageZhHans});
|
this.tsbLanguageZhHans});
|
||||||
this.tsbHelp.Image = global::v2rayN.Properties.Resources.help;
|
this.tsbHelp.Image = global::v2rayN.Properties.Resources.help;
|
||||||
resources.ApplyResources(this.tsbHelp, "tsbHelp");
|
|
||||||
this.tsbHelp.Name = "tsbHelp";
|
this.tsbHelp.Name = "tsbHelp";
|
||||||
//
|
//
|
||||||
// tsbV2rayWebsite
|
|
||||||
//
|
|
||||||
this.tsbV2rayWebsite.Name = "tsbV2rayWebsite";
|
|
||||||
resources.ApplyResources(this.tsbV2rayWebsite, "tsbV2rayWebsite");
|
|
||||||
this.tsbV2rayWebsite.Click += new System.EventHandler(this.tsbV2rayWebsite_Click);
|
|
||||||
//
|
|
||||||
// tsbAbout
|
// tsbAbout
|
||||||
//
|
//
|
||||||
this.tsbAbout.Name = "tsbAbout";
|
|
||||||
resources.ApplyResources(this.tsbAbout, "tsbAbout");
|
resources.ApplyResources(this.tsbAbout, "tsbAbout");
|
||||||
|
this.tsbAbout.Name = "tsbAbout";
|
||||||
this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click);
|
this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click);
|
||||||
//
|
//
|
||||||
|
// tsbV2rayWebsite
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.tsbV2rayWebsite, "tsbV2rayWebsite");
|
||||||
|
this.tsbV2rayWebsite.Name = "tsbV2rayWebsite";
|
||||||
|
this.tsbV2rayWebsite.Click += new System.EventHandler(this.tsbV2rayWebsite_Click);
|
||||||
|
//
|
||||||
// toolStripSeparator12
|
// toolStripSeparator12
|
||||||
//
|
//
|
||||||
this.toolStripSeparator12.Name = "toolStripSeparator12";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12");
|
resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12");
|
||||||
|
this.toolStripSeparator12.Name = "toolStripSeparator12";
|
||||||
//
|
//
|
||||||
// tsbLanguageDef
|
// tsbLanguageDef
|
||||||
//
|
//
|
||||||
this.tsbLanguageDef.Name = "tsbLanguageDef";
|
|
||||||
resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef");
|
resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef");
|
||||||
|
this.tsbLanguageDef.Name = "tsbLanguageDef";
|
||||||
this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click);
|
this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click);
|
||||||
//
|
//
|
||||||
// tsbLanguageZhHans
|
// tsbLanguageZhHans
|
||||||
//
|
//
|
||||||
this.tsbLanguageZhHans.Name = "tsbLanguageZhHans";
|
|
||||||
resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans");
|
resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans");
|
||||||
|
this.tsbLanguageZhHans.Name = "tsbLanguageZhHans";
|
||||||
this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click);
|
this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click);
|
||||||
//
|
//
|
||||||
// tsbPromotion
|
// tsbPromotion
|
||||||
//
|
//
|
||||||
|
resources.ApplyResources(this.tsbPromotion, "tsbPromotion");
|
||||||
this.tsbPromotion.ForeColor = System.Drawing.Color.Black;
|
this.tsbPromotion.ForeColor = System.Drawing.Color.Black;
|
||||||
this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion;
|
this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion;
|
||||||
resources.ApplyResources(this.tsbPromotion, "tsbPromotion");
|
|
||||||
this.tsbPromotion.Name = "tsbPromotion";
|
this.tsbPromotion.Name = "tsbPromotion";
|
||||||
this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click);
|
this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator11
|
// toolStripSeparator11
|
||||||
//
|
//
|
||||||
this.toolStripSeparator11.Name = "toolStripSeparator11";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11");
|
resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11");
|
||||||
|
this.toolStripSeparator11.Name = "toolStripSeparator11";
|
||||||
//
|
//
|
||||||
// tsbClose
|
// tsbClose
|
||||||
//
|
//
|
||||||
@@ -777,10 +787,10 @@
|
|||||||
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
||||||
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
||||||
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
||||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
this.scMain.Panel1.ResumeLayout(false);
|
||||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
this.scMain.Panel2.ResumeLayout(false);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.scMain)).EndInit();
|
||||||
this.splitContainer1.ResumeLayout(false);
|
this.scMain.ResumeLayout(false);
|
||||||
this.cmsLv.ResumeLayout(false);
|
this.cmsLv.ResumeLayout(false);
|
||||||
this.cmsMain.ResumeLayout(false);
|
this.cmsMain.ResumeLayout(false);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
@@ -818,8 +828,6 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2ServerConfig;
|
private System.Windows.Forms.ToolStripMenuItem menuExport2ServerConfig;
|
||||||
private System.Windows.Forms.ToolStrip tsMain;
|
private System.Windows.Forms.ToolStrip tsMain;
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbServer;
|
private System.Windows.Forms.ToolStripDropDownButton tsbServer;
|
||||||
private System.Windows.Forms.ToolStripButton tsbOptionSetting;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbReload;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbClose;
|
private System.Windows.Forms.ToolStripButton tsbClose;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||||
@@ -832,19 +840,16 @@
|
|||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSysAgentMode;
|
private System.Windows.Forms.ToolStripMenuItem menuSysAgentMode;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuGlobal;
|
private System.Windows.Forms.ToolStripMenuItem menuGlobal;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuGlobalPAC;
|
private System.Windows.Forms.ToolStripMenuItem menuKeepClear;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeep;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuCopyPACUrl;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer;
|
private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer;
|
private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer;
|
||||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
private System.Windows.Forms.SplitContainer scMain;
|
||||||
private QRCodeControl qrCodeControl;
|
private QRCodeControl qrCodeControl;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate;
|
private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateN;
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateN;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateCore;
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateCore;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdatePACList;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddServers;
|
private System.Windows.Forms.ToolStripMenuItem menuAddServers;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2ShareUrl;
|
private System.Windows.Forms.ToolStripMenuItem menuExport2ShareUrl;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSpeedServer;
|
private System.Windows.Forms.ToolStripMenuItem menuSpeedServer;
|
||||||
@@ -859,8 +864,6 @@
|
|||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubSetting;
|
private System.Windows.Forms.ToolStripMenuItem tsbSubSetting;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdate;
|
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdate;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckClearPACList;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepPAC;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2SubContent;
|
private System.Windows.Forms.ToolStripMenuItem menuExport2SubContent;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
|
||||||
@@ -873,19 +876,26 @@
|
|||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslHttpPort;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslHttpPort;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslPacPort;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank3;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank3;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslSocksPortLab;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslSocksPortLab;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslHttpPortLab;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslHttpPortLab;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslPacPortLab;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuNotEnabledHttp;
|
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubscriptions;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuKeepNothing;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbTestMe;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbReload;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbQRCodeSwitch;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuAddVlessServer;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuAddTrojanServer;
|
||||||
|
private System.Windows.Forms.ToolStripDropDownButton tsbSetting;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbOptionSetting;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbRoutingSetting;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateXrayCore;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,8 @@ 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 System.Drawing;
|
||||||
using Newtonsoft.Json;
|
using System.Net;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -37,8 +35,8 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
v2rayHandler.V2rayStop();
|
v2rayHandler.V2rayStop();
|
||||||
|
|
||||||
HttpProxyHandle.CloseHttpAgent(config);
|
//HttpProxyHandle.CloseHttpAgent(config);
|
||||||
PACServerHandle.Stop();
|
HttpProxyHandle.UpdateSysProxy(config, true);
|
||||||
|
|
||||||
ConfigHandler.SaveConfig(ref config);
|
ConfigHandler.SaveConfig(ref config);
|
||||||
statistics?.SaveToFile();
|
statistics?.SaveToFile();
|
||||||
@@ -75,7 +73,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
InitServersView();
|
InitServersView();
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
lvServers.AutoResizeColumns();
|
RestoreUI();
|
||||||
|
|
||||||
LoadV2ray();
|
LoadV2ray();
|
||||||
|
|
||||||
@@ -87,6 +85,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (e.CloseReason == CloseReason.UserClosing)
|
if (e.CloseReason == CloseReason.UserClosing)
|
||||||
{
|
{
|
||||||
|
StorageUI();
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
HideForm();
|
HideForm();
|
||||||
return;
|
return;
|
||||||
@@ -101,14 +100,10 @@ namespace v2rayN.Forms
|
|||||||
//}
|
//}
|
||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
// //this.splitContainer1.SplitterDistance = config.uiItem.mainQRCodeWidth;
|
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e)
|
|
||||||
{
|
|
||||||
//config.uiItem.mainQRCodeWidth = splitContainer1.SplitterDistance;
|
|
||||||
}
|
|
||||||
|
|
||||||
//private const int WM_QUERYENDSESSION = 0x0011;
|
//private const int WM_QUERYENDSESSION = 0x0011;
|
||||||
//protected override void WndProc(ref Message m)
|
//protected override void WndProc(ref Message m)
|
||||||
@@ -128,6 +123,34 @@ namespace v2rayN.Forms
|
|||||||
// break;
|
// break;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
private void RestoreUI()
|
||||||
|
{
|
||||||
|
scMain.Panel2Collapsed = true;
|
||||||
|
|
||||||
|
if (!config.uiItem.mainSize.IsEmpty)
|
||||||
|
{
|
||||||
|
this.Width = config.uiItem.mainSize.Width;
|
||||||
|
this.Height = config.uiItem.mainSize.Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int k = 0; k < lvServers.Columns.Count; k++)
|
||||||
|
{
|
||||||
|
var width = ConfigHandler.GetformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width);
|
||||||
|
lvServers.Columns[k].Width = width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StorageUI()
|
||||||
|
{
|
||||||
|
config.uiItem.mainSize = new Size(this.Width, this.Height);
|
||||||
|
|
||||||
|
for (int k = 0; k < lvServers.Columns.Count; k++)
|
||||||
|
{
|
||||||
|
ConfigHandler.AddformMainLvColWidth(ref config, ((EServerColName)k).ToString(), lvServers.Columns[k].Width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 显示服务器 listview 和 menu
|
#region 显示服务器 listview 和 menu
|
||||||
@@ -138,6 +161,7 @@ namespace v2rayN.Forms
|
|||||||
private void RefreshServers()
|
private void RefreshServers()
|
||||||
{
|
{
|
||||||
RefreshServersView();
|
RefreshServersView();
|
||||||
|
//lvServers.AutoResizeColumns();
|
||||||
RefreshServersMenu();
|
RefreshServersMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,6 +170,7 @@ namespace v2rayN.Forms
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitServersView()
|
private void InitServersView()
|
||||||
{
|
{
|
||||||
|
lvServers.BeginUpdate();
|
||||||
lvServers.Items.Clear();
|
lvServers.Items.Clear();
|
||||||
|
|
||||||
lvServers.GridLines = true;
|
lvServers.GridLines = true;
|
||||||
@@ -153,25 +178,26 @@ namespace v2rayN.Forms
|
|||||||
lvServers.View = View.Details;
|
lvServers.View = View.Details;
|
||||||
lvServers.Scrollable = true;
|
lvServers.Scrollable = true;
|
||||||
lvServers.MultiSelect = true;
|
lvServers.MultiSelect = true;
|
||||||
lvServers.HeaderStyle = ColumnHeaderStyle.Nonclickable;
|
lvServers.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||||
|
|
||||||
lvServers.Columns.Add("", 30, HorizontalAlignment.Center);
|
lvServers.Columns.Add("", 30);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvPort"), 50, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvPort"), 50);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Right);
|
||||||
|
|
||||||
if (statistics != null && statistics.Enable)
|
if (statistics != null && statistics.Enable)
|
||||||
{
|
{
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTodayDownloadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTodayUploadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTotalDownloadDataAmount"), 70);
|
||||||
lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70, HorizontalAlignment.Left);
|
lvServers.Columns.Add(UIRes.I18N("LvTotalUploadDataAmount"), 70);
|
||||||
}
|
}
|
||||||
|
lvServers.EndUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -179,6 +205,9 @@ namespace v2rayN.Forms
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void RefreshServersView()
|
private void RefreshServersView()
|
||||||
{
|
{
|
||||||
|
int index = lvServers.SelectedIndices.Count > 0 ? lvServers.SelectedIndices[0] : -1;
|
||||||
|
|
||||||
|
lvServers.BeginUpdate();
|
||||||
lvServers.Items.Clear();
|
lvServers.Items.Clear();
|
||||||
|
|
||||||
for (int k = 0; k < config.vmess.Count; k++)
|
for (int k = 0; k < config.vmess.Count; k++)
|
||||||
@@ -195,10 +224,10 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
VmessItem item = config.vmess[k];
|
VmessItem item = config.vmess[k];
|
||||||
|
|
||||||
ListViewItem lvItem = null;
|
bool stats = statistics != null && statistics.Enable;
|
||||||
if (statistics != null && statistics.Enable)
|
if (stats)
|
||||||
{
|
{
|
||||||
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);
|
||||||
@@ -206,56 +235,44 @@ namespace v2rayN.Forms
|
|||||||
todayUp = Utils.HumanFy(sItem.todayUp);
|
todayUp = Utils.HumanFy(sItem.todayUp);
|
||||||
todayDown = Utils.HumanFy(sItem.todayDown);
|
todayDown = Utils.HumanFy(sItem.todayDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
lvItem = new ListViewItem(new string[]
|
|
||||||
{
|
|
||||||
def,
|
|
||||||
((EConfigType)item.configType).ToString(),
|
|
||||||
item.remarks,
|
|
||||||
item.address,
|
|
||||||
item.port.ToString(),
|
|
||||||
//item.id,
|
|
||||||
//item.alterId.ToString(),
|
|
||||||
item.security,
|
|
||||||
item.network,
|
|
||||||
item.getSubRemarks(config),
|
|
||||||
item.testResult,
|
|
||||||
todayDown,
|
|
||||||
todayUp,
|
|
||||||
totalDown,
|
|
||||||
totalUp
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else
|
ListViewItem lvItem = new ListViewItem(def);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.configType.ToString(), ((EConfigType)item.configType).ToString());
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.remarks.ToString(), item.remarks);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.address.ToString(), item.address);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString());
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.security.ToString(), item.security);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.network.ToString(), item.network);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config));
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult);
|
||||||
|
if (stats)
|
||||||
{
|
{
|
||||||
lvItem = new ListViewItem(new string[]
|
Utils.AddSubItem(lvItem, EServerColName.todayDown.ToString(), todayDown);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.todayUp.ToString(), todayUp);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.totalDown.ToString(), totalDown);
|
||||||
|
Utils.AddSubItem(lvItem, EServerColName.totalUp.ToString(), totalUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k % 2 == 1) // 隔行着色
|
||||||
{
|
{
|
||||||
def,
|
lvItem.BackColor = Color.WhiteSmoke;
|
||||||
((EConfigType)item.configType).ToString(),
|
}
|
||||||
item.remarks,
|
if (config.index.Equals(k))
|
||||||
item.address,
|
{
|
||||||
item.port.ToString(),
|
//lvItem.Checked = true;
|
||||||
//item.id,
|
lvItem.ForeColor = Color.DodgerBlue;
|
||||||
//item.alterId.ToString(),
|
lvItem.Font = new Font(lvItem.Font, FontStyle.Bold);
|
||||||
item.security,
|
|
||||||
item.network,
|
|
||||||
item.getSubRemarks(config),
|
|
||||||
item.testResult
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lvItem != null) lvServers.Items.Add(lvItem);
|
if (lvItem != null) lvServers.Items.Add(lvItem);
|
||||||
}
|
}
|
||||||
|
lvServers.EndUpdate();
|
||||||
|
|
||||||
//if (lvServers.Items.Count > 0)
|
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
|
||||||
//{
|
{
|
||||||
// if (lvServers.Items.Count <= testConfigIndex)
|
lvServers.Items[index].Selected = true;
|
||||||
// {
|
lvServers.EnsureVisible(index); // workaround
|
||||||
// testConfigIndex = lvServers.Items.Count - 1;
|
}
|
||||||
// }
|
|
||||||
// lvServers.Items[testConfigIndex].Selected = true;
|
|
||||||
// lvServers.Select();
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -271,8 +288,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;
|
||||||
@@ -318,27 +337,8 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void DisplayToolStatus()
|
private void DisplayToolStatus()
|
||||||
{
|
{
|
||||||
toolSslSocksPort.Text =
|
|
||||||
toolSslHttpPort.Text =
|
|
||||||
toolSslPacPort.Text = "OFF";
|
|
||||||
|
|
||||||
toolSslSocksPort.Text = $"{Global.Loopback}:{config.inbound[0].localPort}";
|
toolSslSocksPort.Text = $"{Global.Loopback}:{config.inbound[0].localPort}";
|
||||||
|
|
||||||
if (config.listenerType != 0)
|
|
||||||
{
|
|
||||||
toolSslHttpPort.Text = $"{Global.Loopback}:{Global.httpPort}";
|
toolSslHttpPort.Text = $"{Global.Loopback}:{Global.httpPort}";
|
||||||
if (config.listenerType == 2 || config.listenerType == 4)
|
|
||||||
{
|
|
||||||
if (PACServerHandle.IsRunning)
|
|
||||||
{
|
|
||||||
toolSslPacPort.Text = $"{HttpProxyHandle.GetPacUrl()}";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
toolSslPacPort.Text = UIRes.I18N("StartPacFailed");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||||
}
|
}
|
||||||
@@ -350,6 +350,35 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void lvServers_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Column < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var tag = lvServers.Columns[e.Column].Tag?.ToString();
|
||||||
|
bool asc = Utils.IsNullOrEmpty(tag) ? true : !Convert.ToBoolean(tag);
|
||||||
|
if (ConfigHandler.SortServers(ref config, (EServerColName)e.Column, asc) != 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lvServers.Columns[e.Column].Tag = Convert.ToString(asc);
|
||||||
|
RefreshServers();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.Column < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region v2ray 操作
|
#region v2ray 操作
|
||||||
@@ -370,7 +399,7 @@ namespace v2rayN.Forms
|
|||||||
ConfigHandler.SaveConfig(ref config, false);
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
statistics?.SaveToFile();
|
statistics?.SaveToFile();
|
||||||
|
|
||||||
ChangePACButtonStatus(config.listenerType);
|
ChangePACButtonStatus(config.sysProxyType);
|
||||||
|
|
||||||
tsbReload.Enabled = true;
|
tsbReload.Enabled = true;
|
||||||
}
|
}
|
||||||
@@ -419,50 +448,41 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ShowServerForm(config.vmess[index].configType, index);
|
||||||
|
}
|
||||||
|
private void ShowServerForm(int configType, int index)
|
||||||
|
{
|
||||||
|
BaseServerForm fm;
|
||||||
|
switch (configType)
|
||||||
|
{
|
||||||
|
case (int)EConfigType.Vmess:
|
||||||
|
fm = new AddServerForm();
|
||||||
|
break;
|
||||||
|
case (int)EConfigType.Shadowsocks:
|
||||||
|
fm = new AddServer3Form();
|
||||||
|
break;
|
||||||
|
case (int)EConfigType.Socks:
|
||||||
|
fm = new AddServer4Form();
|
||||||
|
break;
|
||||||
|
case (int)EConfigType.VLESS:
|
||||||
|
fm = new AddServer5Form();
|
||||||
|
break;
|
||||||
|
case (int)EConfigType.Trojan:
|
||||||
|
fm = new AddServer6Form();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fm = new AddServer2Form();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
fm.EditIndex = index;
|
||||||
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
//刷新
|
||||||
|
RefreshServers();
|
||||||
|
LoadV2ray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (config.vmess[index].configType == (int)EConfigType.Vmess)
|
|
||||||
{
|
|
||||||
var fm = new AddServerForm();
|
|
||||||
fm.EditIndex = index;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
//刷新
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (config.vmess[index].configType == (int)EConfigType.Shadowsocks)
|
|
||||||
{
|
|
||||||
var fm = new AddServer3Form();
|
|
||||||
fm.EditIndex = index;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (config.vmess[index].configType == (int)EConfigType.Socks)
|
|
||||||
{
|
|
||||||
var fm = new AddServer4Form();
|
|
||||||
fm.EditIndex = index;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var fm2 = new AddServer2Form();
|
|
||||||
fm2.EditIndex = index;
|
|
||||||
if (fm2.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
//刷新
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvServers_KeyDown(object sender, KeyEventArgs e)
|
private void lvServers_KeyDown(object sender, KeyEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -524,14 +544,12 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuAddVmessServer_Click(object sender, EventArgs e)
|
private void menuAddVmessServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AddServerForm fm = new AddServerForm();
|
ShowServerForm((int)EConfigType.Vmess, -1);
|
||||||
fm.EditIndex = -1;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
//刷新
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void menuAddVlessServer_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ShowServerForm((int)EConfigType.VLESS, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuRemoveServer_Click(object sender, EventArgs e)
|
private void menuRemoveServer_Click(object sender, EventArgs e)
|
||||||
@@ -558,8 +576,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)
|
||||||
@@ -633,9 +650,20 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
private void Speedtest(string actionType)
|
private void Speedtest(string actionType)
|
||||||
{
|
{
|
||||||
GetLvSelectedIndex();
|
if (GetLvSelectedIndex() < 0) return;
|
||||||
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 tsbTestMe_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string result = httpProxyTest() + "ms";
|
||||||
|
AppendText(false, string.Format(UIRes.I18N("TestMeOutput"), result));
|
||||||
|
}
|
||||||
|
private int httpProxyTest()
|
||||||
|
{
|
||||||
|
SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, "", UpdateSpeedtestHandler);
|
||||||
|
return statistics.RunAvailabilityCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
|
||||||
@@ -657,7 +685,7 @@ namespace v2rayN.Forms
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
foreach (int v in lvSelecteds)
|
foreach (int v in lvSelecteds)
|
||||||
{
|
{
|
||||||
string url = ConfigHandler.GetVmessQRCode(config, v);
|
string url = ShareHandler.GetShareUrl(config, v);
|
||||||
if (Utils.IsNullOrEmpty(url))
|
if (Utils.IsNullOrEmpty(url))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -680,7 +708,7 @@ namespace v2rayN.Forms
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
foreach (int v in lvSelecteds)
|
foreach (int v in lvSelecteds)
|
||||||
{
|
{
|
||||||
string url = ConfigHandler.GetVmessQRCode(config, v);
|
string url = ShareHandler.GetShareUrl(config, v);
|
||||||
if (Utils.IsNullOrEmpty(url))
|
if (Utils.IsNullOrEmpty(url))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -706,6 +734,17 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbRoutingSetting_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
RoutingSettingForm fm = new RoutingSettingForm();
|
||||||
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
//刷新
|
||||||
|
RefreshServers();
|
||||||
|
LoadV2ray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void tsbReload_Click(object sender, EventArgs e)
|
private void tsbReload_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
@@ -772,9 +811,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;
|
||||||
@@ -789,38 +830,30 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
//刷新
|
//刷新
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
LoadV2ray();
|
//LoadV2ray();
|
||||||
UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer"));
|
UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FailedImportedCustomServer"));
|
UI.ShowWarning(UIRes.I18N("FailedImportedCustomServer"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuAddShadowsocksServer_Click(object sender, EventArgs e)
|
private void menuAddShadowsocksServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var fm = new AddServer3Form();
|
ShowServerForm((int)EConfigType.Shadowsocks, -1);
|
||||||
fm.EditIndex = -1;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
//刷新
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
|
||||||
ShowForm();
|
ShowForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuAddSocksServer_Click(object sender, EventArgs e)
|
private void menuAddSocksServer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var fm = new AddServer4Form();
|
ShowServerForm((int)EConfigType.Socks, -1);
|
||||||
fm.EditIndex = -1;
|
ShowForm();
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
//刷新
|
|
||||||
RefreshServers();
|
|
||||||
LoadV2ray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void menuAddTrojanServer_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ShowServerForm((int)EConfigType.Trojan, -1);
|
||||||
ShowForm();
|
ShowForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -857,6 +890,11 @@ namespace v2rayN.Forms
|
|||||||
return counter;
|
return counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void menuUpdateSubscriptions_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateSubscriptionProcess();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -942,7 +980,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();
|
||||||
}
|
}
|
||||||
@@ -950,7 +988,6 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void menuExit_Click(object sender, EventArgs e)
|
private void menuExit_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
this.Visible = false;
|
this.Visible = false;
|
||||||
this.Close();
|
this.Close();
|
||||||
|
|
||||||
@@ -963,9 +1000,14 @@ namespace v2rayN.Forms
|
|||||||
this.Show();
|
this.Show();
|
||||||
this.WindowState = FormWindowState.Normal;
|
this.WindowState = FormWindowState.Normal;
|
||||||
this.Activate();
|
this.Activate();
|
||||||
//this.notifyIcon1.Visible = false;
|
|
||||||
this.ShowInTaskbar = true;
|
this.ShowInTaskbar = true;
|
||||||
|
//this.notifyIcon1.Visible = false;
|
||||||
this.txtMsgBox.ScrollToCaret();
|
this.txtMsgBox.ScrollToCaret();
|
||||||
|
//if (config.index >= 0 && config.index < lvServers.Items.Count)
|
||||||
|
//{
|
||||||
|
// lvServers.Items[config.index].Selected = true;
|
||||||
|
// lvServers.EnsureVisible(config.index); // workaround
|
||||||
|
//}
|
||||||
|
|
||||||
SetVisibleCore(true);
|
SetVisibleCore(true);
|
||||||
}
|
}
|
||||||
@@ -986,9 +1028,12 @@ namespace v2rayN.Forms
|
|||||||
#region 后台测速
|
#region 后台测速
|
||||||
|
|
||||||
private void SetTestResult(int k, string txt)
|
private void SetTestResult(int k, string txt)
|
||||||
|
{
|
||||||
|
if (k < lvServers.Items.Count)
|
||||||
{
|
{
|
||||||
config.vmess[k].testResult = txt;
|
config.vmess[k].testResult = txt;
|
||||||
lvServers.Items[k].SubItems[8].Text = txt;
|
lvServers.Items[k].SubItems["testResult"].Text = txt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private void ClearTestResult()
|
private void ClearTestResult()
|
||||||
{
|
{
|
||||||
@@ -1001,11 +1046,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
lvServers.Invoke((MethodInvoker)delegate
|
lvServers.Invoke((MethodInvoker)delegate
|
||||||
{
|
{
|
||||||
lvServers.SuspendLayout();
|
|
||||||
|
|
||||||
SetTestResult(index, msg);
|
SetTestResult(index, msg);
|
||||||
|
|
||||||
lvServers.ResumeLayout();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1020,20 +1061,19 @@ 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.BeginUpdate();
|
||||||
|
|
||||||
var indexStart = 9;
|
lvServers.Items[i].SubItems["todayDown"].Text = Utils.HumanFy(statistics[index].todayDown);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayDown);
|
lvServers.Items[i].SubItems["todayUp"].Text = Utils.HumanFy(statistics[index].todayUp);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].todayUp);
|
lvServers.Items[i].SubItems["totalDown"].Text = Utils.HumanFy(statistics[index].totalDown);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalDown);
|
lvServers.Items[i].SubItems["totalUp"].Text = Utils.HumanFy(statistics[index].totalUp);
|
||||||
lvServers.Items[i].SubItems[indexStart++].Text = Utils.HumanFy(statistics[index].totalUp);
|
|
||||||
|
|
||||||
lvServers.ResumeLayout();
|
lvServers.EndUpdate();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1080,7 +1120,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
//TODO: reload is not good.
|
//TODO: reload is not good.
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
LoadV2ray();
|
//LoadV2ray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void menuSelectAll_Click(object sender, EventArgs e)
|
private void menuSelectAll_Click(object sender, EventArgs e)
|
||||||
@@ -1094,58 +1134,41 @@ namespace v2rayN.Forms
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 系统代理相关
|
#region 系统代理相关
|
||||||
|
private void menuKeepClear_Click(object sender, EventArgs e)
|
||||||
private void menuCopyPACUrl_Click(object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
Utils.SetClipboardData(HttpProxyHandle.GetPacUrl());
|
SetListenerType(ESysProxyType.ForcedClear);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuNotEnabledHttp_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SetListenerType(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuGlobal_Click(object sender, EventArgs e)
|
private void menuGlobal_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(1);
|
SetListenerType(ESysProxyType.ForcedChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuGlobalPAC_Click(object sender, EventArgs e)
|
private void menuKeepNothing_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SetListenerType(2);
|
SetListenerType(ESysProxyType.Unchanged);
|
||||||
}
|
}
|
||||||
|
private void SetListenerType(ESysProxyType type)
|
||||||
private void menuKeep_Click(object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
SetListenerType(3);
|
config.sysProxyType = type;
|
||||||
}
|
|
||||||
|
|
||||||
private void menuKeepPAC_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SetListenerType(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetListenerType(int type)
|
|
||||||
{
|
|
||||||
config.listenerType = type;
|
|
||||||
ChangePACButtonStatus(type);
|
ChangePACButtonStatus(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChangePACButtonStatus(int type)
|
private void ChangePACButtonStatus(ESysProxyType type)
|
||||||
{
|
{
|
||||||
if (type != 0)
|
HttpProxyHandle.UpdateSysProxy(config, false);
|
||||||
{
|
//if (type != ListenerType.noHttpProxy)
|
||||||
HttpProxyHandle.RestartHttpAgent(config, false);
|
//{
|
||||||
}
|
// HttpProxyHandle.RestartHttpAgent(config, false);
|
||||||
else
|
//}
|
||||||
{
|
//else
|
||||||
HttpProxyHandle.CloseHttpAgent(config);
|
//{
|
||||||
}
|
// HttpProxyHandle.CloseHttpAgent(config);
|
||||||
|
//}
|
||||||
|
|
||||||
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 = ((int)type == k);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigHandler.SaveConfig(ref config, false);
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
@@ -1157,6 +1180,22 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
#region CheckUpdate
|
#region CheckUpdate
|
||||||
|
|
||||||
|
private void askToDownload(DownloadHandle downloadHandle, string url)
|
||||||
|
{
|
||||||
|
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
if (httpProxyTest() > 0)
|
||||||
|
{
|
||||||
|
int httpPort = config.GetLocalPort(Global.InboundHttp);
|
||||||
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
downloadHandle.DownloadFileAsync(url, webProxy, 600);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
downloadHandle.DownloadFileAsync(url, null, 600);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
private void tsbCheckUpdateN_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateN_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//System.Diagnostics.Process.Start(Global.UpdateUrl);
|
//System.Diagnostics.Process.Start(Global.UpdateUrl);
|
||||||
@@ -1168,20 +1207,12 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
AppendText(false, UIRes.I18N("MsgParsingV2rayCoreSuccessfully"));
|
AppendText(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "v2rayN"));
|
||||||
|
|
||||||
string url = args.Msg;
|
string url = args.Msg;
|
||||||
this.Invoke((MethodInvoker)(delegate
|
this.Invoke((MethodInvoker)(delegate
|
||||||
{
|
{
|
||||||
|
askToDownload(downloadHandle, url);
|
||||||
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
downloadHandle.DownloadFileAsync(config, url, null, -1);
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1197,8 +1228,17 @@ 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 = new Process
|
||||||
|
{
|
||||||
|
StartInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "v2rayUpgrade.exe",
|
||||||
|
Arguments = "\"" + fileName + "\"",
|
||||||
|
WorkingDirectory = Utils.StartupPath()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
process.Start();
|
||||||
if (process.Id > 0)
|
if (process.Id > 0)
|
||||||
{
|
{
|
||||||
menuExit_Click(null, null);
|
menuExit_Click(null, null);
|
||||||
@@ -1220,11 +1260,21 @@ namespace v2rayN.Forms
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore"));
|
AppendText(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN"));
|
||||||
downloadHandle.CheckUpdateAsync("v2rayN");
|
downloadHandle.CheckUpdateAsync("v2rayN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CheckUpdateCore("v2fly");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CheckUpdateCore("xray");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckUpdateCore(string type)
|
||||||
{
|
{
|
||||||
DownloadHandle downloadHandle = null;
|
DownloadHandle downloadHandle = null;
|
||||||
if (downloadHandle == null)
|
if (downloadHandle == null)
|
||||||
@@ -1234,20 +1284,12 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
AppendText(false, UIRes.I18N("MsgParsingV2rayCoreSuccessfully"));
|
AppendText(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "v2rayCore"));
|
||||||
|
|
||||||
string url = args.Msg;
|
string url = args.Msg;
|
||||||
this.Invoke((MethodInvoker)(delegate
|
this.Invoke((MethodInvoker)(delegate
|
||||||
{
|
{
|
||||||
|
askToDownload(downloadHandle, url);
|
||||||
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
downloadHandle.DownloadFileAsync(config, url, null, -1);
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1268,7 +1310,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
string fileName = downloadHandle.DownloadFileName;
|
string fileName = downloadHandle.DownloadFileName;
|
||||||
fileName = Utils.GetPath(fileName);
|
fileName = Utils.GetPath(fileName);
|
||||||
FileManager.ZipExtractToFile(fileName);
|
FileManager.ZipExtractToFile(fileName, config.ignoreGeoUpdateCore ? "geo" : "");
|
||||||
|
|
||||||
AppendText(false, UIRes.I18N("MsgUpdateV2rayCoreSuccessfullyMore"));
|
AppendText(false, UIRes.I18N("MsgUpdateV2rayCoreSuccessfullyMore"));
|
||||||
|
|
||||||
@@ -1293,54 +1335,8 @@ namespace v2rayN.Forms
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore"));
|
AppendText(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayCore"));
|
||||||
downloadHandle.CheckUpdateAsync("Core");
|
downloadHandle.CheckUpdateAsync(type);
|
||||||
}
|
|
||||||
|
|
||||||
private void tsbCheckUpdatePACList_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DownloadHandle pacListHandle = null;
|
|
||||||
if (pacListHandle == null)
|
|
||||||
{
|
|
||||||
pacListHandle = new DownloadHandle();
|
|
||||||
pacListHandle.UpdateCompleted += (sender2, args) =>
|
|
||||||
{
|
|
||||||
if (args.Success)
|
|
||||||
{
|
|
||||||
var result = args.Msg;
|
|
||||||
if (Utils.IsNullOrEmpty(result))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pacListHandle.GenPacFile(result);
|
|
||||||
|
|
||||||
AppendText(false, UIRes.I18N("MsgPACUpdateSuccessfully"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AppendText(false, UIRes.I18N("MsgPACUpdateFailed"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
pacListHandle.Error += (sender2, args) =>
|
|
||||||
{
|
|
||||||
AppendText(true, args.GetException().Message);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
AppendText(false, UIRes.I18N("MsgStartUpdatingPAC"));
|
|
||||||
pacListHandle.WebDownloadString(config.urlGFWList);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void tsbCheckClearPACList_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.WriteAllText(Utils.GetPath(Global.pacFILE), Utils.GetEmbedText(Global.BlankPacFileName), Encoding.UTF8);
|
|
||||||
AppendText(false, UIRes.I18N("MsgSimplifyPAC"));
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -1349,12 +1345,17 @@ 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 tsbV2rayWebsite_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start(Global.v2rayWebsiteUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
@@ -1374,7 +1375,7 @@ namespace v2rayN.Forms
|
|||||||
string result = Convert.ToString(e.UserState);
|
string result = Convert.ToString(e.UserState);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("NoValidQRcodeFound"));
|
UI.ShowWarning(UIRes.I18N("NoValidQRcodeFound"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1398,6 +1399,14 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateSubscriptionProcess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// the subscription update process
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateSubscriptionProcess()
|
||||||
{
|
{
|
||||||
AppendText(false, UIRes.I18N("MsgUpdateSubscriptionStart"));
|
AppendText(false, UIRes.I18N("MsgUpdateSubscriptionStart"));
|
||||||
|
|
||||||
@@ -1428,7 +1437,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")}");
|
||||||
@@ -1462,6 +1471,11 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
bool bShow = tsbQRCodeSwitch.Checked;
|
||||||
|
scMain.Panel2Collapsed = !bShow;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Language
|
#region Language
|
||||||
@@ -1478,15 +1492,14 @@ namespace v2rayN.Forms
|
|||||||
private void SetCurrentLanguage(string value)
|
private void SetCurrentLanguage(string value)
|
||||||
{
|
{
|
||||||
Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value);
|
Utils.RegWriteValue(Global.MyRegPath, Global.MyRegKeyLanguage, value);
|
||||||
Application.Restart();
|
//Application.Restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void tsbV2rayWebsite_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Process.Start(Global.v2rayWebsiteUrl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -119,151 +119,169 @@
|
|||||||
</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="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
||||||
<value>添加[VMess]服务器</value>
|
<value>添加[VMess]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuAddVlessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAddVlessServer.Text" xml:space="preserve">
|
||||||
|
<value>添加[VLESS]服务器</value>
|
||||||
|
</data>
|
||||||
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
|
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
|
||||||
<value>添加[Shadowsocks]服务器</value>
|
<value>添加[Shadowsocks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
||||||
<value>添加[Socks]服务器</value>
|
<value>添加[Socks]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuAddTrojanServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAddTrojanServer.Text" xml:space="preserve">
|
||||||
|
<value>添加[Trojan]服务器</value>
|
||||||
|
</data>
|
||||||
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
||||||
<value>添加自定义配置服务器</value>
|
<value>添加自定义配置服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<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="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen.Text" xml:space="preserve">
|
<data name="menuScanScreen.Text" xml:space="preserve">
|
||||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>275, 6</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveServer.Text" xml:space="preserve">
|
<data name="menuRemoveServer.Text" xml:space="preserve">
|
||||||
<value>移除所选服务器(多选) (Delete)</value>
|
<value>移除所选服务器(多选) (Delete)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
||||||
<value>移除重复的服务器</value>
|
<value>移除重复的服务器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<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="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
||||||
<value>设为活动服务器 (Enter)</value>
|
<value>设为活动服务器 (Enter)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>275, 6</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
<data name="menuMoveTop.Text" xml:space="preserve">
|
||||||
<value>上移至顶 (T)</value>
|
<value>上移至顶 (T)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
<data name="menuMoveUp.Text" xml:space="preserve">
|
||||||
<value>上移 (U)</value>
|
<value>上移 (U)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
<data name="menuMoveDown.Text" xml:space="preserve">
|
||||||
<value>下移 (D)</value>
|
<value>下移 (D)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
<value>下移至底 (B)</value>
|
<value>下移至底 (B)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
<data name="menuSelectAll.Text" xml:space="preserve">
|
||||||
<value>全选 (Ctrl+A)</value>
|
<value>全选 (Ctrl+A)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>275, 6</value>
|
<value>297, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuPingServer.Text" xml:space="preserve">
|
<data name="menuPingServer.Text" xml:space="preserve">
|
||||||
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuTcpingServer.Text" xml:space="preserve">
|
<data name="menuTcpingServer.Text" xml:space="preserve">
|
||||||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRealPingServer.Text" xml:space="preserve">
|
<data name="menuRealPingServer.Text" xml:space="preserve">
|
||||||
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSpeedServer.Text" xml:space="preserve">
|
<data name="menuSpeedServer.Text" xml:space="preserve">
|
||||||
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>300, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbTestMe.Text" xml:space="preserve">
|
||||||
|
<value>测试当前服务状态</value>
|
||||||
|
</data>
|
||||||
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>275, 6</value>
|
<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>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ClientConfig.Text" xml:space="preserve">
|
<data name="menuExport2ClientConfig.Text" xml:space="preserve">
|
||||||
<value>导出所选服务器为客户端配置</value>
|
<value>导出所选服务器为客户端配置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ServerConfig.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExport2ServerConfig.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ServerConfig.Text" xml:space="preserve">
|
<data name="menuExport2ServerConfig.Text" xml:space="preserve">
|
||||||
<value>导出所选服务器为服务端配置</value>
|
<value>导出所选服务器为服务端配置</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ShareUrl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExport2ShareUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2ShareUrl.Text" xml:space="preserve">
|
<data name="menuExport2ShareUrl.Text" xml:space="preserve">
|
||||||
<value>批量导出分享URL至剪贴板(多选) (Ctrl+C)</value>
|
<value>批量导出分享URL至剪贴板(多选) (Ctrl+C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2SubContent.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExport2SubContent.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>278, 22</value>
|
<value>300, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
||||||
<value>批量导出订阅内容至剪贴板(多选)</value>
|
<value>批量导出订阅内容至剪贴板(多选)</value>
|
||||||
@@ -275,7 +293,7 @@
|
|||||||
<value> 服务器 </value>
|
<value> 服务器 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>279, 534</value>
|
<value>301, 600</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>
|
<value>
|
||||||
@@ -294,41 +312,29 @@
|
|||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuNotEnabledHttp.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>340, 22</value>
|
<value>228, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuNotEnabledHttp.Text" xml:space="preserve">
|
<data name="menuKeepClear.Text" xml:space="preserve">
|
||||||
<value>关闭Http代理</value>
|
<value>清除系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>340, 22</value>
|
<value>228, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuGlobal.Text" xml:space="preserve">
|
<data name="menuGlobal.Text" xml:space="preserve">
|
||||||
<value>开启Http代理,并自动配置代理服务器(全局模式)</value>
|
<value>自动配置系统代理(全局模式)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuGlobalPAC.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>340, 22</value>
|
<value>228, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuGlobalPAC.Text" xml:space="preserve">
|
<data name="menuKeepNothing.Text" xml:space="preserve">
|
||||||
<value>开启PAC,并自动配置PAC(PAC模式)</value>
|
<value>不改变系统代理</value>
|
||||||
</data>
|
|
||||||
<data name="menuKeep.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>340, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeep.Text" xml:space="preserve">
|
|
||||||
<value>仅开启Http代理,不自动配置代理服务器(直连模式)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepPAC.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>340, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepPAC.Text" xml:space="preserve">
|
|
||||||
<value>仅开启PAC,不自动配置PAC</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||||
<value>Http代理</value>
|
<value>系统代理</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>195, 22</value>
|
<value>195, 22</value>
|
||||||
@@ -348,11 +354,11 @@
|
|||||||
<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="menuUpdateSubscriptions.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="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||||
<value>复制本地PAC网址</value>
|
<value>更新订阅</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>192, 6</value>
|
<value>192, 6</value>
|
||||||
@@ -393,16 +399,34 @@
|
|||||||
<data name="tsbSub.Text" xml:space="preserve">
|
<data name="tsbSub.Text" xml:space="preserve">
|
||||||
<value> 订阅 </value>
|
<value> 订阅 </value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbQRCodeSwitch.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>52, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
|
||||||
|
<value> 分享 </value>
|
||||||
|
</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>124, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
||||||
<value>参数设置</value>
|
<value>参数设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbRoutingSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>124, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbRoutingSetting.Text" xml:space="preserve">
|
||||||
|
<value>路由设置</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>61, 53</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSetting.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
|
||||||
YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd
|
||||||
QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
|
QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X
|
||||||
jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
|
jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY
|
||||||
6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
|
6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3
|
||||||
@@ -417,28 +441,22 @@
|
|||||||
<value> 重启服务 </value>
|
<value> 重启服务 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>232, 22</value>
|
<value>135, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
||||||
<value>v2rayN</value>
|
<value>v2rayN</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>232, 22</value>
|
<value>135, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
||||||
<value>v2rayCore</value>
|
<value>v2fly-Core</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdatePACList.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>232, 22</value>
|
<value>135, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdatePACList.Text" xml:space="preserve">
|
<data name="tsbCheckUpdateXrayCore.Text" xml:space="preserve">
|
||||||
<value>PAC</value>
|
<value>Xray-Core</value>
|
||||||
</data>
|
|
||||||
<data name="tsbCheckClearPACList.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>232, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckClearPACList.Text" xml:space="preserve">
|
|
||||||
<value>简化PAC (请设置Core路由)</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>85, 53</value>
|
<value>85, 53</value>
|
||||||
@@ -446,12 +464,12 @@
|
|||||||
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
||||||
<value> 检查更新 </value>
|
<value> 检查更新 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
|
||||||
<value>V2Ray 官网</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
<data name="tsbAbout.Text" xml:space="preserve">
|
||||||
<value>v2rayN 项目</value>
|
<value>v2rayN 项目</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
||||||
|
<value>V2Ray 官网</value>
|
||||||
|
</data>
|
||||||
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>69, 53</value>
|
<value>69, 53</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -467,10 +485,13 @@
|
|||||||
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="tsbClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/
|
||||||
GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
|
GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg==
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>76, 53</value>
|
||||||
|
</data>
|
||||||
<data name="tsbClose.Text" xml:space="preserve">
|
<data name="tsbClose.Text" xml:space="preserve">
|
||||||
<value> 关闭窗口 </value>
|
<value> 关闭窗口 </value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
314
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
314
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -33,12 +33,9 @@
|
|||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox();
|
||||||
this.cmblistenerType = new System.Windows.Forms.ComboBox();
|
|
||||||
this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox();
|
this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox();
|
||||||
this.chksniffingEnabled = new System.Windows.Forms.CheckBox();
|
this.chksniffingEnabled = new System.Windows.Forms.CheckBox();
|
||||||
this.txtremoteDNS = new System.Windows.Forms.TextBox();
|
|
||||||
this.label14 = new System.Windows.Forms.Label();
|
|
||||||
this.chkmuxEnabled = new System.Windows.Forms.CheckBox();
|
this.chkmuxEnabled = new System.Windows.Forms.CheckBox();
|
||||||
this.chkAllowIn2 = new System.Windows.Forms.CheckBox();
|
this.chkAllowIn2 = new System.Windows.Forms.CheckBox();
|
||||||
this.chkudpEnabled2 = new System.Windows.Forms.CheckBox();
|
this.chkudpEnabled2 = new System.Windows.Forms.CheckBox();
|
||||||
@@ -54,21 +51,9 @@
|
|||||||
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.linkDnsObjectDoc = new System.Windows.Forms.LinkLabel();
|
||||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
this.txtremoteDNS = new System.Windows.Forms.TextBox();
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
this.label14 = new System.Windows.Forms.Label();
|
||||||
this.txtUseragent = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
|
||||||
this.txtUserdirect = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPage5 = new System.Windows.Forms.TabPage();
|
|
||||||
this.txtUserblock = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPage8 = new System.Windows.Forms.TabPage();
|
|
||||||
this.cmbroutingMode = new System.Windows.Forms.ComboBox();
|
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnSetDefRountingRule = new System.Windows.Forms.Button();
|
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
|
||||||
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage6 = new System.Windows.Forms.TabPage();
|
this.tabPage6 = new System.Windows.Forms.TabPage();
|
||||||
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
||||||
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
||||||
@@ -84,17 +69,15 @@
|
|||||||
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.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
||||||
|
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
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();
|
||||||
this.chkAllowLANConn = new System.Windows.Forms.CheckBox();
|
this.chkAllowLANConn = new System.Windows.Forms.CheckBox();
|
||||||
this.txturlGFWList = new System.Windows.Forms.TextBox();
|
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
|
||||||
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
||||||
this.tabPage9 = new System.Windows.Forms.TabPage();
|
|
||||||
this.txtuserPacRule = new System.Windows.Forms.TextBox();
|
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
@@ -102,17 +85,8 @@
|
|||||||
this.tabPage1.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.tabPage2.SuspendLayout();
|
this.tabPage2.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.tabControl2.SuspendLayout();
|
|
||||||
this.tabPage3.SuspendLayout();
|
|
||||||
this.tabPage4.SuspendLayout();
|
|
||||||
this.tabPage5.SuspendLayout();
|
|
||||||
this.tabPage8.SuspendLayout();
|
|
||||||
this.panel3.SuspendLayout();
|
|
||||||
this.tabPage6.SuspendLayout();
|
this.tabPage6.SuspendLayout();
|
||||||
this.tabPage7.SuspendLayout();
|
this.tabPage7.SuspendLayout();
|
||||||
this.tabPage9.SuspendLayout();
|
|
||||||
this.panel4.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
@@ -130,7 +104,6 @@
|
|||||||
this.tabControl1.Controls.Add(this.tabPage2);
|
this.tabControl1.Controls.Add(this.tabPage2);
|
||||||
this.tabControl1.Controls.Add(this.tabPage6);
|
this.tabControl1.Controls.Add(this.tabPage6);
|
||||||
this.tabControl1.Controls.Add(this.tabPage7);
|
this.tabControl1.Controls.Add(this.tabPage7);
|
||||||
this.tabControl1.Controls.Add(this.tabPage9);
|
|
||||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||||
this.tabControl1.Name = "tabControl1";
|
this.tabControl1.Name = "tabControl1";
|
||||||
this.tabControl1.SelectedIndex = 0;
|
this.tabControl1.SelectedIndex = 0;
|
||||||
@@ -144,12 +117,9 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
this.groupBox1.Controls.Add(this.label16);
|
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
||||||
this.groupBox1.Controls.Add(this.cmblistenerType);
|
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
|
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
||||||
this.groupBox1.Controls.Add(this.txtremoteDNS);
|
|
||||||
this.groupBox1.Controls.Add(this.label14);
|
|
||||||
this.groupBox1.Controls.Add(this.chkmuxEnabled);
|
this.groupBox1.Controls.Add(this.chkmuxEnabled);
|
||||||
this.groupBox1.Controls.Add(this.chkAllowIn2);
|
this.groupBox1.Controls.Add(this.chkAllowIn2);
|
||||||
this.groupBox1.Controls.Add(this.chkudpEnabled2);
|
this.groupBox1.Controls.Add(this.chkudpEnabled2);
|
||||||
@@ -168,23 +138,11 @@
|
|||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
// label16
|
// chkdefAllowInsecure
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label16, "label16");
|
resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure");
|
||||||
this.label16.Name = "label16";
|
this.chkdefAllowInsecure.Name = "chkdefAllowInsecure";
|
||||||
//
|
this.chkdefAllowInsecure.UseVisualStyleBackColor = true;
|
||||||
// cmblistenerType
|
|
||||||
//
|
|
||||||
this.cmblistenerType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmblistenerType.FormattingEnabled = true;
|
|
||||||
this.cmblistenerType.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmblistenerType.Items"),
|
|
||||||
resources.GetString("cmblistenerType.Items1"),
|
|
||||||
resources.GetString("cmblistenerType.Items2"),
|
|
||||||
resources.GetString("cmblistenerType.Items3"),
|
|
||||||
resources.GetString("cmblistenerType.Items4")});
|
|
||||||
resources.ApplyResources(this.cmblistenerType, "cmblistenerType");
|
|
||||||
this.cmblistenerType.Name = "cmblistenerType";
|
|
||||||
//
|
//
|
||||||
// chksniffingEnabled2
|
// chksniffingEnabled2
|
||||||
//
|
//
|
||||||
@@ -198,16 +156,6 @@
|
|||||||
this.chksniffingEnabled.Name = "chksniffingEnabled";
|
this.chksniffingEnabled.Name = "chksniffingEnabled";
|
||||||
this.chksniffingEnabled.UseVisualStyleBackColor = true;
|
this.chksniffingEnabled.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// txtremoteDNS
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtremoteDNS, "txtremoteDNS");
|
|
||||||
this.txtremoteDNS.Name = "txtremoteDNS";
|
|
||||||
//
|
|
||||||
// label14
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label14, "label14");
|
|
||||||
this.label14.Name = "label14";
|
|
||||||
//
|
|
||||||
// chkmuxEnabled
|
// chkmuxEnabled
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkmuxEnabled, "chkmuxEnabled");
|
resources.ApplyResources(this.chkmuxEnabled, "chkmuxEnabled");
|
||||||
@@ -304,121 +252,29 @@
|
|||||||
//
|
//
|
||||||
// tabPage2
|
// tabPage2
|
||||||
//
|
//
|
||||||
this.tabPage2.Controls.Add(this.groupBox2);
|
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
||||||
|
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
||||||
|
this.tabPage2.Controls.Add(this.label14);
|
||||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||||
this.tabPage2.Name = "tabPage2";
|
this.tabPage2.Name = "tabPage2";
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox2
|
// linkDnsObjectDoc
|
||||||
//
|
//
|
||||||
this.groupBox2.Controls.Add(this.tabControl2);
|
resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc");
|
||||||
this.groupBox2.Controls.Add(this.panel3);
|
this.linkDnsObjectDoc.Name = "linkDnsObjectDoc";
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
this.linkDnsObjectDoc.TabStop = true;
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.linkDnsObjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDnsObjectDoc_LinkClicked);
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
//
|
||||||
// tabControl2
|
// txtremoteDNS
|
||||||
//
|
//
|
||||||
this.tabControl2.Controls.Add(this.tabPage3);
|
resources.ApplyResources(this.txtremoteDNS, "txtremoteDNS");
|
||||||
this.tabControl2.Controls.Add(this.tabPage4);
|
this.txtremoteDNS.Name = "txtremoteDNS";
|
||||||
this.tabControl2.Controls.Add(this.tabPage5);
|
|
||||||
this.tabControl2.Controls.Add(this.tabPage8);
|
|
||||||
resources.ApplyResources(this.tabControl2, "tabControl2");
|
|
||||||
this.tabControl2.Name = "tabControl2";
|
|
||||||
this.tabControl2.SelectedIndex = 0;
|
|
||||||
//
|
//
|
||||||
// tabPage3
|
// label14
|
||||||
//
|
//
|
||||||
this.tabPage3.Controls.Add(this.txtUseragent);
|
resources.ApplyResources(this.label14, "label14");
|
||||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
this.label14.Name = "label14";
|
||||||
this.tabPage3.Name = "tabPage3";
|
|
||||||
this.tabPage3.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// txtUseragent
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUseragent, "txtUseragent");
|
|
||||||
this.txtUseragent.Name = "txtUseragent";
|
|
||||||
//
|
|
||||||
// tabPage4
|
|
||||||
//
|
|
||||||
this.tabPage4.Controls.Add(this.txtUserdirect);
|
|
||||||
resources.ApplyResources(this.tabPage4, "tabPage4");
|
|
||||||
this.tabPage4.Name = "tabPage4";
|
|
||||||
this.tabPage4.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// txtUserdirect
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUserdirect, "txtUserdirect");
|
|
||||||
this.txtUserdirect.Name = "txtUserdirect";
|
|
||||||
//
|
|
||||||
// tabPage5
|
|
||||||
//
|
|
||||||
this.tabPage5.Controls.Add(this.txtUserblock);
|
|
||||||
resources.ApplyResources(this.tabPage5, "tabPage5");
|
|
||||||
this.tabPage5.Name = "tabPage5";
|
|
||||||
this.tabPage5.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// txtUserblock
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUserblock, "txtUserblock");
|
|
||||||
this.txtUserblock.Name = "txtUserblock";
|
|
||||||
//
|
|
||||||
// tabPage8
|
|
||||||
//
|
|
||||||
this.tabPage8.Controls.Add(this.cmbroutingMode);
|
|
||||||
resources.ApplyResources(this.tabPage8, "tabPage8");
|
|
||||||
this.tabPage8.Name = "tabPage8";
|
|
||||||
this.tabPage8.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbroutingMode
|
|
||||||
//
|
|
||||||
this.cmbroutingMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbroutingMode.FormattingEnabled = true;
|
|
||||||
this.cmbroutingMode.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbroutingMode.Items"),
|
|
||||||
resources.GetString("cmbroutingMode.Items1"),
|
|
||||||
resources.GetString("cmbroutingMode.Items2"),
|
|
||||||
resources.GetString("cmbroutingMode.Items3")});
|
|
||||||
resources.ApplyResources(this.cmbroutingMode, "cmbroutingMode");
|
|
||||||
this.cmbroutingMode.Name = "cmbroutingMode";
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.btnSetDefRountingRule);
|
|
||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
|
||||||
this.panel3.Controls.Add(this.cmbdomainStrategy);
|
|
||||||
this.panel3.Controls.Add(this.label15);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// btnSetDefRountingRule
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnSetDefRountingRule, "btnSetDefRountingRule");
|
|
||||||
this.btnSetDefRountingRule.Name = "btnSetDefRountingRule";
|
|
||||||
this.btnSetDefRountingRule.UseVisualStyleBackColor = true;
|
|
||||||
this.btnSetDefRountingRule.Click += new System.EventHandler(this.btnSetDefRountingRule_Click);
|
|
||||||
//
|
|
||||||
// labRoutingTips
|
|
||||||
//
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
|
||||||
//
|
|
||||||
// cmbdomainStrategy
|
|
||||||
//
|
|
||||||
this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbdomainStrategy.FormattingEnabled = true;
|
|
||||||
this.cmbdomainStrategy.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbdomainStrategy.Items"),
|
|
||||||
resources.GetString("cmbdomainStrategy.Items1"),
|
|
||||||
resources.GetString("cmbdomainStrategy.Items2")});
|
|
||||||
resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
|
|
||||||
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label15, "label15");
|
|
||||||
this.label15.Name = "label15";
|
|
||||||
//
|
//
|
||||||
// tabPage6
|
// tabPage6
|
||||||
//
|
//
|
||||||
@@ -507,17 +363,46 @@
|
|||||||
//
|
//
|
||||||
// tabPage7
|
// tabPage7
|
||||||
//
|
//
|
||||||
|
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
||||||
|
this.tabPage7.Controls.Add(this.cmbCoreType);
|
||||||
|
this.tabPage7.Controls.Add(this.label4);
|
||||||
|
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);
|
||||||
this.tabPage7.Controls.Add(this.chkAllowLANConn);
|
this.tabPage7.Controls.Add(this.chkAllowLANConn);
|
||||||
this.tabPage7.Controls.Add(this.txturlGFWList);
|
|
||||||
this.tabPage7.Controls.Add(this.label13);
|
|
||||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
this.tabPage7.Controls.Add(this.chkAutoRun);
|
||||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||||
this.tabPage7.Name = "tabPage7";
|
this.tabPage7.Name = "tabPage7";
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
this.tabPage7.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// chkIgnoreGeoUpdateCore
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkIgnoreGeoUpdateCore, "chkIgnoreGeoUpdateCore");
|
||||||
|
this.chkIgnoreGeoUpdateCore.Name = "chkIgnoreGeoUpdateCore";
|
||||||
|
this.chkIgnoreGeoUpdateCore.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// cmbCoreType
|
||||||
|
//
|
||||||
|
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType.FormattingEnabled = true;
|
||||||
|
this.cmbCoreType.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbCoreType.Items"),
|
||||||
|
resources.GetString("cmbCoreType.Items1")});
|
||||||
|
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
||||||
|
this.cmbCoreType.Name = "cmbCoreType";
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label4, "label4");
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
//
|
||||||
|
// chkKeepOlderDedupl
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl");
|
||||||
|
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
|
||||||
|
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// cbFreshrate
|
// cbFreshrate
|
||||||
//
|
//
|
||||||
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
@@ -542,47 +427,12 @@
|
|||||||
this.chkAllowLANConn.Name = "chkAllowLANConn";
|
this.chkAllowLANConn.Name = "chkAllowLANConn";
|
||||||
this.chkAllowLANConn.UseVisualStyleBackColor = true;
|
this.chkAllowLANConn.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// txturlGFWList
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txturlGFWList, "txturlGFWList");
|
|
||||||
this.txturlGFWList.Name = "txturlGFWList";
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label13, "label13");
|
|
||||||
this.label13.Name = "label13";
|
|
||||||
//
|
|
||||||
// chkAutoRun
|
// chkAutoRun
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkAutoRun, "chkAutoRun");
|
resources.ApplyResources(this.chkAutoRun, "chkAutoRun");
|
||||||
this.chkAutoRun.Name = "chkAutoRun";
|
this.chkAutoRun.Name = "chkAutoRun";
|
||||||
this.chkAutoRun.UseVisualStyleBackColor = true;
|
this.chkAutoRun.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// tabPage9
|
|
||||||
//
|
|
||||||
this.tabPage9.Controls.Add(this.txtuserPacRule);
|
|
||||||
this.tabPage9.Controls.Add(this.panel4);
|
|
||||||
resources.ApplyResources(this.tabPage9, "tabPage9");
|
|
||||||
this.tabPage9.Name = "tabPage9";
|
|
||||||
this.tabPage9.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// txtuserPacRule
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtuserPacRule, "txtuserPacRule");
|
|
||||||
this.txtuserPacRule.Name = "txtuserPacRule";
|
|
||||||
//
|
|
||||||
// panel4
|
|
||||||
//
|
|
||||||
this.panel4.Controls.Add(this.label4);
|
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
|
||||||
this.panel4.Name = "panel4";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
this.label4.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
@@ -618,24 +468,11 @@
|
|||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
this.groupBox1.PerformLayout();
|
this.groupBox1.PerformLayout();
|
||||||
this.tabPage2.ResumeLayout(false);
|
this.tabPage2.ResumeLayout(false);
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.tabPage2.PerformLayout();
|
||||||
this.tabControl2.ResumeLayout(false);
|
|
||||||
this.tabPage3.ResumeLayout(false);
|
|
||||||
this.tabPage3.PerformLayout();
|
|
||||||
this.tabPage4.ResumeLayout(false);
|
|
||||||
this.tabPage4.PerformLayout();
|
|
||||||
this.tabPage5.ResumeLayout(false);
|
|
||||||
this.tabPage5.PerformLayout();
|
|
||||||
this.tabPage8.ResumeLayout(false);
|
|
||||||
this.panel3.ResumeLayout(false);
|
|
||||||
this.panel3.PerformLayout();
|
|
||||||
this.tabPage6.ResumeLayout(false);
|
this.tabPage6.ResumeLayout(false);
|
||||||
this.tabPage6.PerformLayout();
|
this.tabPage6.PerformLayout();
|
||||||
this.tabPage7.ResumeLayout(false);
|
this.tabPage7.ResumeLayout(false);
|
||||||
this.tabPage7.PerformLayout();
|
this.tabPage7.PerformLayout();
|
||||||
this.tabPage9.ResumeLayout(false);
|
|
||||||
this.tabPage9.PerformLayout();
|
|
||||||
this.panel4.ResumeLayout(false);
|
|
||||||
this.panel2.ResumeLayout(false);
|
this.panel2.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
@@ -655,9 +492,7 @@
|
|||||||
private System.Windows.Forms.Panel panel1;
|
private System.Windows.Forms.Panel panel1;
|
||||||
private System.Windows.Forms.TabControl tabControl1;
|
private System.Windows.Forms.TabControl tabControl1;
|
||||||
private System.Windows.Forms.TabPage tabPage1;
|
private System.Windows.Forms.TabPage tabPage1;
|
||||||
private System.Windows.Forms.TabPage tabPage2;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
private System.Windows.Forms.Panel panel2;
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.ComboBox cmbprotocol;
|
private System.Windows.Forms.ComboBox cmbprotocol;
|
||||||
private System.Windows.Forms.Label label1;
|
private System.Windows.Forms.Label label1;
|
||||||
private System.Windows.Forms.ComboBox cmbprotocol2;
|
private System.Windows.Forms.ComboBox cmbprotocol2;
|
||||||
@@ -666,14 +501,6 @@
|
|||||||
private System.Windows.Forms.CheckBox chkudpEnabled2;
|
private System.Windows.Forms.CheckBox chkudpEnabled2;
|
||||||
private System.Windows.Forms.CheckBox chkAllowIn2;
|
private System.Windows.Forms.CheckBox chkAllowIn2;
|
||||||
private System.Windows.Forms.CheckBox chkmuxEnabled;
|
private System.Windows.Forms.CheckBox chkmuxEnabled;
|
||||||
private System.Windows.Forms.TabControl tabControl2;
|
|
||||||
private System.Windows.Forms.TabPage tabPage3;
|
|
||||||
private System.Windows.Forms.TabPage tabPage4;
|
|
||||||
private System.Windows.Forms.Label labRoutingTips;
|
|
||||||
private System.Windows.Forms.TextBox txtUseragent;
|
|
||||||
private System.Windows.Forms.TabPage tabPage5;
|
|
||||||
private System.Windows.Forms.TextBox txtUserdirect;
|
|
||||||
private System.Windows.Forms.TextBox txtUserblock;
|
|
||||||
private System.Windows.Forms.TabPage tabPage6;
|
private System.Windows.Forms.TabPage tabPage6;
|
||||||
private System.Windows.Forms.TextBox txtKcpmtu;
|
private System.Windows.Forms.TextBox txtKcpmtu;
|
||||||
private System.Windows.Forms.Label label6;
|
private System.Windows.Forms.Label label6;
|
||||||
@@ -690,27 +517,20 @@
|
|||||||
private System.Windows.Forms.CheckBox chkKcpcongestion;
|
private System.Windows.Forms.CheckBox chkKcpcongestion;
|
||||||
private System.Windows.Forms.TabPage tabPage7;
|
private System.Windows.Forms.TabPage tabPage7;
|
||||||
private System.Windows.Forms.CheckBox chkAutoRun;
|
private System.Windows.Forms.CheckBox chkAutoRun;
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
private System.Windows.Forms.TextBox txturlGFWList;
|
|
||||||
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
||||||
private System.Windows.Forms.TextBox txtremoteDNS;
|
|
||||||
private System.Windows.Forms.Label label14;
|
|
||||||
private System.Windows.Forms.Panel panel3;
|
|
||||||
private System.Windows.Forms.ComboBox cmbdomainStrategy;
|
|
||||||
private System.Windows.Forms.Label label15;
|
|
||||||
private System.Windows.Forms.ComboBox cmbroutingMode;
|
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled2;
|
private System.Windows.Forms.CheckBox chksniffingEnabled2;
|
||||||
private System.Windows.Forms.Button btnSetDefRountingRule;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableStatistics;
|
private System.Windows.Forms.CheckBox chkEnableStatistics;
|
||||||
private System.Windows.Forms.ComboBox cbFreshrate;
|
private System.Windows.Forms.ComboBox cbFreshrate;
|
||||||
private System.Windows.Forms.Label lbFreshrate;
|
private System.Windows.Forms.Label lbFreshrate;
|
||||||
private System.Windows.Forms.Label label16;
|
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
||||||
private System.Windows.Forms.ComboBox cmblistenerType;
|
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
|
||||||
private System.Windows.Forms.TabPage tabPage8;
|
private System.Windows.Forms.TabPage tabPage2;
|
||||||
private System.Windows.Forms.TabPage tabPage9;
|
private System.Windows.Forms.LinkLabel linkDnsObjectDoc;
|
||||||
private System.Windows.Forms.TextBox txtuserPacRule;
|
private System.Windows.Forms.TextBox txtremoteDNS;
|
||||||
private System.Windows.Forms.Panel panel4;
|
private System.Windows.Forms.Label label14;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType;
|
||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.CheckBox chkIgnoreGeoUpdateCore;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,8 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.HttpProxyHandler;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -17,13 +19,9 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
InitBase();
|
InitBase();
|
||||||
|
|
||||||
InitRouting();
|
|
||||||
|
|
||||||
InitKCP();
|
InitKCP();
|
||||||
|
|
||||||
InitGUI();
|
InitGUI();
|
||||||
|
|
||||||
InitUserPAC();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -67,24 +65,10 @@ namespace v2rayN.Forms
|
|||||||
//remoteDNS
|
//remoteDNS
|
||||||
txtremoteDNS.Text = config.remoteDNS;
|
txtremoteDNS.Text = config.remoteDNS;
|
||||||
|
|
||||||
cmblistenerType.SelectedIndex = config.listenerType;
|
|
||||||
|
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化路由设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitRouting()
|
|
||||||
{
|
|
||||||
//路由
|
|
||||||
cmbdomainStrategy.Text = config.domainStrategy;
|
|
||||||
int routingMode = 0;
|
|
||||||
int.TryParse(config.routingMode, out routingMode);
|
|
||||||
cmbroutingMode.SelectedIndex = routingMode;
|
|
||||||
|
|
||||||
txtUseragent.Text = Utils.List2String(config.useragent, true);
|
|
||||||
txtUserdirect.Text = Utils.List2String(config.userdirect, true);
|
|
||||||
txtUserblock.Text = Utils.List2String(config.userblock, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 初始化KCP设置
|
/// 初始化KCP设置
|
||||||
@@ -108,17 +92,11 @@ namespace v2rayN.Forms
|
|||||||
//开机自动启动
|
//开机自动启动
|
||||||
chkAutoRun.Checked = Utils.IsAutoRun();
|
chkAutoRun.Checked = Utils.IsAutoRun();
|
||||||
|
|
||||||
//自定义GFWList
|
|
||||||
txturlGFWList.Text = config.urlGFWList;
|
|
||||||
|
|
||||||
chkAllowLANConn.Checked = config.allowLANConn;
|
chkAllowLANConn.Checked = config.allowLANConn;
|
||||||
|
chkEnableStatistics.Checked = config.enableStatistics;
|
||||||
|
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
||||||
|
|
||||||
|
ComboItem[] cbSource = new ComboItem[]
|
||||||
var enableStatistics = config.enableStatistics;
|
|
||||||
chkEnableStatistics.Checked = enableStatistics;
|
|
||||||
|
|
||||||
|
|
||||||
var 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")},
|
||||||
@@ -142,13 +120,9 @@ namespace v2rayN.Forms
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
||||||
|
cmbCoreType.SelectedIndex = (int)config.coreType;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitUserPAC()
|
|
||||||
{
|
|
||||||
txtuserPacRule.Text = Utils.List2String(config.userPacRule, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (SaveBase() != 0)
|
if (SaveBase() != 0)
|
||||||
@@ -156,10 +130,6 @@ namespace v2rayN.Forms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SaveRouting() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SaveKCP() != 0)
|
if (SaveKCP() != 0)
|
||||||
{
|
{
|
||||||
@@ -171,18 +141,13 @@ namespace v2rayN.Forms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SaveUserPAC() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ConfigHandler.SaveConfig(ref config) == 0)
|
if (ConfigHandler.SaveConfig(ref config) == 0)
|
||||||
{
|
{
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,34 +228,13 @@ namespace v2rayN.Forms
|
|||||||
//remoteDNS
|
//remoteDNS
|
||||||
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
||||||
|
|
||||||
config.listenerType = cmblistenerType.SelectedIndex;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
config.defAllowInsecure = chkdefAllowInsecure.Checked;
|
||||||
/// 保存路由设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveRouting()
|
|
||||||
{
|
|
||||||
//路由
|
|
||||||
string domainStrategy = cmbdomainStrategy.Text;
|
|
||||||
string routingMode = cmbroutingMode.SelectedIndex.ToString();
|
|
||||||
|
|
||||||
string useragent = txtUseragent.Text.TrimEx();
|
|
||||||
string userdirect = txtUserdirect.Text.TrimEx();
|
|
||||||
string userblock = txtUserblock.Text.TrimEx();
|
|
||||||
|
|
||||||
config.domainStrategy = domainStrategy;
|
|
||||||
config.routingMode = routingMode;
|
|
||||||
|
|
||||||
config.useragent = Utils.String2List(useragent);
|
|
||||||
config.userdirect = Utils.String2List(userdirect);
|
|
||||||
config.userblock = Utils.String2List(userblock);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保存KCP设置
|
/// 保存KCP设置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -335,36 +279,19 @@ namespace v2rayN.Forms
|
|||||||
//开机自动启动
|
//开机自动启动
|
||||||
Utils.SetAutoRun(chkAutoRun.Checked);
|
Utils.SetAutoRun(chkAutoRun.Checked);
|
||||||
|
|
||||||
//自定义GFWList
|
|
||||||
config.urlGFWList = txturlGFWList.Text.TrimEx();
|
|
||||||
|
|
||||||
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)
|
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
||||||
//{
|
config.coreType = (ECoreType)cmbCoreType.SelectedIndex;
|
||||||
// /// https://stackoverflow.com/questions/779405/how-do-i-restart-my-c-sharp-winform-application
|
|
||||||
// // Shut down the current app instance.
|
|
||||||
// Application.Exit();
|
|
||||||
|
|
||||||
// // Restart the app passing "/restart [processId]" as cmd line args
|
|
||||||
// Process.Start(Application.ExecutablePath, "/restart " + Process.GetCurrentProcess().Id);
|
|
||||||
//}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int SaveUserPAC()
|
|
||||||
{
|
|
||||||
string userPacRule = txtuserPacRule.Text.TrimEx();
|
|
||||||
userPacRule = userPacRule.Replace("\"", "");
|
|
||||||
|
|
||||||
config.userPacRule = Utils.String2List(userPacRule);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
@@ -382,66 +309,9 @@ namespace v2rayN.Forms
|
|||||||
chkudpEnabled2.Enabled = blAllow2;
|
chkudpEnabled2.Enabled = blAllow2;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnSetDefRountingRule_Click(object sender, EventArgs e)
|
private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
{
|
{
|
||||||
txtUseragent.Text = Utils.GetEmbedText(Global.CustomRoutingFileName + Global.agentTag);
|
System.Diagnostics.Process.Start("https://www.v2fly.org/config/dns.html#dnsobject");
|
||||||
txtUserdirect.Text = Utils.GetEmbedText(Global.CustomRoutingFileName + Global.directTag);
|
|
||||||
txtUserblock.Text = Utils.GetEmbedText(Global.CustomRoutingFileName + Global.blockTag);
|
|
||||||
cmbroutingMode.SelectedIndex = 3;
|
|
||||||
|
|
||||||
var lstUrl = new List<string>();
|
|
||||||
lstUrl.Add(Global.CustomRoutingListUrl + Global.agentTag);
|
|
||||||
lstUrl.Add(Global.CustomRoutingListUrl + Global.directTag);
|
|
||||||
lstUrl.Add(Global.CustomRoutingListUrl + Global.blockTag);
|
|
||||||
|
|
||||||
var lstTxt = new List<TextBox>();
|
|
||||||
lstTxt.Add(txtUseragent);
|
|
||||||
lstTxt.Add(txtUserdirect);
|
|
||||||
lstTxt.Add(txtUserblock);
|
|
||||||
|
|
||||||
for (int k = 0; k < lstUrl.Count; k++)
|
|
||||||
{
|
|
||||||
var txt = lstTxt[k];
|
|
||||||
DownloadHandle downloadHandle = new DownloadHandle();
|
|
||||||
downloadHandle.UpdateCompleted += (sender2, args) =>
|
|
||||||
{
|
|
||||||
if (args.Success)
|
|
||||||
{
|
|
||||||
var result = args.Msg;
|
|
||||||
if (Utils.IsNullOrEmpty(result))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
txt.Text = result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AppendText(false, args.Msg);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
downloadHandle.Error += (sender2, args) =>
|
|
||||||
{
|
|
||||||
AppendText(true, args.GetException().Message);
|
|
||||||
};
|
|
||||||
|
|
||||||
downloadHandle.WebDownloadString(lstUrl[k]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void AppendText(bool notify, string text)
|
|
||||||
{
|
|
||||||
labRoutingTips.Text = text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ComboItem
|
|
||||||
{
|
|
||||||
public int ID
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
public string Text
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -121,26 +121,11 @@
|
|||||||
<value>取消(&C)</value>
|
<value>取消(&C)</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>53, 12</value>
|
<value>336, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label16.Text" xml:space="preserve">
|
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
||||||
<value>Http代理</value>
|
<value>底层传输安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
||||||
</data>
|
|
||||||
<data name="cmblistenerType.Items" xml:space="preserve">
|
|
||||||
<value>关闭Http代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmblistenerType.Items1" xml:space="preserve">
|
|
||||||
<value>开启Http代理,并自动配置代理服务器(全局模式)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmblistenerType.Items2" xml:space="preserve">
|
|
||||||
<value>开启PAC,并自动配置PAC(PAC模式)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmblistenerType.Items3" xml:space="preserve">
|
|
||||||
<value>仅开启Http代理,不自动配置代理服务器(直连模式)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmblistenerType.Items4" xml:space="preserve">
|
|
||||||
<value>仅开启PAC,不自动配置PAC</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>96, 16</value>
|
<value>96, 16</value>
|
||||||
@@ -154,12 +139,6 @@
|
|||||||
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
||||||
<value>开启流量探测</value>
|
<value>开启流量探测</value>
|
||||||
</data>
|
</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">
|
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
||||||
<value>开启Mux多路复用(默认开启)</value>
|
<value>开启Mux多路复用(默认开启)</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -211,113 +190,57 @@
|
|||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>本地监听端口</value>
|
<value>本地监听端口</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>648, 437</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value> Core:基础设置 </value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUseragent.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>628, 449</value>
|
<value>161, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
||||||
<value>634, 455</value>
|
<value>支持填写DnsObject,JSON格式</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value> 1.代理的Domain或IP </value>
|
<value>191, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUserdirect.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label14.Text" xml:space="preserve">
|
||||||
<value>628, 449</value>
|
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>634, 455</value>
|
<value>654, 443</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">
|
|
||||||
<value>全局</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbroutingMode.Items1" xml:space="preserve">
|
|
||||||
<value>绕过局域网地址</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbroutingMode.Items2" xml:space="preserve">
|
|
||||||
<value>绕过大陆地址</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbroutingMode.Items3" xml:space="preserve">
|
|
||||||
<value>绕过局域网及大陆地址</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbroutingMode.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbroutingMode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>244, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage8.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 455</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage8.Text" xml:space="preserve">
|
|
||||||
<value> 4.预定义规则 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 89</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>642, 481</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnSetDefRountingRule.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<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>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="labRoutingTips.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>5, 49</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>383, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
|
||||||
<value>*设置的规则,用逗号(,)隔开;支持Domain(纯字符串/正则/子域名)和IP</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 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>
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
<value> Core:路由设置 </value>
|
<value> Core:DNS设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage6.Text" xml:space="preserve">
|
<data name="tabPage6.Text" xml:space="preserve">
|
||||||
<value> Core:KCP设置 </value>
|
<value> Core:KCP设置 </value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>150, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
||||||
|
<value>更新Core时忽略Geo文件</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>Core类型</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>156, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||||
|
<value>去重时保留序号较小的项</value>
|
||||||
|
</data>
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>77, 12</value>
|
<value>77, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -325,10 +248,10 @@
|
|||||||
<value>统计刷新频率</value>
|
<value>统计刷新频率</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>384, 16</value>
|
<value>372, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>144, 16</value>
|
<value>144, 16</value>
|
||||||
@@ -336,30 +259,30 @@
|
|||||||
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
||||||
<value>允许来自局域网的连接</value>
|
<value>允许来自局域网的连接</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>自定义GFWList地址(不需自定义请填空白)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>180, 16</value>
|
<value>180, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
<data name="chkAutoRun.Text" xml:space="preserve">
|
||||||
<value>开机自动启动(可能会不成功)</value>
|
<value>开机自动启动(可能会不成功)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</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="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>*设置用户PAC规则,用逗号(,)隔开</value>
|
<value>662, 469</value>
|
||||||
</data>
|
|
||||||
<data name="tabPage9.Text" xml:space="preserve">
|
|
||||||
<value> 用户PAC设置 </value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
<value>确定(&O)</value>
|
<value>确定(&O)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 479</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>662, 539</value>
|
||||||
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>参数设置</value>
|
<value>参数设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
10
v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs
generated
10
v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs
generated
@@ -31,7 +31,6 @@
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl));
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
this.txtUrl = new System.Windows.Forms.TextBox();
|
||||||
this.picQRCode = new System.Windows.Forms.PictureBox();
|
this.picQRCode = new System.Windows.Forms.PictureBox();
|
||||||
this.chkShow = new System.Windows.Forms.CheckBox();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
@@ -47,20 +46,12 @@
|
|||||||
this.picQRCode.Name = "picQRCode";
|
this.picQRCode.Name = "picQRCode";
|
||||||
this.picQRCode.TabStop = false;
|
this.picQRCode.TabStop = false;
|
||||||
//
|
//
|
||||||
// chkShow
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkShow, "chkShow");
|
|
||||||
this.chkShow.Name = "chkShow";
|
|
||||||
this.chkShow.UseVisualStyleBackColor = true;
|
|
||||||
this.chkShow.CheckedChanged += new System.EventHandler(this.chkShow_CheckedChanged);
|
|
||||||
//
|
|
||||||
// QRCodeControl
|
// QRCodeControl
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.picQRCode);
|
this.Controls.Add(this.picQRCode);
|
||||||
this.Controls.Add(this.txtUrl);
|
this.Controls.Add(this.txtUrl);
|
||||||
this.Controls.Add(this.chkShow);
|
|
||||||
this.Name = "QRCodeControl";
|
this.Name = "QRCodeControl";
|
||||||
this.Load += new System.EventHandler(this.QRCodeControl_Load);
|
this.Load += new System.EventHandler(this.QRCodeControl_Load);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
||||||
@@ -73,6 +64,5 @@
|
|||||||
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
private System.Windows.Forms.TextBox txtUrl;
|
||||||
private System.Windows.Forms.PictureBox picQRCode;
|
private System.Windows.Forms.PictureBox picQRCode;
|
||||||
private System.Windows.Forms.CheckBox chkShow;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
private void QRCodeControl_Load(object sender, System.EventArgs e)
|
private void QRCodeControl_Load(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
chkShow_CheckedChanged(null, null);
|
|
||||||
txtUrl.MouseUp += txtUrl_MouseUp;
|
txtUrl.MouseUp += txtUrl_MouseUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,23 +24,16 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (Index >= 0)
|
if (Index >= 0)
|
||||||
{
|
{
|
||||||
string url = ConfigHandler.GetVmessQRCode(config, Index);
|
string url = ShareHandler.GetShareUrl(config, Index);
|
||||||
if (Utils.IsNullOrEmpty(url))
|
if (Utils.IsNullOrEmpty(url))
|
||||||
{
|
{
|
||||||
picQRCode.Image = null;
|
picQRCode.Image = null;
|
||||||
txtUrl.Text = string.Empty;
|
txtUrl.Text = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
picQRCode.Image = QRCodeHelper.GetQRCode(url);
|
|
||||||
txtUrl.Text = url;
|
txtUrl.Text = url;
|
||||||
|
picQRCode.Image = QRCodeHelper.GetQRCode(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void chkShow_CheckedChanged(object sender, System.EventArgs e)
|
|
||||||
{
|
|
||||||
picQRCode.Visible =
|
|
||||||
txtUrl.Visible = chkShow.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,106 +117,76 @@
|
|||||||
<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" />
|
|
||||||
<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" />
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkShow.Text" xml:space="preserve">
|
|
||||||
<value>Sharing panel</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 name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>QRCodeControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 355</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" />
|
<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">
|
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Bottom</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<value>24</value>
|
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
</data>
|
<value>0, 371</value>
|
||||||
<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>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</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">
|
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>356, 70</value>
|
<value>356, 70</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkShow.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>25</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name=">>txtUrl.Name" xml:space="preserve">
|
||||||
<value>6, 12</value>
|
<value>txtUrl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkShow.AutoSize" type="System.Boolean, mscorlib">
|
<data name=">>txtUrl.Type" xml:space="preserve">
|
||||||
<value>True</value>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</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, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 371</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=">>picQRCode.Name" xml:space="preserve">
|
||||||
|
<value>picQRCode</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>
|
||||||
|
<data name=">>picQRCode.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>356, 441</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>QRCodeControl</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>
|
||||||
</root>
|
</root>
|
||||||
@@ -117,7 +117,4 @@
|
|||||||
<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="chkShow.Text" xml:space="preserve">
|
|
||||||
<value>显示分享内容</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
234
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs
generated
Normal file
234
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs
generated
Normal file
@@ -0,0 +1,234 @@
|
|||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class RoutingSettingDetailsForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingDetailsForm));
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
|
this.clbProtocol = new System.Windows.Forms.CheckedListBox();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.txtPort = new System.Windows.Forms.TextBox();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.labRoutingTips = new System.Windows.Forms.Label();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
||||||
|
this.txtRemarks = new System.Windows.Forms.TextBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.txtIP = new System.Windows.Forms.TextBox();
|
||||||
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.txtDomain = new System.Windows.Forms.TextBox();
|
||||||
|
this.panel3.SuspendLayout();
|
||||||
|
this.panel4.SuspendLayout();
|
||||||
|
this.panel2.SuspendLayout();
|
||||||
|
this.groupBox2.SuspendLayout();
|
||||||
|
this.groupBox1.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
//
|
||||||
|
// panel3
|
||||||
|
//
|
||||||
|
this.panel3.Controls.Add(this.clbProtocol);
|
||||||
|
this.panel3.Controls.Add(this.label3);
|
||||||
|
this.panel3.Controls.Add(this.txtPort);
|
||||||
|
this.panel3.Controls.Add(this.label1);
|
||||||
|
this.panel3.Controls.Add(this.labRoutingTips);
|
||||||
|
this.panel3.Controls.Add(this.label4);
|
||||||
|
this.panel3.Controls.Add(this.cmbOutboundTag);
|
||||||
|
this.panel3.Controls.Add(this.txtRemarks);
|
||||||
|
this.panel3.Controls.Add(this.label2);
|
||||||
|
resources.ApplyResources(this.panel3, "panel3");
|
||||||
|
this.panel3.Name = "panel3";
|
||||||
|
//
|
||||||
|
// clbProtocol
|
||||||
|
//
|
||||||
|
this.clbProtocol.CheckOnClick = true;
|
||||||
|
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
||||||
|
this.clbProtocol.FormattingEnabled = true;
|
||||||
|
this.clbProtocol.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("clbProtocol.Items"),
|
||||||
|
resources.GetString("clbProtocol.Items1"),
|
||||||
|
resources.GetString("clbProtocol.Items2")});
|
||||||
|
this.clbProtocol.MultiColumn = true;
|
||||||
|
this.clbProtocol.Name = "clbProtocol";
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
|
// txtPort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtPort, "txtPort");
|
||||||
|
this.txtPort.Name = "txtPort";
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label1, "label1");
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
//
|
||||||
|
// labRoutingTips
|
||||||
|
//
|
||||||
|
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
||||||
|
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
||||||
|
this.labRoutingTips.Name = "labRoutingTips";
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label4, "label4");
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
//
|
||||||
|
// cmbOutboundTag
|
||||||
|
//
|
||||||
|
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbOutboundTag.FormattingEnabled = true;
|
||||||
|
this.cmbOutboundTag.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbOutboundTag.Items"),
|
||||||
|
resources.GetString("cmbOutboundTag.Items1"),
|
||||||
|
resources.GetString("cmbOutboundTag.Items2")});
|
||||||
|
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
||||||
|
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
||||||
|
//
|
||||||
|
// txtRemarks
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
||||||
|
this.txtRemarks.Name = "txtRemarks";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label2, "label2");
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
//
|
||||||
|
// panel4
|
||||||
|
//
|
||||||
|
this.panel4.Controls.Add(this.btnClose);
|
||||||
|
this.panel4.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panel4, "panel4");
|
||||||
|
this.panel4.Name = "panel4";
|
||||||
|
//
|
||||||
|
// btnClose
|
||||||
|
//
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.Name = "btnClose";
|
||||||
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
|
//
|
||||||
|
// btnOK
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnOK, "btnOK");
|
||||||
|
this.btnOK.Name = "btnOK";
|
||||||
|
this.btnOK.UseVisualStyleBackColor = true;
|
||||||
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
this.panel2.Controls.Add(this.groupBox2);
|
||||||
|
this.panel2.Controls.Add(this.groupBox1);
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
//
|
||||||
|
// groupBox2
|
||||||
|
//
|
||||||
|
this.groupBox2.Controls.Add(this.txtIP);
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
|
this.groupBox2.Name = "groupBox2";
|
||||||
|
this.groupBox2.TabStop = false;
|
||||||
|
//
|
||||||
|
// txtIP
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtIP, "txtIP");
|
||||||
|
this.txtIP.Name = "txtIP";
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
this.groupBox1.Controls.Add(this.txtDomain);
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
|
this.groupBox1.Name = "groupBox1";
|
||||||
|
this.groupBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// txtDomain
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtDomain, "txtDomain");
|
||||||
|
this.txtDomain.Name = "txtDomain";
|
||||||
|
//
|
||||||
|
// RoutingSettingDetailsForm
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this, "$this");
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.CancelButton = this.btnClose;
|
||||||
|
this.Controls.Add(this.panel2);
|
||||||
|
this.Controls.Add(this.panel4);
|
||||||
|
this.Controls.Add(this.panel3);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Name = "RoutingSettingDetailsForm";
|
||||||
|
this.Load += new System.EventHandler(this.RoutingSettingDetailsForm_Load);
|
||||||
|
this.panel3.ResumeLayout(false);
|
||||||
|
this.panel3.PerformLayout();
|
||||||
|
this.panel4.ResumeLayout(false);
|
||||||
|
this.panel2.ResumeLayout(false);
|
||||||
|
this.groupBox2.ResumeLayout(false);
|
||||||
|
this.groupBox2.PerformLayout();
|
||||||
|
this.groupBox1.ResumeLayout(false);
|
||||||
|
this.groupBox1.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Panel panel3;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.ComboBox cmbOutboundTag;
|
||||||
|
private System.Windows.Forms.TextBox txtRemarks;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.Panel panel4;
|
||||||
|
private System.Windows.Forms.Button btnClose;
|
||||||
|
private System.Windows.Forms.Button btnOK;
|
||||||
|
private System.Windows.Forms.Panel panel2;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
|
private System.Windows.Forms.TextBox txtDomain;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox2;
|
||||||
|
private System.Windows.Forms.TextBox txtIP;
|
||||||
|
private System.Windows.Forms.Label labRoutingTips;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.TextBox txtPort;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.CheckedListBox clbProtocol;
|
||||||
|
}
|
||||||
|
}
|
||||||
131
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs
Normal file
131
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class RoutingSettingDetailsForm : BaseForm
|
||||||
|
{
|
||||||
|
public int EditIndex
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
protected RulesItem routingItem = null;
|
||||||
|
|
||||||
|
public RoutingSettingDetailsForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RoutingSettingDetailsForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (EditIndex >= 0)
|
||||||
|
{
|
||||||
|
routingItem = config.rules[EditIndex];
|
||||||
|
BindingData();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
routingItem = new RulesItem();
|
||||||
|
ClearBind();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EndBindingData()
|
||||||
|
{
|
||||||
|
if (routingItem != null)
|
||||||
|
{
|
||||||
|
routingItem.remarks = txtRemarks.Text.TrimEx();
|
||||||
|
routingItem.port = txtPort.Text.TrimEx();
|
||||||
|
routingItem.outboundTag = cmbOutboundTag.Text;
|
||||||
|
routingItem.domain = Utils.String2List(txtDomain.Text);
|
||||||
|
routingItem.ip = Utils.String2List(txtIP.Text);
|
||||||
|
|
||||||
|
var protocol = new List<string>();
|
||||||
|
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
||||||
|
{
|
||||||
|
if (clbProtocol.GetItemChecked(i))
|
||||||
|
{
|
||||||
|
protocol.Add(clbProtocol.Items[i].ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
routingItem.protocol = protocol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void BindingData()
|
||||||
|
{
|
||||||
|
if (routingItem != null)
|
||||||
|
{
|
||||||
|
txtRemarks.Text = routingItem.remarks ?? string.Empty;
|
||||||
|
txtPort.Text = routingItem.port ?? string.Empty;
|
||||||
|
cmbOutboundTag.Text = routingItem.outboundTag;
|
||||||
|
txtDomain.Text = Utils.List2String(routingItem.domain, true);
|
||||||
|
txtIP.Text = Utils.List2String(routingItem.ip, true);
|
||||||
|
|
||||||
|
if (routingItem.protocol != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
||||||
|
{
|
||||||
|
if (routingItem.protocol.Contains(clbProtocol.Items[i].ToString()))
|
||||||
|
{
|
||||||
|
clbProtocol.SetItemChecked(i, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ClearBind()
|
||||||
|
{
|
||||||
|
txtRemarks.Text = string.Empty;
|
||||||
|
txtPort.Text = string.Empty;
|
||||||
|
cmbOutboundTag.Text = Global.agentTag;
|
||||||
|
txtDomain.Text = string.Empty;
|
||||||
|
txtIP.Text = string.Empty;
|
||||||
|
}
|
||||||
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
EndBindingData();
|
||||||
|
var hasRule = false;
|
||||||
|
if (routingItem.domain != null && routingItem.domain.Count > 0)
|
||||||
|
{
|
||||||
|
hasRule = true;
|
||||||
|
}
|
||||||
|
if (routingItem.ip != null && routingItem.ip.Count > 0)
|
||||||
|
{
|
||||||
|
hasRule = true;
|
||||||
|
}
|
||||||
|
if (routingItem.protocol != null && routingItem.protocol.Count > 0)
|
||||||
|
{
|
||||||
|
hasRule = true;
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(routingItem.port))
|
||||||
|
{
|
||||||
|
hasRule = true;
|
||||||
|
}
|
||||||
|
if (!hasRule)
|
||||||
|
{
|
||||||
|
UI.ShowWarning(string.Format(UIRes.I18N("RoutingRuleDetailRequiredTips"), "Port/Protocol/Domain/IP"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ConfigHandler.AddRoutingRule(ref config, routingItem, EditIndex) == 0)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.Cancel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
651
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx
Normal file
651
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx
Normal file
@@ -0,0 +1,651 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<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>742, 10</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Name" xml:space="preserve">
|
||||||
|
<value>panel1</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=">>panel1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.ColumnWidth" type="System.Int32, mscorlib">
|
||||||
|
<value>80</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.Items" xml:space="preserve">
|
||||||
|
<value>http</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.Items1" xml:space="preserve">
|
||||||
|
<value>tls</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.Items2" xml:space="preserve">
|
||||||
|
<value>bittorrent</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>347, 43</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>245, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="clbProtocol.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>39</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>clbProtocol.Name" xml:space="preserve">
|
||||||
|
<value>clbProtocol</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>clbProtocol.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>clbProtocol.Parent" xml:space="preserve">
|
||||||
|
<value>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>clbProtocol.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</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>274, 47</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>36</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>Protocol</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>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>84, 43</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>166, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>35</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>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>19, 47</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>34</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>Port</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>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="labRoutingTips.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="labRoutingTips.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>19, 82</value>
|
||||||
|
</data>
|
||||||
|
<data name="labRoutingTips.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>598, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="labRoutingTips.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>33</value>
|
||||||
|
</data>
|
||||||
|
<data name="labRoutingTips.Text" xml:space="preserve">
|
||||||
|
<value>*Set the rules, separated by commas (,); support Domain (pure string / regular / subdomain) and IP</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labRoutingTips.Name" xml:space="preserve">
|
||||||
|
<value>labRoutingTips</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labRoutingTips.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=">>labRoutingTips.Parent" xml:space="preserve">
|
||||||
|
<value>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labRoutingTips.ZOrder" xml:space="preserve">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>274, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>47, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>32</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>Out Tag</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.Name" xml:space="preserve">
|
||||||
|
<value>label4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.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=">>label4.Parent" xml:space="preserve">
|
||||||
|
<value>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label4.ZOrder" xml:space="preserve">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbOutboundTag.Items" xml:space="preserve">
|
||||||
|
<value>proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbOutboundTag.Items1" xml:space="preserve">
|
||||||
|
<value>direct</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbOutboundTag.Items2" xml:space="preserve">
|
||||||
|
<value>block</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>347, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbOutboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>119, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbOutboundTag.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>31</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbOutboundTag.Name" xml:space="preserve">
|
||||||
|
<value>cmbOutboundTag</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbOutboundTag.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbOutboundTag.Parent" xml:space="preserve">
|
||||||
|
<value>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbOutboundTag.ZOrder" xml:space="preserve">
|
||||||
|
<value>6</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>84, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>166, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>30</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>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
|
<value>7</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>19, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>47, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>29</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Remarks</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>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 10</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>742, 111</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>8</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel3.Name" xml:space="preserve">
|
||||||
|
<value>panel3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel3.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=">>panel3.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel3.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>504, 15</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>&Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Name" xml:space="preserve">
|
||||||
|
<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>panel4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>411, 15</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>panel4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 516</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>742, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel4.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel4.Name" xml:space="preserve">
|
||||||
|
<value>panel4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel4.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=">>panel4.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel4.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtIP.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtIP.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtIP.Multiline" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtIP.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>344, 375</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtIP.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>25</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtIP.Name" xml:space="preserve">
|
||||||
|
<value>txtIP</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtIP.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=">>txtIP.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtIP.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>392, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>350, 395</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
|
<value>IP</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox2.Name" xml:space="preserve">
|
||||||
|
<value>groupBox2</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.Parent" xml:space="preserve">
|
||||||
|
<value>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtDomain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtDomain.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtDomain.Multiline" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtDomain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>386, 375</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtDomain.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>24</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtDomain.Name" xml:space="preserve">
|
||||||
|
<value>txtDomain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtDomain.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=">>txtDomain.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtDomain.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Left</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>392, 395</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
|
<value>Domain</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>panel2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 121</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>742, 395</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>11</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>0</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>742, 576</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>RoutingSettingDetailsForm</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>RoutingSettingDetailsForm</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>
|
||||||
145
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx
Normal file
145
v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="labRoutingTips.Text" xml:space="preserve">
|
||||||
|
<value>*设置的路由规则,用逗号(,)分隔</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Text" xml:space="preserve">
|
||||||
|
<value>OutboundTag</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>别名</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>取消(&C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>路由规则详情设置</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
306
v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
generated
Normal file
306
v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
generated
Normal file
@@ -0,0 +1,306 @@
|
|||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class RoutingSettingForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingForm));
|
||||||
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
||||||
|
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
||||||
|
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.menuAdd = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuExportSelectedRules = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tabControl2 = new System.Windows.Forms.TabControl();
|
||||||
|
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||||
|
this.menuServer = new System.Windows.Forms.MenuStrip();
|
||||||
|
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuImportRulesFromPreset = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuImportRulesFromFile = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuImportRulesFromClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.panel2.SuspendLayout();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.cmsLv.SuspendLayout();
|
||||||
|
this.tabControl2.SuspendLayout();
|
||||||
|
this.tabPage2.SuspendLayout();
|
||||||
|
this.menuServer.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// btnClose
|
||||||
|
//
|
||||||
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
|
this.btnClose.Name = "btnClose";
|
||||||
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
this.panel2.Controls.Add(this.btnClose);
|
||||||
|
this.panel2.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
//
|
||||||
|
// btnOK
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnOK, "btnOK");
|
||||||
|
this.btnOK.Name = "btnOK";
|
||||||
|
this.btnOK.UseVisualStyleBackColor = true;
|
||||||
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.Controls.Add(this.linkLabelRoutingDoc);
|
||||||
|
this.panel1.Controls.Add(this.cmbdomainStrategy);
|
||||||
|
resources.ApplyResources(this.panel1, "panel1");
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
//
|
||||||
|
// linkLabelRoutingDoc
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.linkLabelRoutingDoc, "linkLabelRoutingDoc");
|
||||||
|
this.linkLabelRoutingDoc.Name = "linkLabelRoutingDoc";
|
||||||
|
this.linkLabelRoutingDoc.TabStop = true;
|
||||||
|
this.linkLabelRoutingDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelRoutingDoc_LinkClicked);
|
||||||
|
//
|
||||||
|
// cmbdomainStrategy
|
||||||
|
//
|
||||||
|
this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbdomainStrategy.FormattingEnabled = true;
|
||||||
|
this.cmbdomainStrategy.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbdomainStrategy.Items"),
|
||||||
|
resources.GetString("cmbdomainStrategy.Items1"),
|
||||||
|
resources.GetString("cmbdomainStrategy.Items2")});
|
||||||
|
resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
|
||||||
|
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
||||||
|
//
|
||||||
|
// lvRoutings
|
||||||
|
//
|
||||||
|
this.lvRoutings.ContextMenuStrip = this.cmsLv;
|
||||||
|
resources.ApplyResources(this.lvRoutings, "lvRoutings");
|
||||||
|
this.lvRoutings.FullRowSelect = true;
|
||||||
|
this.lvRoutings.GridLines = true;
|
||||||
|
this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||||
|
this.lvRoutings.HideSelection = false;
|
||||||
|
this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
||||||
|
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))});
|
||||||
|
this.lvRoutings.MultiSelect = false;
|
||||||
|
this.lvRoutings.Name = "lvRoutings";
|
||||||
|
this.lvRoutings.UseCompatibleStateImageBehavior = false;
|
||||||
|
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
||||||
|
this.lvRoutings.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvRoutings_KeyDown);
|
||||||
|
//
|
||||||
|
// cmsLv
|
||||||
|
//
|
||||||
|
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuAdd,
|
||||||
|
this.menuRemove,
|
||||||
|
this.menuSelectAll,
|
||||||
|
this.menuExportSelectedRules,
|
||||||
|
this.toolStripSeparator3,
|
||||||
|
this.menuMoveTop,
|
||||||
|
this.menuMoveUp,
|
||||||
|
this.menuMoveDown,
|
||||||
|
this.menuMoveBottom});
|
||||||
|
this.cmsLv.Name = "cmsLv";
|
||||||
|
resources.ApplyResources(this.cmsLv, "cmsLv");
|
||||||
|
//
|
||||||
|
// menuAdd
|
||||||
|
//
|
||||||
|
this.menuAdd.Name = "menuAdd";
|
||||||
|
resources.ApplyResources(this.menuAdd, "menuAdd");
|
||||||
|
this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click);
|
||||||
|
//
|
||||||
|
// menuRemove
|
||||||
|
//
|
||||||
|
this.menuRemove.Name = "menuRemove";
|
||||||
|
resources.ApplyResources(this.menuRemove, "menuRemove");
|
||||||
|
this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click);
|
||||||
|
//
|
||||||
|
// menuSelectAll
|
||||||
|
//
|
||||||
|
this.menuSelectAll.Name = "menuSelectAll";
|
||||||
|
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
||||||
|
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
||||||
|
//
|
||||||
|
// menuExportSelectedRules
|
||||||
|
//
|
||||||
|
this.menuExportSelectedRules.Name = "menuExportSelectedRules";
|
||||||
|
resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules");
|
||||||
|
this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator3
|
||||||
|
//
|
||||||
|
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
|
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
||||||
|
//
|
||||||
|
// menuMoveTop
|
||||||
|
//
|
||||||
|
this.menuMoveTop.Name = "menuMoveTop";
|
||||||
|
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
|
||||||
|
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
|
||||||
|
//
|
||||||
|
// menuMoveUp
|
||||||
|
//
|
||||||
|
this.menuMoveUp.Name = "menuMoveUp";
|
||||||
|
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
|
||||||
|
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
|
||||||
|
//
|
||||||
|
// menuMoveDown
|
||||||
|
//
|
||||||
|
this.menuMoveDown.Name = "menuMoveDown";
|
||||||
|
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
|
||||||
|
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
|
||||||
|
//
|
||||||
|
// menuMoveBottom
|
||||||
|
//
|
||||||
|
this.menuMoveBottom.Name = "menuMoveBottom";
|
||||||
|
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
|
||||||
|
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
|
||||||
|
//
|
||||||
|
// MenuItem1
|
||||||
|
//
|
||||||
|
this.MenuItem1.DropDown = this.cmsLv;
|
||||||
|
this.MenuItem1.Name = "MenuItem1";
|
||||||
|
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
||||||
|
//
|
||||||
|
// tabControl2
|
||||||
|
//
|
||||||
|
this.tabControl2.Controls.Add(this.tabPage2);
|
||||||
|
resources.ApplyResources(this.tabControl2, "tabControl2");
|
||||||
|
this.tabControl2.Name = "tabControl2";
|
||||||
|
this.tabControl2.SelectedIndex = 0;
|
||||||
|
//
|
||||||
|
// tabPage2
|
||||||
|
//
|
||||||
|
this.tabPage2.Controls.Add(this.lvRoutings);
|
||||||
|
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||||
|
this.tabPage2.Name = "tabPage2";
|
||||||
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// menuServer
|
||||||
|
//
|
||||||
|
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.MenuItem1,
|
||||||
|
this.toolStripMenuItem1});
|
||||||
|
resources.ApplyResources(this.menuServer, "menuServer");
|
||||||
|
this.menuServer.Name = "menuServer";
|
||||||
|
//
|
||||||
|
// toolStripMenuItem1
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuImportRulesFromPreset,
|
||||||
|
this.menuImportRulesFromFile,
|
||||||
|
this.menuImportRulesFromClipboard});
|
||||||
|
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||||
|
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
|
||||||
|
//
|
||||||
|
// menuImportRulesFromPreset
|
||||||
|
//
|
||||||
|
this.menuImportRulesFromPreset.Name = "menuImportRulesFromPreset";
|
||||||
|
resources.ApplyResources(this.menuImportRulesFromPreset, "menuImportRulesFromPreset");
|
||||||
|
this.menuImportRulesFromPreset.Click += new System.EventHandler(this.menuImportRulesFromPreset_Click);
|
||||||
|
//
|
||||||
|
// menuImportRulesFromFile
|
||||||
|
//
|
||||||
|
this.menuImportRulesFromFile.Name = "menuImportRulesFromFile";
|
||||||
|
resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile");
|
||||||
|
this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click);
|
||||||
|
//
|
||||||
|
// menuImportRulesFromClipboard
|
||||||
|
//
|
||||||
|
this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard";
|
||||||
|
resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard");
|
||||||
|
this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click);
|
||||||
|
//
|
||||||
|
// RoutingSettingForm
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this, "$this");
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.CancelButton = this.btnClose;
|
||||||
|
this.Controls.Add(this.tabControl2);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Controls.Add(this.panel2);
|
||||||
|
this.Controls.Add(this.menuServer);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
|
this.Name = "RoutingSettingForm";
|
||||||
|
this.Load += new System.EventHandler(this.RoutingSettingForm_Load);
|
||||||
|
this.panel2.ResumeLayout(false);
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.panel1.PerformLayout();
|
||||||
|
this.cmsLv.ResumeLayout(false);
|
||||||
|
this.tabControl2.ResumeLayout(false);
|
||||||
|
this.tabPage2.ResumeLayout(false);
|
||||||
|
this.menuServer.ResumeLayout(false);
|
||||||
|
this.menuServer.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
private System.Windows.Forms.Button btnClose;
|
||||||
|
private System.Windows.Forms.Button btnOK;
|
||||||
|
private System.Windows.Forms.Panel panel2;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.LinkLabel linkLabelRoutingDoc;
|
||||||
|
private System.Windows.Forms.ComboBox cmbdomainStrategy;
|
||||||
|
private Base.ListViewFlickerFree lvRoutings;
|
||||||
|
private System.Windows.Forms.TabControl tabControl2;
|
||||||
|
private System.Windows.Forms.TabPage tabPage2;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip cmsLv;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuRemove;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMoveTop;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMoveUp;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMoveDown;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMoveBottom;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuAdd;
|
||||||
|
private System.Windows.Forms.MenuStrip menuServer;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem MenuItem1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromPreset;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromFile;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromClipboard;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuExportSelectedRules;
|
||||||
|
}
|
||||||
|
}
|
||||||
315
v2rayN/v2rayN/Forms/RoutingSettingForm.cs
Normal file
315
v2rayN/v2rayN/Forms/RoutingSettingForm.cs
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class RoutingSettingForm : BaseForm
|
||||||
|
{
|
||||||
|
private List<int> lvSelecteds = new List<int>();
|
||||||
|
public RoutingSettingForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RoutingSettingForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
cmbdomainStrategy.Text = config.domainStrategy;
|
||||||
|
|
||||||
|
if (config.rules == null)
|
||||||
|
{
|
||||||
|
config.rules = new List<RulesItem>();
|
||||||
|
}
|
||||||
|
InitRoutingsView();
|
||||||
|
RefreshRoutingsView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitRoutingsView()
|
||||||
|
{
|
||||||
|
lvRoutings.BeginUpdate();
|
||||||
|
lvRoutings.Items.Clear();
|
||||||
|
|
||||||
|
lvRoutings.GridLines = true;
|
||||||
|
lvRoutings.FullRowSelect = true;
|
||||||
|
lvRoutings.View = View.Details;
|
||||||
|
lvRoutings.MultiSelect = true;
|
||||||
|
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||||
|
|
||||||
|
lvRoutings.Columns.Add("", 30);
|
||||||
|
lvRoutings.Columns.Add(UIRes.I18N("LvAlias"), 100);
|
||||||
|
lvRoutings.Columns.Add("outboundTag", 80);
|
||||||
|
lvRoutings.Columns.Add("port", 80);
|
||||||
|
lvRoutings.Columns.Add("protocol", 100);
|
||||||
|
lvRoutings.Columns.Add("domain", 160);
|
||||||
|
lvRoutings.Columns.Add("ip", 160);
|
||||||
|
|
||||||
|
lvRoutings.EndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshRoutingsView()
|
||||||
|
{
|
||||||
|
lvRoutings.BeginUpdate();
|
||||||
|
lvRoutings.Items.Clear();
|
||||||
|
|
||||||
|
for (int k = 0; k < config.rules.Count; k++)
|
||||||
|
{
|
||||||
|
var item = config.rules[k];
|
||||||
|
|
||||||
|
ListViewItem lvItem = new ListViewItem("");
|
||||||
|
Utils.AddSubItem(lvItem, "remarks", item.remarks);
|
||||||
|
Utils.AddSubItem(lvItem, "outboundTag", item.outboundTag);
|
||||||
|
Utils.AddSubItem(lvItem, "port", item.port);
|
||||||
|
Utils.AddSubItem(lvItem, "protocol", Utils.List2String(item.protocol));
|
||||||
|
Utils.AddSubItem(lvItem, "domain", Utils.List2String(item.domain));
|
||||||
|
Utils.AddSubItem(lvItem, "ip", Utils.List2String(item.ip));
|
||||||
|
|
||||||
|
if (lvItem != null) lvRoutings.Items.Add(lvItem);
|
||||||
|
}
|
||||||
|
lvRoutings.EndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
config.domainStrategy = cmbdomainStrategy.Text;
|
||||||
|
|
||||||
|
if (ConfigHandler.SaveRoutingRulesItem(ref config) == 0)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.DialogResult = DialogResult.Cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void linkLabelRoutingDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Process.Start("https://www.v2fly.org/config/routing.html");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lvRoutings_DoubleClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int index = GetLvSelectedIndex();
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var fm = new RoutingSettingDetailsForm();
|
||||||
|
fm.EditIndex = index;
|
||||||
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int GetLvSelectedIndex()
|
||||||
|
{
|
||||||
|
int index = -1;
|
||||||
|
lvSelecteds.Clear();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (lvRoutings.SelectedIndices.Count <= 0)
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("PleaseSelectRules"));
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
index = lvRoutings.SelectedIndices[0];
|
||||||
|
foreach (int i in lvRoutings.SelectedIndices)
|
||||||
|
{
|
||||||
|
lvSelecteds.Add(i);
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Edit function
|
||||||
|
|
||||||
|
private void menuMoveTop_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MoveRule(EMove.Top);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMoveUp_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MoveRule(EMove.Up);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMoveDown_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MoveRule(EMove.Down);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMoveBottom_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MoveRule(EMove.Bottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MoveRule(EMove eMove)
|
||||||
|
{
|
||||||
|
int index = GetLvSelectedIndex();
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
UI.Show(UIRes.I18N("PleaseSelectRules"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ConfigHandler.MoveRoutingRule(ref config, index, eMove) == 0)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void menuSelectAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
foreach (ListViewItem item in lvRoutings.Items)
|
||||||
|
{
|
||||||
|
item.Selected = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuAdd_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var fm = new RoutingSettingDetailsForm();
|
||||||
|
fm.EditIndex = -1;
|
||||||
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuRemove_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
int index = GetLvSelectedIndex();
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (UI.ShowYesNo(UIRes.I18N("RemoveRules")) == DialogResult.No)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int k = lvSelecteds.Count - 1; k >= 0; k--)
|
||||||
|
{
|
||||||
|
config.rules.RemoveAt(index);
|
||||||
|
}
|
||||||
|
RefreshRoutingsView();
|
||||||
|
}
|
||||||
|
private void menuExportSelectedRules_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
GetLvSelectedIndex();
|
||||||
|
var lst = new List<RulesItem>();
|
||||||
|
foreach (int v in lvSelecteds)
|
||||||
|
{
|
||||||
|
lst.Add(config.rules[v]);
|
||||||
|
}
|
||||||
|
if (lst.Count > 0)
|
||||||
|
{
|
||||||
|
Utils.SetClipboardData(Utils.ToJson(lst));
|
||||||
|
UI.Show(UIRes.I18N("OperationSuccess"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lvRoutings_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Control)
|
||||||
|
{
|
||||||
|
switch (e.KeyCode)
|
||||||
|
{
|
||||||
|
case Keys.A:
|
||||||
|
menuSelectAll_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.C:
|
||||||
|
menuExportSelectedRules_Click(null, null);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (e.KeyCode)
|
||||||
|
{
|
||||||
|
case Keys.Delete:
|
||||||
|
menuRemove_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.T:
|
||||||
|
menuMoveTop_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.B:
|
||||||
|
menuMoveBottom_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.U:
|
||||||
|
menuMoveUp_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.D:
|
||||||
|
menuMoveDown_Click(null, null);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region preset rules
|
||||||
|
private void menuImportRulesFromPreset_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var rules = Utils.GetEmbedText(Global.CustomRoutingFileName + "rules");
|
||||||
|
if (ConfigHandler.AddBatchRoutingRules(ref config, rules) == 0)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
UI.Show(UIRes.I18N("OperationSuccess"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuImportRulesFromFile_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenFileDialog fileDialog = new OpenFileDialog
|
||||||
|
{
|
||||||
|
Multiselect = false,
|
||||||
|
Filter = "Rules|*.json|All|*.*"
|
||||||
|
};
|
||||||
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string fileName = fileDialog.FileName;
|
||||||
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string result = Utils.LoadResource(fileName);
|
||||||
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ConfigHandler.AddBatchRoutingRules(ref config, result) == 0)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
UI.Show(UIRes.I18N("OperationSuccess"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuImportRulesFromClipboard_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string clipboardData = Utils.GetClipboardData();
|
||||||
|
if (ConfigHandler.AddBatchRoutingRules(ref config, clipboardData) == 0)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
UI.Show(UIRes.I18N("OperationSuccess"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
647
v2rayN/v2rayN/Forms/RoutingSettingForm.resx
Normal file
647
v2rayN/v2rayN/Forms/RoutingSettingForm.resx
Normal file
@@ -0,0 +1,647 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.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" />
|
||||||
|
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>568, 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" />
|
||||||
|
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>&Cancel</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnClose.Name" xml:space="preserve">
|
||||||
|
<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>0</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, 613</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>765, 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>3</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>475, 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=">>linkLabelRoutingDoc.Name" xml:space="preserve">
|
||||||
|
<value>linkLabelRoutingDoc</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.Parent" xml:space="preserve">
|
||||||
|
<value>panel1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.Name" xml:space="preserve">
|
||||||
|
<value>cmbdomainStrategy</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.Parent" xml:space="preserve">
|
||||||
|
<value>panel1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</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, 25</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>765, 51</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>11</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.Name" xml:space="preserve">
|
||||||
|
<value>panel1</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=">>panel1.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>6, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||||
|
<value>0, 0, 0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>19</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.Text" xml:space="preserve">
|
||||||
|
<value>Domain strategy</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.Name" xml:space="preserve">
|
||||||
|
<value>linkLabelRoutingDoc</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.Parent" xml:space="preserve">
|
||||||
|
<value>panel1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>linkLabelRoutingDoc.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Items" xml:space="preserve">
|
||||||
|
<value>AsIs</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Items1" xml:space="preserve">
|
||||||
|
<value>IPIfNonMatch</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Items2" xml:space="preserve">
|
||||||
|
<value>IPOnDemand</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>116, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>165, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbdomainStrategy.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>16</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.Name" xml:space="preserve">
|
||||||
|
<value>cmbdomainStrategy</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.Parent" xml:space="preserve">
|
||||||
|
<value>panel1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbdomainStrategy.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>203, 186</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsLv.Name" xml:space="preserve">
|
||||||
|
<value>cmsLv</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsLv.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvRoutings.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvRoutings.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="lvRoutings.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 3</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>751, 505</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvRoutings.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>12</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>lvRoutings.Name" xml:space="preserve">
|
||||||
|
<value>lvRoutings</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>lvRoutings.Type" xml:space="preserve">
|
||||||
|
<value>v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>lvRoutings.Parent" xml:space="preserve">
|
||||||
|
<value>tabPage2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>lvRoutings.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAdd.Text" xml:space="preserve">
|
||||||
|
<value>Add</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemove.Text" xml:space="preserve">
|
||||||
|
<value>Remove selected</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>Select All (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuExportSelectedRules.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuExportSelectedRules.Text" xml:space="preserve">
|
||||||
|
<value>Export Selected Rules</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>199, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Text" xml:space="preserve">
|
||||||
|
<value>Move to top (T)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveUp.Text" xml:space="preserve">
|
||||||
|
<value>Up (U)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveDown.Text" xml:space="preserve">
|
||||||
|
<value>Down (D)</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>202, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
|
<value>Move to bottom (B)</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>120, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>Edit and Function</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.Name" xml:space="preserve">
|
||||||
|
<value>tabPage2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.Parent" xml:space="preserve">
|
||||||
|
<value>tabControl2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 76</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>765, 537</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>14</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabControl2.Name" xml:space="preserve">
|
||||||
|
<value>tabControl2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabControl2.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabControl2.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabControl2.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>4, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||||
|
<value>3, 3, 3, 3</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>757, 511</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
|
<value>RuleList</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.Name" xml:space="preserve">
|
||||||
|
<value>tabPage2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.Parent" xml:space="preserve">
|
||||||
|
<value>tabControl2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tabPage2.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>139, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<data name="menuImportRulesFromPreset.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>247, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromPreset.Text" xml:space="preserve">
|
||||||
|
<value>Import Rules From Preset</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromFile.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>247, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromFile.Text" xml:space="preserve">
|
||||||
|
<value>Import Rules From File</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>247, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromClipboard.Text" xml:space="preserve">
|
||||||
|
<value>Import Rules From Clipboard</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>95, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>Import Rules</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>765, 25</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>15</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.Name" xml:space="preserve">
|
||||||
|
<value>menuServer</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
||||||
|
<value>4</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>765, 673</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>Routing Settings</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuAdd.Name" xml:space="preserve">
|
||||||
|
<value>menuAdd</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuAdd.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=">>menuRemove.Name" xml:space="preserve">
|
||||||
|
<value>menuRemove</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuRemove.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=">>menuSelectAll.Name" xml:space="preserve">
|
||||||
|
<value>menuSelectAll</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuSelectAll.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=">>menuExportSelectedRules.Name" xml:space="preserve">
|
||||||
|
<value>menuExportSelectedRules</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuExportSelectedRules.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=">>toolStripSeparator3.Name" xml:space="preserve">
|
||||||
|
<value>toolStripSeparator3</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolStripSeparator3.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMoveTop.Name" xml:space="preserve">
|
||||||
|
<value>menuMoveTop</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMoveTop.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=">>menuMoveUp.Name" xml:space="preserve">
|
||||||
|
<value>menuMoveUp</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMoveUp.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=">>menuMoveDown.Name" xml:space="preserve">
|
||||||
|
<value>menuMoveDown</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMoveDown.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=">>menuMoveBottom.Name" xml:space="preserve">
|
||||||
|
<value>menuMoveBottom</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMoveBottom.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=">>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=">>toolStripMenuItem1.Name" xml:space="preserve">
|
||||||
|
<value>toolStripMenuItem1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolStripMenuItem1.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=">>menuImportRulesFromPreset.Name" xml:space="preserve">
|
||||||
|
<value>menuImportRulesFromPreset</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuImportRulesFromPreset.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=">>menuImportRulesFromFile.Name" xml:space="preserve">
|
||||||
|
<value>menuImportRulesFromFile</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuImportRulesFromFile.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=">>menuImportRulesFromClipboard.Name" xml:space="preserve">
|
||||||
|
<value>menuImportRulesFromClipboard</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuImportRulesFromClipboard.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>RoutingSettingForm</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>
|
||||||
261
v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx
Normal file
261
v2rayN/v2rayN/Forms/RoutingSettingForm.zh-Hans.resx
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnClose.Text" xml:space="preserve">
|
||||||
|
<value>取消(&C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnOK.Text" xml:space="preserve">
|
||||||
|
<value>确定(&O)</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>785, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkLabelRoutingDoc.Text" xml:space="preserve">
|
||||||
|
<value>域名解析策略</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>785, 51</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>196, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuAdd.Text" xml:space="preserve">
|
||||||
|
<value>添加规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>196, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemove.Text" xml:space="preserve">
|
||||||
|
<value>移除所选规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>196, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>全选</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuExportSelectedRules.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>196, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuExportSelectedRules.Text" xml:space="preserve">
|
||||||
|
<value>导出所选规则至剪贴板</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>193, 6</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>196, 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>196, 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>196, 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>196, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveBottom.Text" xml:space="preserve">
|
||||||
|
<value>下移至底 (B)</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>92, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="MenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>路由规则功能</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>197, 186</value>
|
||||||
|
</data>
|
||||||
|
<data name="lvRoutings.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="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>771, 505</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>777, 511</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage2.Text" xml:space="preserve">
|
||||||
|
<value>路由规则列表</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>785, 537</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromPreset.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>184, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromPreset.Text" xml:space="preserve">
|
||||||
|
<value>从预设中导入规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromFile.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>184, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromFile.Text" xml:space="preserve">
|
||||||
|
<value>从文件中导入规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>184, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuImportRulesFromClipboard.Text" xml:space="preserve">
|
||||||
|
<value>从剪贴板中导入规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>92, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem1.Text" xml:space="preserve">
|
||||||
|
<value>导入路由规则</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>785, 25</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>785, 673</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>路由设置</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
53
v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs
generated
53
v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs
generated
@@ -29,27 +29,38 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl));
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.grbMain = new System.Windows.Forms.GroupBox();
|
||||||
|
this.btnShare = new System.Windows.Forms.Button();
|
||||||
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
||||||
this.btnRemove = new System.Windows.Forms.Button();
|
this.btnRemove = new System.Windows.Forms.Button();
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
this.txtUrl = new System.Windows.Forms.TextBox();
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
this.txtRemarks = new System.Windows.Forms.TextBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
this.groupBox2.SuspendLayout();
|
this.picQRCode = new System.Windows.Forms.PictureBox();
|
||||||
|
this.grbMain.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// groupBox2
|
// grbMain
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
resources.ApplyResources(this.grbMain, "grbMain");
|
||||||
this.groupBox2.Controls.Add(this.chkEnabled);
|
this.grbMain.Controls.Add(this.btnShare);
|
||||||
this.groupBox2.Controls.Add(this.btnRemove);
|
this.grbMain.Controls.Add(this.chkEnabled);
|
||||||
this.groupBox2.Controls.Add(this.txtUrl);
|
this.grbMain.Controls.Add(this.btnRemove);
|
||||||
this.groupBox2.Controls.Add(this.txtRemarks);
|
this.grbMain.Controls.Add(this.txtUrl);
|
||||||
this.groupBox2.Controls.Add(this.label2);
|
this.grbMain.Controls.Add(this.txtRemarks);
|
||||||
this.groupBox2.Controls.Add(this.label3);
|
this.grbMain.Controls.Add(this.label2);
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.grbMain.Controls.Add(this.label3);
|
||||||
this.groupBox2.TabStop = false;
|
this.grbMain.Name = "grbMain";
|
||||||
|
this.grbMain.TabStop = false;
|
||||||
|
//
|
||||||
|
// btnShare
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnShare, "btnShare");
|
||||||
|
this.btnShare.Name = "btnShare";
|
||||||
|
this.btnShare.UseVisualStyleBackColor = true;
|
||||||
|
this.btnShare.Click += new System.EventHandler(this.btnShare_Click);
|
||||||
//
|
//
|
||||||
// chkEnabled
|
// chkEnabled
|
||||||
//
|
//
|
||||||
@@ -87,27 +98,37 @@
|
|||||||
resources.ApplyResources(this.label3, "label3");
|
resources.ApplyResources(this.label3, "label3");
|
||||||
this.label3.Name = "label3";
|
this.label3.Name = "label3";
|
||||||
//
|
//
|
||||||
|
// picQRCode
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.picQRCode, "picQRCode");
|
||||||
|
this.picQRCode.Name = "picQRCode";
|
||||||
|
this.picQRCode.TabStop = false;
|
||||||
|
//
|
||||||
// SubSettingControl
|
// SubSettingControl
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.groupBox2);
|
this.Controls.Add(this.picQRCode);
|
||||||
|
this.Controls.Add(this.grbMain);
|
||||||
this.Name = "SubSettingControl";
|
this.Name = "SubSettingControl";
|
||||||
this.Load += new System.EventHandler(this.SubSettingControl_Load);
|
this.Load += new System.EventHandler(this.SubSettingControl_Load);
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.grbMain.ResumeLayout(false);
|
||||||
this.groupBox2.PerformLayout();
|
this.grbMain.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
private System.Windows.Forms.GroupBox grbMain;
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
private System.Windows.Forms.TextBox txtUrl;
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
private System.Windows.Forms.TextBox txtRemarks;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
private System.Windows.Forms.Label label3;
|
private System.Windows.Forms.Label label3;
|
||||||
private System.Windows.Forms.Button btnRemove;
|
private System.Windows.Forms.Button btnRemove;
|
||||||
private System.Windows.Forms.CheckBox chkEnabled;
|
private System.Windows.Forms.CheckBox chkEnabled;
|
||||||
|
private System.Windows.Forms.Button btnShare;
|
||||||
|
private System.Windows.Forms.PictureBox picQRCode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
@@ -11,7 +12,10 @@ namespace v2rayN.Forms
|
|||||||
public event ChangeEventHandler OnButtonClicked;
|
public event ChangeEventHandler OnButtonClicked;
|
||||||
|
|
||||||
|
|
||||||
public SubItem subItem { get; set; }
|
public SubItem subItem
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public SubSettingControl()
|
public SubSettingControl()
|
||||||
{
|
{
|
||||||
@@ -20,6 +24,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void SubSettingControl_Load(object sender, EventArgs e)
|
private void SubSettingControl_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
this.Height = grbMain.Height;
|
||||||
BindingSub();
|
BindingSub();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,5 +61,23 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
OnButtonClicked?.Invoke(sender, e);
|
OnButtonClicked?.Invoke(sender, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void btnShare_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (this.Height <= grbMain.Height)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(subItem.url))
|
||||||
|
{
|
||||||
|
picQRCode.Image = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
picQRCode.Image = QRCodeHelper.GetQRCode(subItem.url);
|
||||||
|
this.Height = grbMain.Height + 200;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Height = grbMain.Height;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
<data name=">>txtUrl.Parent" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
@@ -131,22 +131,40 @@
|
|||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
<data name=">>txtUrl.Name" xml:space="preserve">
|
||||||
<value>txtUrl</value>
|
<value>txtUrl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||||
<value>&Remove</value>
|
<value>6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>picQRCode.Name" xml:space="preserve">
|
||||||
<value>484, 21</value>
|
<value>picQRCode</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnShare.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="btnRemove.Text" xml:space="preserve">
|
||||||
|
<value>Remove</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.Name" xml:space="preserve">
|
||||||
|
<value>txtRemarks</value>
|
||||||
</data>
|
</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">
|
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>24</value>
|
<value>24</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>grbMain.Name" xml:space="preserve">
|
||||||
<value>432, 46</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>SubSettingControl</value>
|
<value>SubSettingControl</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||||
|
<value>Zoom</value>
|
||||||
|
</data>
|
||||||
|
<data name="grbMain.Text" xml:space="preserve">
|
||||||
|
<value>Subscription details</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnShare.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>26</value>
|
||||||
|
</data>
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
<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>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -154,13 +172,19 @@
|
|||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>grbMain</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnShare.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>434, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>83, 12</value>
|
<value>83, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.Name" xml:space="preserve">
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>groupBox2</value>
|
<value>232, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Top</value>
|
||||||
</data>
|
</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>
|
||||||
@@ -174,41 +198,53 @@
|
|||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnShare.Text" xml:space="preserve">
|
||||||
|
<value>Share</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>619, 200</value>
|
||||||
|
</data>
|
||||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>1</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, 55</value>
|
<value>12, 55</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnShare.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>grbMain.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>25</value>
|
||||||
|
</data>
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 55</value>
|
<value>127, 55</value>
|
||||||
</data>
|
</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">
|
<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>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>47, 12</value>
|
<value>47, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name=">>btnRemove.Name" xml:space="preserve">
|
||||||
<value>Subscription details</value>
|
<value>btnRemove</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>txtUrl.Type" xml:space="preserve">
|
||||||
<value>0, 9</value>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
<data name="chkEnabled.Text" xml:space="preserve">
|
||||||
<value>Enable</value>
|
<value>Enable</value>
|
||||||
@@ -217,28 +253,40 @@
|
|||||||
<value>chkEnabled</value>
|
<value>chkEnabled</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>Address (url)</value>
|
<value>0, 110</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnShare.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnShare.Parent" xml:space="preserve">
|
||||||
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>25</value>
|
<value>25</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="grbMain.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>23</value>
|
<value>23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
<data name=">>label2.Parent" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
<data name=">>btnRemove.Parent" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>406, 23</value>
|
<value>368, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -246,8 +294,14 @@
|
|||||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>btnRemove</value>
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
@@ -255,17 +309,20 @@
|
|||||||
<data name=">>label2.Name" xml:space="preserve">
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
<value>label2</value>
|
<value>label2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.Type" xml:space="preserve">
|
<data name="grbMain.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>619, 110</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>btnShare.Name" xml:space="preserve">
|
||||||
<value>584, 110</value>
|
<value>btnShare</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnShare.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</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>619, 310</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>11</value>
|
<value>11</value>
|
||||||
@@ -276,6 +333,12 @@
|
|||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="picQRCode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>473, 46</value>
|
||||||
|
</data>
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>12, 25</value>
|
<value>12, 25</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -283,22 +346,13 @@
|
|||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
<data name=">>label3.Parent" xml:space="preserve">
|
||||||
<value>groupBox2</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
||||||
<value>265, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</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=">>btnRemove.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.Parent" xml:space="preserve">
|
<data name="label3.Text" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>Address (url)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnRemove.Type" xml:space="preserve">
|
<data name=">>btnRemove.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
@@ -306,14 +360,14 @@
|
|||||||
<data name=">>$this.Type" xml:space="preserve">
|
<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>
|
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
<data name=">>picQRCode.Type" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>txtRemarks</value>
|
<value>525, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
<data name=">>grbMain.Type" xml:space="preserve">
|
||||||
<value>5</value>
|
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
<data name=">>chkEnabled.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
@@ -321,6 +375,9 @@
|
|||||||
<data name=">>label3.Type" xml:space="preserve">
|
<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>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>10</value>
|
||||||
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|||||||
@@ -117,6 +117,9 @@
|
|||||||
<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="btnShare.Text" xml:space="preserve">
|
||||||
|
<value>分享</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">
|
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>48, 16</value>
|
<value>48, 16</value>
|
||||||
@@ -139,7 +142,7 @@
|
|||||||
<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">
|
<data name="grbMain.Text" xml:space="preserve">
|
||||||
<value>订阅详情</value>
|
<value>订阅详情</value>
|
||||||
</data>
|
</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;
|
||||||
@@ -79,7 +79,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,7 +157,7 @@
|
|||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>581, 569</value>
|
<value>614, 569</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>10</value>
|
<value>10</value>
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
<value>0, 569</value>
|
<value>0, 569</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>581, 60</value>
|
<value>614, 60</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>7</value>
|
<value>7</value>
|
||||||
@@ -259,7 +259,7 @@
|
|||||||
<value>6, 12</value>
|
<value>6, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>581, 629</value>
|
<value>614, 629</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Subscription settings</value>
|
<value>Subscription settings</value>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -6,28 +6,31 @@ namespace v2rayN
|
|||||||
#region 常量
|
#region 常量
|
||||||
|
|
||||||
|
|
||||||
public const string v2rayWebsiteUrl = @"https://www.v2ray.com/";
|
public const string v2rayWebsiteUrl = @"https://www.v2fly.org/";
|
||||||
public const string AboutUrl = @"https://github.com/2dust/v2rayN";
|
public const string AboutUrl = @"https://github.com/2dust/v2rayN";
|
||||||
public const string UpdateUrl = AboutUrl + @"/releases";
|
public const string UpdateUrl = AboutUrl + @"/releases";
|
||||||
|
public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases";
|
||||||
|
public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
|
||||||
|
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SpeedTestUrl
|
/// SpeedTestUrl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string SpeedTestUrl = @"http://speedtest-sgp1.digitalocean.com/10mb.test";
|
public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test";
|
||||||
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
||||||
|
public const string AvailabilityTestUrl = @"https://www.google.com/generate_204";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CustomRoutingListUrl
|
/// CustomRoutingListUrl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
|
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
|
||||||
|
|
||||||
public const string GFWLIST_URL = "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt";
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// PromotionUrl
|
/// PromotionUrl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string PromotionUrl = @"aHR0cHM6Ly8xLjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 本软件配置文件名
|
/// 本软件配置文件名
|
||||||
@@ -55,10 +58,7 @@ namespace v2rayN
|
|||||||
/// v2ray配置Httpresponse文件名
|
/// v2ray配置Httpresponse文件名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
||||||
/// <summary>
|
|
||||||
/// 空白的pac文件
|
|
||||||
/// </summary>
|
|
||||||
public const string BlankPacFileName = "v2rayN.Sample.BlankPac.txt";
|
|
||||||
|
|
||||||
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
||||||
|
|
||||||
@@ -102,6 +102,7 @@ namespace v2rayN
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string StreamSecurity = "tls";
|
public const string StreamSecurity = "tls";
|
||||||
|
public const string StreamSecurityX = "xtls";
|
||||||
|
|
||||||
public const string InboundSocks = "socks";
|
public const string InboundSocks = "socks";
|
||||||
public const string InboundHttp = "http";
|
public const string InboundHttp = "http";
|
||||||
@@ -115,14 +116,26 @@ namespace v2rayN
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string vmessProtocol = "vmess://";
|
public const string vmessProtocol = "vmess://";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// vmess
|
||||||
|
/// </summary>
|
||||||
|
public const string vmessProtocolLite = "vmess";
|
||||||
|
/// <summary>
|
||||||
/// shadowsocks
|
/// shadowsocks
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string ssProtocol = "ss://";
|
public const string ssProtocol = "ss://";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// shadowsocks
|
||||||
|
/// </summary>
|
||||||
|
public const string ssProtocolLite = "shadowsocks";
|
||||||
|
/// <summary>
|
||||||
/// socks
|
/// socks
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string socksProtocol = "socks://";
|
public const string socksProtocol = "socks://";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// socks
|
||||||
|
/// </summary>
|
||||||
|
public const string socksProtocolLite = "socks";
|
||||||
|
/// <summary>
|
||||||
/// http
|
/// http
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string httpProtocol = "http://";
|
public const string httpProtocol = "http://";
|
||||||
@@ -130,11 +143,22 @@ namespace v2rayN
|
|||||||
/// https
|
/// https
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string httpsProtocol = "https://";
|
public const string httpsProtocol = "https://";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// pac
|
/// vless
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string pacFILE = "pac.txt";
|
public const string vlessProtocol = "vless://";
|
||||||
|
/// <summary>
|
||||||
|
/// vless
|
||||||
|
/// </summary>
|
||||||
|
public const string vlessProtocolLite = "vless";
|
||||||
|
/// <summary>
|
||||||
|
/// trojan
|
||||||
|
/// </summary>
|
||||||
|
public const string trojanProtocol = "trojan://";
|
||||||
|
/// <summary>
|
||||||
|
/// trojan
|
||||||
|
/// </summary>
|
||||||
|
public const string trojanProtocolLite = "trojan";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// email
|
/// email
|
||||||
@@ -201,13 +225,6 @@ namespace v2rayN
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// PAC端口
|
|
||||||
/// </summary>
|
|
||||||
public static int pacPort
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@@ -221,6 +238,10 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
public static System.Threading.Mutex mutexObj
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ using System.IO;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using System.Linq;
|
||||||
|
using v2rayN.Tool;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -30,34 +32,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 = false,
|
||||||
|
|
||||||
////默认监听端口
|
////默认监听端口
|
||||||
//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);
|
||||||
|
|
||||||
@@ -81,46 +87,45 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.domainStrategy = "IPIfNonMatch";
|
config.domainStrategy = "IPIfNonMatch";
|
||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(config.routingMode))
|
if (config.rules == null)
|
||||||
{
|
{
|
||||||
config.routingMode = "0";
|
config.rules = new List<RulesItem>();
|
||||||
}
|
|
||||||
if (config.useragent == null)
|
|
||||||
{
|
|
||||||
config.useragent = new List<string>();
|
|
||||||
}
|
|
||||||
if (config.userdirect == null)
|
|
||||||
{
|
|
||||||
config.userdirect = new List<string>();
|
|
||||||
}
|
|
||||||
if (config.userblock == null)
|
|
||||||
{
|
|
||||||
config.userblock = new List<string>();
|
|
||||||
}
|
}
|
||||||
//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)
|
||||||
{
|
{
|
||||||
config.uiItem = new UIItem();
|
config.uiItem = new UIItem();
|
||||||
}
|
}
|
||||||
|
if (config.uiItem.mainLvColWidth == null)
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
|
||||||
//// 如果是用户升级,首次会有端口号为0的情况,不可用,这里处理
|
//// 如果是用户升级,首次会有端口号为0的情况,不可用,这里处理
|
||||||
//if (config.pacPort == 0)
|
//if (config.pacPort == 0)
|
||||||
//{
|
//{
|
||||||
// config.pacPort = 8888;
|
// config.pacPort = 8888;
|
||||||
//}
|
//}
|
||||||
if (Utils.IsNullOrEmpty(config.urlGFWList))
|
if (Utils.IsNullOrEmpty(config.speedTestUrl))
|
||||||
{
|
{
|
||||||
config.urlGFWList = Global.GFWLIST_URL;
|
config.speedTestUrl = Global.SpeedTestUrl;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(config.speedPingTestUrl))
|
||||||
|
{
|
||||||
|
config.speedPingTestUrl = Global.SpeedPingTestUrl;
|
||||||
}
|
}
|
||||||
//if (Utils.IsNullOrEmpty(config.remoteDNS))
|
//if (Utils.IsNullOrEmpty(config.remoteDNS))
|
||||||
//{
|
//{
|
||||||
@@ -131,10 +136,6 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.subItem = new List<SubItem>();
|
config.subItem = new List<SubItem>();
|
||||||
}
|
}
|
||||||
if (config.userPacRule == null)
|
|
||||||
{
|
|
||||||
config.userPacRule = new List<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config == null
|
if (config == null
|
||||||
|| config.index < 0
|
|| config.index < 0
|
||||||
@@ -192,6 +193,10 @@ namespace v2rayN.Handler
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
//添加
|
//添加
|
||||||
|
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
||||||
|
{
|
||||||
|
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
||||||
|
}
|
||||||
config.vmess.Add(vmessItem);
|
config.vmess.Add(vmessItem);
|
||||||
if (config.vmess.Count == 1)
|
if (config.vmess.Count == 1)
|
||||||
{
|
{
|
||||||
@@ -259,20 +264,24 @@ 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;
|
address = config.vmess[index].address,
|
||||||
vmessItem.port = config.vmess[index].port;
|
port = config.vmess[index].port,
|
||||||
vmessItem.id = config.vmess[index].id;
|
id = config.vmess[index].id,
|
||||||
vmessItem.alterId = config.vmess[index].alterId;
|
alterId = config.vmess[index].alterId,
|
||||||
vmessItem.security = config.vmess[index].security;
|
security = config.vmess[index].security,
|
||||||
vmessItem.network = config.vmess[index].network;
|
network = config.vmess[index].network,
|
||||||
vmessItem.headerType = config.vmess[index].headerType;
|
remarks = string.Format("{0}-clone", config.vmess[index].remarks),
|
||||||
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,
|
||||||
|
allowInsecure = config.vmess[index].allowInsecure,
|
||||||
|
configType = config.vmess[index].configType,
|
||||||
|
flow = config.vmess[index].flow
|
||||||
|
};
|
||||||
|
|
||||||
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
|
||||||
|
|
||||||
@@ -330,80 +339,6 @@ namespace v2rayN.Handler
|
|||||||
Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 取得服务器QRCode配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <param name="index"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static string GetVmessQRCode(Config config, int index)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string url = string.Empty;
|
|
||||||
|
|
||||||
VmessItem vmessItem = config.vmess[index];
|
|
||||||
if (vmessItem.configType == (int)EConfigType.Vmess)
|
|
||||||
{
|
|
||||||
VmessQRCode vmessQRCode = new VmessQRCode();
|
|
||||||
vmessQRCode.v = vmessItem.configVersion.ToString();
|
|
||||||
vmessQRCode.ps = vmessItem.remarks.TrimEx(); //备注也许很长 ;
|
|
||||||
vmessQRCode.add = vmessItem.address;
|
|
||||||
vmessQRCode.port = vmessItem.port.ToString();
|
|
||||||
vmessQRCode.id = vmessItem.id;
|
|
||||||
vmessQRCode.aid = vmessItem.alterId.ToString();
|
|
||||||
vmessQRCode.net = vmessItem.network;
|
|
||||||
vmessQRCode.type = vmessItem.headerType;
|
|
||||||
vmessQRCode.host = vmessItem.requestHost;
|
|
||||||
vmessQRCode.path = vmessItem.path;
|
|
||||||
vmessQRCode.tls = vmessItem.streamSecurity;
|
|
||||||
|
|
||||||
url = Utils.ToJson(vmessQRCode);
|
|
||||||
url = Utils.Base64Encode(url);
|
|
||||||
url = string.Format("{0}{1}", Global.vmessProtocol, url);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (vmessItem.configType == (int)EConfigType.Shadowsocks)
|
|
||||||
{
|
|
||||||
var remark = string.Empty;
|
|
||||||
if (!Utils.IsNullOrEmpty(vmessItem.remarks))
|
|
||||||
{
|
|
||||||
remark = "#" + WebUtility.UrlEncode(vmessItem.remarks);
|
|
||||||
}
|
|
||||||
url = string.Format("{0}:{1}@{2}:{3}",
|
|
||||||
vmessItem.security,
|
|
||||||
vmessItem.id,
|
|
||||||
vmessItem.address,
|
|
||||||
vmessItem.port);
|
|
||||||
url = Utils.Base64Encode(url);
|
|
||||||
url = string.Format("{0}{1}{2}", Global.ssProtocol, url, remark);
|
|
||||||
}
|
|
||||||
else if (vmessItem.configType == (int)EConfigType.Socks)
|
|
||||||
{
|
|
||||||
var remark = string.Empty;
|
|
||||||
if (!Utils.IsNullOrEmpty(vmessItem.remarks))
|
|
||||||
{
|
|
||||||
remark = "#" + WebUtility.UrlEncode(vmessItem.remarks);
|
|
||||||
}
|
|
||||||
url = string.Format("{0}:{1}@{2}:{3}",
|
|
||||||
vmessItem.security,
|
|
||||||
vmessItem.id,
|
|
||||||
vmessItem.address,
|
|
||||||
vmessItem.port);
|
|
||||||
url = Utils.Base64Encode(url);
|
|
||||||
url = string.Format("{0}{1}{2}", Global.socksProtocol, url, remark);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 移动服务器
|
/// 移动服务器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -426,7 +361,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 +384,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 +404,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 +423,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)
|
||||||
@@ -522,8 +457,7 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddCustomServer(ref Config config, string fileName)
|
public static int AddCustomServer(ref Config config, string fileName)
|
||||||
{
|
{
|
||||||
string newFileName = string.Empty;
|
string newFileName = string.Format("{0}.json", Utils.GetGUID());
|
||||||
newFileName = string.Format("{0}.json", Utils.GetGUID());
|
|
||||||
//newFileName = Path.Combine(Utils.GetTempPath(), newFileName);
|
//newFileName = Path.Combine(Utils.GetTempPath(), newFileName);
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -535,10 +469,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)
|
||||||
@@ -653,6 +589,50 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加服务器或编辑
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="vmessItem"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int AddTrojanServer(ref Config config, VmessItem vmessItem, int index)
|
||||||
|
{
|
||||||
|
vmessItem.configVersion = 2;
|
||||||
|
vmessItem.configType = (int)EConfigType.Trojan;
|
||||||
|
|
||||||
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
|
|
||||||
|
vmessItem.streamSecurity = Global.StreamSecurity;
|
||||||
|
vmessItem.allowInsecure = "false";
|
||||||
|
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
//修改
|
||||||
|
config.vmess[index] = vmessItem;
|
||||||
|
if (config.index.Equals(index))
|
||||||
|
{
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//添加
|
||||||
|
config.vmess.Add(vmessItem);
|
||||||
|
if (config.vmess.Count == 1)
|
||||||
|
{
|
||||||
|
config.index = 0;
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 配置文件版本升级
|
/// 配置文件版本升级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -741,7 +721,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 +730,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
VmessItem vmessItem = V2rayConfigHandler.ImportFromClipboardConfig(str, out msg);
|
VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(str, out string msg);
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -778,6 +757,20 @@ namespace v2rayN.Handler
|
|||||||
countServers++;
|
countServers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (vmessItem.configType == (int)EConfigType.Trojan)
|
||||||
|
{
|
||||||
|
if (AddTrojanServer(ref config, vmessItem, -1) == 0)
|
||||||
|
{
|
||||||
|
countServers++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (vmessItem.configType == (int)EConfigType.VLESS)
|
||||||
|
{
|
||||||
|
if (AddVlessServer(ref config, vmessItem, -1) == 0)
|
||||||
|
{
|
||||||
|
countServers++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return countServers;
|
return countServers;
|
||||||
}
|
}
|
||||||
@@ -791,7 +784,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 +792,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);
|
||||||
@@ -855,5 +850,280 @@ namespace v2rayN.Handler
|
|||||||
ToJsonFile(config);
|
ToJsonFile(config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int AddformMainLvColWidth(ref Config config, string name, int width)
|
||||||
|
{
|
||||||
|
if (config.uiItem.mainLvColWidth == null)
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
if (config.uiItem.mainLvColWidth.ContainsKey(name))
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth[name] = width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth.Add(name, width);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
public static int GetformMainLvColWidth(ref Config config, string name, int width)
|
||||||
|
{
|
||||||
|
if (config.uiItem.mainLvColWidth == null)
|
||||||
|
{
|
||||||
|
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||||
|
}
|
||||||
|
if (config.uiItem.mainLvColWidth.ContainsKey(name))
|
||||||
|
{
|
||||||
|
return config.uiItem.mainLvColWidth[name];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int SortServers(ref Config config, EServerColName name, bool asc)
|
||||||
|
{
|
||||||
|
if (config.vmess.Count <= 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case EServerColName.configType:
|
||||||
|
case EServerColName.remarks:
|
||||||
|
case EServerColName.address:
|
||||||
|
case EServerColName.port:
|
||||||
|
case EServerColName.security:
|
||||||
|
case EServerColName.network:
|
||||||
|
case EServerColName.testResult:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
string itemId = config.getItemId();
|
||||||
|
var items = config.vmess.AsQueryable();
|
||||||
|
|
||||||
|
if (asc)
|
||||||
|
{
|
||||||
|
config.vmess = items.OrderBy(name.ToString()).ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config.vmess = items.OrderByDescending(name.ToString()).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
var index_ = config.vmess.FindIndex(it => it.getItemId() == itemId);
|
||||||
|
if (index_ >= 0)
|
||||||
|
{
|
||||||
|
config.index = index_;
|
||||||
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加服务器或编辑
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="vmessItem"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int AddVlessServer(ref Config config, VmessItem vmessItem, int index)
|
||||||
|
{
|
||||||
|
vmessItem.configVersion = 2;
|
||||||
|
vmessItem.configType = (int)EConfigType.VLESS;
|
||||||
|
|
||||||
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
|
vmessItem.security = vmessItem.security.TrimEx();
|
||||||
|
vmessItem.network = vmessItem.network.TrimEx();
|
||||||
|
vmessItem.headerType = vmessItem.headerType.TrimEx();
|
||||||
|
vmessItem.requestHost = vmessItem.requestHost.TrimEx();
|
||||||
|
vmessItem.path = vmessItem.path.TrimEx();
|
||||||
|
vmessItem.streamSecurity = vmessItem.streamSecurity.TrimEx();
|
||||||
|
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
//修改
|
||||||
|
config.vmess[index] = vmessItem;
|
||||||
|
if (config.index.Equals(index))
|
||||||
|
{
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//添加
|
||||||
|
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
||||||
|
{
|
||||||
|
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
||||||
|
}
|
||||||
|
config.vmess.Add(vmessItem);
|
||||||
|
if (config.vmess.Count == 1)
|
||||||
|
{
|
||||||
|
config.index = 0;
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SaveRoutingItem
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int SaveRoutingRulesItem(ref Config config)
|
||||||
|
{
|
||||||
|
if (config.rules == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (RulesItem sub in config.rules)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// AddRoutingRulesItem
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int AddRoutingRule(ref Config config, RulesItem item, int index)
|
||||||
|
{
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
config.rules[index] = item;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config.rules.Add(item);
|
||||||
|
}
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AddBatchRoutingRules
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="clipboardData"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int AddBatchRoutingRules(ref Config config, string clipboardData)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(clipboardData))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var lstRules = Utils.FromJson<List<RulesItem>>(clipboardData);
|
||||||
|
if (lstRules == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
config.rules.Clear();
|
||||||
|
foreach (var item in lstRules)
|
||||||
|
{
|
||||||
|
config.rules.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MoveRoutingRule
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <param name="eMove"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int MoveRoutingRule(ref Config config, int index, EMove eMove)
|
||||||
|
{
|
||||||
|
int count = config.rules.Count;
|
||||||
|
if (index < 0 || index > config.rules.Count - 1)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
switch (eMove)
|
||||||
|
{
|
||||||
|
case EMove.Top:
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
var item = Utils.DeepCopy(config.rules[index]);
|
||||||
|
config.rules.RemoveAt(index);
|
||||||
|
config.rules.Insert(0, item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EMove.Up:
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
var item = Utils.DeepCopy(config.rules[index]);
|
||||||
|
config.rules.RemoveAt(index);
|
||||||
|
config.rules.Insert(index - 1, item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case EMove.Down:
|
||||||
|
{
|
||||||
|
if (index == count - 1)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
var item = Utils.DeepCopy(config.rules[index]);
|
||||||
|
config.rules.RemoveAt(index);
|
||||||
|
config.rules.Insert(index + 1, item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EMove.Bottom:
|
||||||
|
{
|
||||||
|
if (index == count - 1)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
var item = Utils.DeepCopy(config.rules[index]);
|
||||||
|
config.rules.RemoveAt(index);
|
||||||
|
config.rules.Add(item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,22 +52,30 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
#region Check for updates
|
#region Check for updates
|
||||||
|
|
||||||
private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest";
|
private readonly string nLatestUrl = Global.NUrl + "/latest";
|
||||||
private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip";
|
private const string nUrl = Global.NUrl + "/download/{0}/v2rayN.zip";
|
||||||
private readonly string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest";
|
private readonly string v2flyCoreLatestUrl = Global.v2flyCoreUrl + "/latest";
|
||||||
private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip";
|
private const string v2flyCoreUrl = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip";
|
||||||
|
private readonly string xrayCoreLatestUrl = Global.xrayCoreUrl + "/latest";
|
||||||
|
private const string xrayCoreUrl = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip";
|
||||||
|
|
||||||
public async Task CheckUpdateAsync(string type)
|
public async void 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;
|
||||||
if (type == "Core")
|
if (type == "v2fly")
|
||||||
{
|
{
|
||||||
url = coreLatestUrl;
|
url = v2flyCoreLatestUrl;
|
||||||
|
}
|
||||||
|
else if (type == "xray")
|
||||||
|
{
|
||||||
|
url = xrayCoreLatestUrl;
|
||||||
}
|
}
|
||||||
else if (type == "v2rayN")
|
else if (type == "v2rayN")
|
||||||
{
|
{
|
||||||
@@ -92,14 +100,26 @@ namespace v2rayN.Handler
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取V2RayCore版本
|
/// 获取V2RayCore版本
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string getV2rayVersion()
|
public string getCoreVersion(string type)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string filePath = Utils.GetPath("V2ray.exe");
|
var core = string.Empty;
|
||||||
|
var match = string.Empty;
|
||||||
|
if (type == "v2fly")
|
||||||
|
{
|
||||||
|
core = "v2ray.exe";
|
||||||
|
match = "V2Ray";
|
||||||
|
}
|
||||||
|
else if (type == "xray")
|
||||||
|
{
|
||||||
|
core = "xray.exe";
|
||||||
|
match = "Xray";
|
||||||
|
}
|
||||||
|
string filePath = Utils.GetPath(core);
|
||||||
if (!File.Exists(filePath))
|
if (!File.Exists(filePath))
|
||||||
{
|
{
|
||||||
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases");
|
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"");
|
||||||
//ShowMsg(true, msg);
|
//ShowMsg(true, msg);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -115,10 +135,9 @@ namespace v2rayN.Handler
|
|||||||
p.Start();
|
p.Start();
|
||||||
p.WaitForExit(5000);
|
p.WaitForExit(5000);
|
||||||
string echo = p.StandardOutput.ReadToEnd();
|
string echo = p.StandardOutput.ReadToEnd();
|
||||||
string version = Regex.Match(echo, "V2Ray ([0-9.]+) \\(").Groups[1].Value;
|
string version = Regex.Match(echo, $"{match} ([0-9.]+) \\(").Groups[1].Value;
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
@@ -134,13 +153,22 @@ namespace v2rayN.Handler
|
|||||||
string curVersion;
|
string curVersion;
|
||||||
string message;
|
string message;
|
||||||
string url;
|
string url;
|
||||||
if (type == "Core") {
|
if (type == "v2fly")
|
||||||
curVersion = "v" + getV2rayVersion();
|
{
|
||||||
|
curVersion = "v" + getCoreVersion(type);
|
||||||
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
||||||
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
||||||
url = string.Format(coreUrl, version, osBit);
|
url = string.Format(v2flyCoreUrl, version, osBit);
|
||||||
}
|
}
|
||||||
else if (type == "v2rayN") {
|
else if (type == "xray")
|
||||||
|
{
|
||||||
|
curVersion = "v" + getCoreVersion(type);
|
||||||
|
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
||||||
|
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
||||||
|
url = string.Format(xrayCoreUrl, version, osBit);
|
||||||
|
}
|
||||||
|
else if (type == "v2rayN")
|
||||||
|
{
|
||||||
curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
|
curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
|
||||||
message = string.Format(UIRes.I18N("IsLatestN"), curVersion);
|
message = string.Format(UIRes.I18N("IsLatestN"), curVersion);
|
||||||
url = string.Format(nUrl, version);
|
url = string.Format(nUrl, version);
|
||||||
@@ -170,17 +198,18 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
#region Download
|
#region Download
|
||||||
|
|
||||||
public void DownloadFileAsync(Config config, string url, WebProxy webProxy, int downloadTimeout)
|
public WebClientEx DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout)
|
||||||
{
|
{
|
||||||
|
WebClientEx ws = new WebClientEx();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol();
|
Utils.SetSecurityProtocol();
|
||||||
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, "Downloading..."));
|
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, UIRes.I18N("Downloading")));
|
||||||
|
|
||||||
progressPercentage = -1;
|
progressPercentage = -1;
|
||||||
totalBytesToReceive = 0;
|
totalBytesToReceive = 0;
|
||||||
|
|
||||||
WebClientEx ws = new WebClientEx();
|
//WebClientEx ws = new WebClientEx();
|
||||||
DownloadTimeout = downloadTimeout;
|
DownloadTimeout = downloadTimeout;
|
||||||
if (webProxy != null)
|
if (webProxy != null)
|
||||||
{
|
{
|
||||||
@@ -197,6 +226,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
}
|
}
|
||||||
|
return ws;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
||||||
@@ -226,7 +256,6 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -237,7 +266,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
((WebClientEx)sender).Dispose();
|
((WebClientEx)sender).Dispose();
|
||||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||||
string speed = string.Format("<{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
|
string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.##"));
|
||||||
UpdateCompleted(this, new ResultEventArgs(true, speed));
|
UpdateCompleted(this, new ResultEventArgs(true, speed));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -308,47 +337,24 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
public string WebDownloadStringSync(string url)
|
||||||
|
|
||||||
#region PAC
|
|
||||||
|
|
||||||
public string GenPacFile(string result)
|
|
||||||
{
|
{
|
||||||
|
string source = string.Empty;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File.WriteAllText(Utils.GetTempPath("gfwlist.txt"), result, Encoding.UTF8);
|
Utils.SetSecurityProtocol();
|
||||||
List<string> lines = ParsePacResult(result);
|
|
||||||
string abpContent = Utils.UnGzip(Resources.abp_js);
|
WebClientEx ws = new WebClientEx();
|
||||||
abpContent = abpContent.Replace("__RULES__", JsonConvert.SerializeObject(lines, Formatting.Indented));
|
|
||||||
File.WriteAllText(Utils.GetPath(Global.pacFILE), abpContent, Encoding.UTF8);
|
return ws.DownloadString(new Uri(url));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return ex.Message;
|
|
||||||
}
|
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<string> ParsePacResult(string response)
|
|
||||||
{
|
|
||||||
IEnumerable<char> IgnoredLineBegins = new[] { '!', '[' };
|
|
||||||
|
|
||||||
byte[] bytes = Convert.FromBase64String(response);
|
|
||||||
string content = Encoding.UTF8.GetString(bytes);
|
|
||||||
List<string> valid_lines = new List<string>();
|
|
||||||
using (var sr = new StringReader(content))
|
|
||||||
{
|
|
||||||
foreach (var line in sr.NonWhiteSpaceLines())
|
|
||||||
{
|
|
||||||
if (line.BeginWithAny(IgnoredLineBegins))
|
|
||||||
continue;
|
|
||||||
valid_lines.Add(line);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return valid_lines;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = (int)config.sysProxyType;
|
||||||
if (index > 0)
|
if (index > 0)
|
||||||
{
|
{
|
||||||
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange })[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());
|
||||||
@@ -79,16 +72,19 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.vmess[index].configType != (int)EConfigType.Vmess)
|
if (config.vmess[index].configType != (int)EConfigType.Vmess
|
||||||
|
&& config.vmess[index].configType != (int)EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("NonVmessService"));
|
UI.Show(UIRes.I18N("NonVmessService"));
|
||||||
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,16 +94,15 @@ 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);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName));
|
UI.ShowWarning(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,16 +113,19 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.vmess[index].configType != (int)EConfigType.Vmess)
|
if (config.vmess[index].configType != (int)EConfigType.Vmess
|
||||||
|
&& config.vmess[index].configType != (int)EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("NonVmessService"));
|
UI.Show(UIRes.I18N("NonVmessService"));
|
||||||
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,16 +135,15 @@ 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);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName));
|
UI.ShowWarning(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
683
v2rayN/v2rayN/Handler/ShareHandler.cs
Normal file
683
v2rayN/v2rayN/Handler/ShareHandler.cs
Normal file
@@ -0,0 +1,683 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Web;
|
||||||
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
|
||||||
|
namespace v2rayN.Handler
|
||||||
|
{
|
||||||
|
class ShareHandler
|
||||||
|
{
|
||||||
|
|
||||||
|
#region GetShareUrl
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GetShareUrl
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string GetShareUrl(Config config, int index)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string url = string.Empty;
|
||||||
|
|
||||||
|
VmessItem item = config.vmess[index];
|
||||||
|
if (item.configType == (int)EConfigType.Vmess)
|
||||||
|
{
|
||||||
|
VmessQRCode vmessQRCode = new VmessQRCode
|
||||||
|
{
|
||||||
|
v = item.configVersion.ToString(),
|
||||||
|
ps = item.remarks.TrimEx(), //备注也许很长 ;
|
||||||
|
add = item.address,
|
||||||
|
port = item.port.ToString(),
|
||||||
|
id = item.id,
|
||||||
|
aid = item.alterId.ToString(),
|
||||||
|
net = item.network,
|
||||||
|
type = item.headerType,
|
||||||
|
host = item.requestHost,
|
||||||
|
path = item.path,
|
||||||
|
tls = item.streamSecurity
|
||||||
|
};
|
||||||
|
|
||||||
|
url = Utils.ToJson(vmessQRCode);
|
||||||
|
url = Utils.Base64Encode(url);
|
||||||
|
url = string.Format("{0}{1}", Global.vmessProtocol, url);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (item.configType == (int)EConfigType.Shadowsocks)
|
||||||
|
{
|
||||||
|
string remark = string.Empty;
|
||||||
|
if (!Utils.IsNullOrEmpty(item.remarks))
|
||||||
|
{
|
||||||
|
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||||
|
}
|
||||||
|
url = string.Format("{0}:{1}@{2}:{3}",
|
||||||
|
item.security,
|
||||||
|
item.id,
|
||||||
|
item.address,
|
||||||
|
item.port);
|
||||||
|
url = Utils.Base64Encode(url);
|
||||||
|
url = string.Format("{0}{1}{2}", Global.ssProtocol, url, remark);
|
||||||
|
}
|
||||||
|
else if (item.configType == (int)EConfigType.Socks)
|
||||||
|
{
|
||||||
|
string remark = string.Empty;
|
||||||
|
if (!Utils.IsNullOrEmpty(item.remarks))
|
||||||
|
{
|
||||||
|
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||||
|
}
|
||||||
|
url = string.Format("{0}:{1}@{2}:{3}",
|
||||||
|
item.security,
|
||||||
|
item.id,
|
||||||
|
item.address,
|
||||||
|
item.port);
|
||||||
|
url = Utils.Base64Encode(url);
|
||||||
|
url = string.Format("{0}{1}{2}", Global.socksProtocol, url, remark);
|
||||||
|
}
|
||||||
|
else if (item.configType == (int)EConfigType.Trojan)
|
||||||
|
{
|
||||||
|
string remark = string.Empty;
|
||||||
|
if (!Utils.IsNullOrEmpty(item.remarks))
|
||||||
|
{
|
||||||
|
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||||
|
}
|
||||||
|
string query = string.Empty;
|
||||||
|
if (!Utils.IsNullOrEmpty(item.requestHost))
|
||||||
|
{
|
||||||
|
query = string.Format("?sni={0}", Utils.UrlEncode(item.requestHost));
|
||||||
|
}
|
||||||
|
url = string.Format("{0}@{1}:{2}",
|
||||||
|
item.id,
|
||||||
|
item.address,
|
||||||
|
item.port);
|
||||||
|
url = string.Format("{0}{1}{2}{3}", Global.trojanProtocol, url, query, remark);
|
||||||
|
}
|
||||||
|
else if (item.configType == (int)EConfigType.VLESS)
|
||||||
|
{
|
||||||
|
string remark = string.Empty;
|
||||||
|
if (!Utils.IsNullOrEmpty(item.remarks))
|
||||||
|
{
|
||||||
|
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||||
|
}
|
||||||
|
var dicQuery = new Dictionary<string, string>();
|
||||||
|
if (!Utils.IsNullOrEmpty(item.flow))
|
||||||
|
{
|
||||||
|
dicQuery.Add("flow", item.flow);
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.security))
|
||||||
|
{
|
||||||
|
dicQuery.Add("encryption", item.security);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dicQuery.Add("encryption", "none");
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.streamSecurity))
|
||||||
|
{
|
||||||
|
dicQuery.Add("security", item.streamSecurity);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dicQuery.Add("security", "none");
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.network))
|
||||||
|
{
|
||||||
|
dicQuery.Add("type", item.network);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dicQuery.Add("type", "tcp");
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (item.network)
|
||||||
|
{
|
||||||
|
case "tcp":
|
||||||
|
if (!Utils.IsNullOrEmpty(item.headerType))
|
||||||
|
{
|
||||||
|
dicQuery.Add("headerType", item.headerType);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dicQuery.Add("headerType", "none");
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.requestHost))
|
||||||
|
{
|
||||||
|
dicQuery.Add("host", Utils.UrlEncode(item.requestHost));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "kcp":
|
||||||
|
if (!Utils.IsNullOrEmpty(item.headerType))
|
||||||
|
{
|
||||||
|
dicQuery.Add("headerType", item.headerType);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dicQuery.Add("headerType", "none");
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.path))
|
||||||
|
{
|
||||||
|
dicQuery.Add("seed", Utils.UrlEncode(item.path));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ws":
|
||||||
|
if (!Utils.IsNullOrEmpty(item.requestHost))
|
||||||
|
{
|
||||||
|
dicQuery.Add("host", Utils.UrlEncode(item.requestHost));
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.path))
|
||||||
|
{
|
||||||
|
dicQuery.Add("path", Utils.UrlEncode(item.path));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "http":
|
||||||
|
case "h2":
|
||||||
|
dicQuery["type"] = "http";
|
||||||
|
if (!Utils.IsNullOrEmpty(item.requestHost))
|
||||||
|
{
|
||||||
|
dicQuery.Add("host", Utils.UrlEncode(item.requestHost));
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(item.path))
|
||||||
|
{
|
||||||
|
dicQuery.Add("path", Utils.UrlEncode(item.path));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "quic":
|
||||||
|
if (!Utils.IsNullOrEmpty(item.headerType))
|
||||||
|
{
|
||||||
|
dicQuery.Add("headerType", item.headerType);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dicQuery.Add("headerType", "none");
|
||||||
|
}
|
||||||
|
dicQuery.Add("quicSecurity", Utils.UrlEncode(item.requestHost));
|
||||||
|
dicQuery.Add("key", Utils.UrlEncode(item.path));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
string query = "?" + string.Join("&", dicQuery.Select(x => x.Key + "=" + x.Value).ToArray());
|
||||||
|
|
||||||
|
url = string.Format("{0}@{1}:{2}",
|
||||||
|
item.id,
|
||||||
|
item.address,
|
||||||
|
item.port);
|
||||||
|
url = string.Format("{0}{1}{2}{3}", Global.vlessProtocol, url, query, remark);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ImportShareUrl
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 从剪贴板导入URL
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="fileName"></param>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static VmessItem ImportFromClipboardConfig(string clipboardData, out string msg)
|
||||||
|
{
|
||||||
|
msg = string.Empty;
|
||||||
|
VmessItem vmessItem = new VmessItem();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//载入配置文件
|
||||||
|
string result = clipboardData.TrimEx();// Utils.GetClipboardData();
|
||||||
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("FailedReadConfiguration");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.StartsWith(Global.vmessProtocol))
|
||||||
|
{
|
||||||
|
int indexSplit = result.IndexOf("?");
|
||||||
|
if (indexSplit > 0)
|
||||||
|
{
|
||||||
|
vmessItem = ResolveStdVmess(result) ?? ResolveVmess4Kitsunebi(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem.configType = (int)EConfigType.Vmess;
|
||||||
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
|
result = Utils.Base64Decode(result);
|
||||||
|
|
||||||
|
//转成Json
|
||||||
|
VmessQRCode vmessQRCode = Utils.FromJson<VmessQRCode>(result);
|
||||||
|
if (vmessQRCode == null)
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("FailedConversionConfiguration");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
vmessItem.security = Global.DefaultSecurity;
|
||||||
|
vmessItem.network = Global.DefaultNetwork;
|
||||||
|
vmessItem.headerType = Global.None;
|
||||||
|
|
||||||
|
|
||||||
|
vmessItem.configVersion = Utils.ToInt(vmessQRCode.v);
|
||||||
|
vmessItem.remarks = Utils.ToString(vmessQRCode.ps);
|
||||||
|
vmessItem.address = Utils.ToString(vmessQRCode.add);
|
||||||
|
vmessItem.port = Utils.ToInt(vmessQRCode.port);
|
||||||
|
vmessItem.id = Utils.ToString(vmessQRCode.id);
|
||||||
|
vmessItem.alterId = Utils.ToInt(vmessQRCode.aid);
|
||||||
|
|
||||||
|
if (!Utils.IsNullOrEmpty(vmessQRCode.net))
|
||||||
|
{
|
||||||
|
vmessItem.network = vmessQRCode.net;
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(vmessQRCode.type))
|
||||||
|
{
|
||||||
|
vmessItem.headerType = vmessQRCode.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
vmessItem.requestHost = Utils.ToString(vmessQRCode.host);
|
||||||
|
vmessItem.path = Utils.ToString(vmessQRCode.path);
|
||||||
|
vmessItem.streamSecurity = Utils.ToString(vmessQRCode.tls);
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigHandler.UpgradeServerVersion(ref vmessItem);
|
||||||
|
}
|
||||||
|
else if (result.StartsWith(Global.ssProtocol))
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
||||||
|
|
||||||
|
vmessItem = ResolveSSLegacy(result);
|
||||||
|
if (vmessItem == null)
|
||||||
|
{
|
||||||
|
vmessItem = ResolveSip002(result);
|
||||||
|
}
|
||||||
|
if (vmessItem == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (vmessItem.address.Length == 0 || vmessItem.port == 0 || vmessItem.security.Length == 0 || vmessItem.id.Length == 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
vmessItem.configType = (int)EConfigType.Shadowsocks;
|
||||||
|
}
|
||||||
|
else if (result.StartsWith(Global.socksProtocol))
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
||||||
|
|
||||||
|
vmessItem.configType = (int)EConfigType.Socks;
|
||||||
|
result = result.Substring(Global.socksProtocol.Length);
|
||||||
|
//remark
|
||||||
|
int indexRemark = result.IndexOf("#");
|
||||||
|
if (indexRemark > 0)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
vmessItem.remarks = Utils.UrlDecode(result.Substring(indexRemark + 1, result.Length - indexRemark - 1));
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
result = result.Substring(0, indexRemark);
|
||||||
|
}
|
||||||
|
//part decode
|
||||||
|
int indexS = result.IndexOf("@");
|
||||||
|
if (indexS > 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = Utils.Base64Decode(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] arr1 = result.Split('@');
|
||||||
|
if (arr1.Length != 2)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
string[] arr21 = arr1[0].Split(':');
|
||||||
|
//string[] arr22 = arr1[1].Split(':');
|
||||||
|
int indexPort = arr1[1].LastIndexOf(":");
|
||||||
|
if (arr21.Length != 2 || indexPort < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
vmessItem.address = arr1[1].Substring(0, indexPort);
|
||||||
|
vmessItem.port = Utils.ToInt(arr1[1].Substring(indexPort + 1, arr1[1].Length - (indexPort + 1)));
|
||||||
|
vmessItem.security = arr21[0];
|
||||||
|
vmessItem.id = arr21[1];
|
||||||
|
}
|
||||||
|
else if (result.StartsWith(Global.trojanProtocol))
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
||||||
|
|
||||||
|
vmessItem.configType = (int)EConfigType.Trojan;
|
||||||
|
|
||||||
|
Uri uri = new Uri(result);
|
||||||
|
vmessItem.address = uri.IdnHost;
|
||||||
|
vmessItem.port = uri.Port;
|
||||||
|
vmessItem.id = uri.UserInfo;
|
||||||
|
|
||||||
|
var qurery = HttpUtility.ParseQueryString(uri.Query);
|
||||||
|
vmessItem.requestHost = qurery["sni"] ?? "";
|
||||||
|
|
||||||
|
var remarks = uri.Fragment.Replace("#", "");
|
||||||
|
if (Utils.IsNullOrEmpty(remarks))
|
||||||
|
{
|
||||||
|
vmessItem.remarks = "NONE";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem.remarks = Utils.UrlDecode(remarks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (result.StartsWith(Global.vlessProtocol))
|
||||||
|
{
|
||||||
|
vmessItem = ResolveStdVLESS(result);
|
||||||
|
|
||||||
|
ConfigHandler.UpgradeServerVersion(ref vmessItem);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("NonvmessOrssProtocol");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
msg = UIRes.I18N("Incorrectconfiguration");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return vmessItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static VmessItem ResolveVmess4Kitsunebi(string result)
|
||||||
|
{
|
||||||
|
VmessItem vmessItem = new VmessItem
|
||||||
|
{
|
||||||
|
configType = (int)EConfigType.Vmess
|
||||||
|
};
|
||||||
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
|
int indexSplit = result.IndexOf("?");
|
||||||
|
if (indexSplit > 0)
|
||||||
|
{
|
||||||
|
result = result.Substring(0, indexSplit);
|
||||||
|
}
|
||||||
|
result = Utils.Base64Decode(result);
|
||||||
|
|
||||||
|
string[] arr1 = result.Split('@');
|
||||||
|
if (arr1.Length != 2)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
string[] arr21 = arr1[0].Split(':');
|
||||||
|
string[] arr22 = arr1[1].Split(':');
|
||||||
|
if (arr21.Length != 2 || arr21.Length != 2)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
vmessItem.address = arr22[0];
|
||||||
|
vmessItem.port = Utils.ToInt(arr22[1]);
|
||||||
|
vmessItem.security = arr21[0];
|
||||||
|
vmessItem.id = arr21[1];
|
||||||
|
|
||||||
|
vmessItem.network = Global.DefaultNetwork;
|
||||||
|
vmessItem.headerType = Global.None;
|
||||||
|
vmessItem.remarks = "Alien";
|
||||||
|
vmessItem.alterId = 0;
|
||||||
|
|
||||||
|
return vmessItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static VmessItem ResolveSip002(string result)
|
||||||
|
{
|
||||||
|
Uri parsedUrl;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
parsedUrl = new Uri(result);
|
||||||
|
}
|
||||||
|
catch (UriFormatException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
VmessItem server = new VmessItem
|
||||||
|
{
|
||||||
|
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
||||||
|
address = parsedUrl.IdnHost,
|
||||||
|
port = parsedUrl.Port,
|
||||||
|
};
|
||||||
|
|
||||||
|
// parse base64 UserInfo
|
||||||
|
string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.Unescaped);
|
||||||
|
string base64 = rawUserInfo.Replace('-', '+').Replace('_', '/'); // Web-safe base64 to normal base64
|
||||||
|
string userInfo;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
userInfo = Encoding.UTF8.GetString(Convert.FromBase64String(
|
||||||
|
base64.PadRight(base64.Length + (4 - base64.Length % 4) % 4, '=')));
|
||||||
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2);
|
||||||
|
if (userInfoParts.Length != 2)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
server.security = userInfoParts[0];
|
||||||
|
server.id = userInfoParts[1];
|
||||||
|
|
||||||
|
NameValueCollection queryParameters = HttpUtility.ParseQueryString(parsedUrl.Query);
|
||||||
|
if (queryParameters["plugin"] != null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static readonly Regex UrlFinder = new Regex(@"ss://(?<base64>[A-Za-z0-9+-/=_]+)(?:#(?<tag>\S+))?", RegexOptions.IgnoreCase);
|
||||||
|
private static readonly Regex DetailsParser = new Regex(@"^((?<method>.+?):(?<password>.*)@(?<hostname>.+?):(?<port>\d+?))$", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
private static VmessItem ResolveSSLegacy(string result)
|
||||||
|
{
|
||||||
|
var match = UrlFinder.Match(result);
|
||||||
|
if (!match.Success)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
VmessItem server = new VmessItem();
|
||||||
|
var base64 = match.Groups["base64"].Value.TrimEnd('/');
|
||||||
|
var tag = match.Groups["tag"].Value;
|
||||||
|
if (!Utils.IsNullOrEmpty(tag))
|
||||||
|
{
|
||||||
|
server.remarks = Utils.UrlDecode(tag);
|
||||||
|
}
|
||||||
|
Match details;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
details = DetailsParser.Match(Encoding.UTF8.GetString(Convert.FromBase64String(
|
||||||
|
base64.PadRight(base64.Length + (4 - base64.Length % 4) % 4, '='))));
|
||||||
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (!details.Success)
|
||||||
|
return null;
|
||||||
|
server.security = details.Groups["method"].Value;
|
||||||
|
server.id = details.Groups["password"].Value;
|
||||||
|
server.address = details.Groups["hostname"].Value;
|
||||||
|
server.port = int.Parse(details.Groups["port"].Value);
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static readonly Regex StdVmessUserInfo = new Regex(
|
||||||
|
@"^(?<network>[a-z]+)(\+(?<streamSecurity>[a-z]+))?:(?<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})-(?<alterId>[0-9]+)$");
|
||||||
|
|
||||||
|
private static VmessItem ResolveStdVmess(string result)
|
||||||
|
{
|
||||||
|
VmessItem i = new VmessItem
|
||||||
|
{
|
||||||
|
configType = (int)EConfigType.Vmess,
|
||||||
|
security = "auto"
|
||||||
|
};
|
||||||
|
|
||||||
|
Uri u = new Uri(result);
|
||||||
|
|
||||||
|
i.address = u.IdnHost;
|
||||||
|
i.port = u.Port;
|
||||||
|
i.remarks = u.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||||
|
var q = HttpUtility.ParseQueryString(u.Query);
|
||||||
|
|
||||||
|
var m = StdVmessUserInfo.Match(u.UserInfo);
|
||||||
|
if (!m.Success) return null;
|
||||||
|
|
||||||
|
i.id = m.Groups["id"].Value;
|
||||||
|
if (!int.TryParse(m.Groups["alterId"].Value, out int aid))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
i.alterId = aid;
|
||||||
|
|
||||||
|
if (m.Groups["streamSecurity"].Success)
|
||||||
|
{
|
||||||
|
i.streamSecurity = m.Groups["streamSecurity"].Value;
|
||||||
|
}
|
||||||
|
switch (i.streamSecurity)
|
||||||
|
{
|
||||||
|
case "tls":
|
||||||
|
// TODO tls config
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (!string.IsNullOrWhiteSpace(i.streamSecurity))
|
||||||
|
return null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
i.network = m.Groups["network"].Value;
|
||||||
|
switch (i.network)
|
||||||
|
{
|
||||||
|
case "tcp":
|
||||||
|
string t1 = q["type"] ?? "none";
|
||||||
|
i.headerType = t1;
|
||||||
|
// TODO http option
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "kcp":
|
||||||
|
i.headerType = q["type"] ?? "none";
|
||||||
|
// TODO kcp seed
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ws":
|
||||||
|
string p1 = q["path"] ?? "/";
|
||||||
|
string h1 = q["host"] ?? "";
|
||||||
|
i.requestHost = Utils.UrlDecode(h1);
|
||||||
|
i.path = p1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "http":
|
||||||
|
case "h2":
|
||||||
|
i.network = "h2";
|
||||||
|
string p2 = q["path"] ?? "/";
|
||||||
|
string h2 = q["host"] ?? "";
|
||||||
|
i.requestHost = Utils.UrlDecode(h2);
|
||||||
|
i.path = p2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "quic":
|
||||||
|
string s = q["security"] ?? "none";
|
||||||
|
string k = q["key"] ?? "";
|
||||||
|
string t3 = q["type"] ?? "none";
|
||||||
|
i.headerType = t3;
|
||||||
|
i.requestHost = Utils.UrlDecode(s);
|
||||||
|
i.path = k;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static VmessItem ResolveStdVLESS(string result)
|
||||||
|
{
|
||||||
|
VmessItem item = new VmessItem
|
||||||
|
{
|
||||||
|
configType = (int)EConfigType.VLESS,
|
||||||
|
security = "none"
|
||||||
|
};
|
||||||
|
|
||||||
|
Uri url = new Uri(result);
|
||||||
|
|
||||||
|
item.address = url.IdnHost;
|
||||||
|
item.port = url.Port;
|
||||||
|
item.remarks = url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||||
|
item.id = url.UserInfo;
|
||||||
|
|
||||||
|
var query = HttpUtility.ParseQueryString(url.Query);
|
||||||
|
|
||||||
|
item.flow = query["flow"] ?? "";
|
||||||
|
item.security = query["encryption"] ?? "none";
|
||||||
|
item.streamSecurity = query["security"] ?? "";
|
||||||
|
item.network = query["type"] ?? "tcp";
|
||||||
|
switch (item.network)
|
||||||
|
{
|
||||||
|
case "tcp":
|
||||||
|
item.headerType = query["headerType"] ?? "none";
|
||||||
|
item.requestHost = Utils.UrlDecode(query["host"] ?? "");
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "kcp":
|
||||||
|
item.headerType = query["headerType"] ?? "none";
|
||||||
|
item.path = Utils.UrlDecode(query["seed"] ?? "");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ws":
|
||||||
|
item.requestHost = Utils.UrlDecode(query["host"] ?? "");
|
||||||
|
item.path = Utils.UrlDecode(query["path"] ?? "/");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "http":
|
||||||
|
case "h2":
|
||||||
|
item.network = "h2";
|
||||||
|
item.requestHost = Utils.UrlDecode(query["host"] ?? "");
|
||||||
|
item.path = Utils.UrlDecode(query["path"] ?? "/");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "quic":
|
||||||
|
item.headerType = query["headerType"] ?? "none";
|
||||||
|
item.requestHost = query["quicSecurity"] ?? "none";
|
||||||
|
item.path = Utils.UrlDecode(query["key"] ?? "");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,71 +4,45 @@ 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
|
||||||
{
|
{
|
||||||
class SpeedtestHandler
|
class SpeedtestHandler
|
||||||
{
|
{
|
||||||
private DownloadHandle downloadHandle2;
|
|
||||||
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 ItemIndex
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _selecteds[testCounter - 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SpeedtestHandler(ref Config config, ref V2rayHandler v2rayHandler, List<int> selecteds, string actionType, Action<int, string> update)
|
public SpeedtestHandler(ref Config config, ref V2rayHandler v2rayHandler, List<int> selecteds, string actionType, Action<int, string> update)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_v2rayHandler = v2rayHandler;
|
_v2rayHandler = v2rayHandler;
|
||||||
_selecteds = selecteds;
|
_selecteds = Utils.DeepCopy(selecteds);
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
|
|
||||||
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 +54,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 +63,6 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(10);
|
Thread.Sleep(10);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -128,142 +70,170 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void RunPing()
|
||||||
|
{
|
||||||
|
RunPingSub((int index) =>
|
||||||
|
{
|
||||||
|
long time = Utils.Ping(_config.vmess[index].address);
|
||||||
|
_updateFunc(index, FormatOut(time, "ms"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RunTcping()
|
||||||
|
{
|
||||||
|
RunPingSub((int index) =>
|
||||||
|
{
|
||||||
|
int time = GetTcpingTime(_config.vmess[index].address, _config.vmess[index].port);
|
||||||
|
_updateFunc(index, FormatOut(time, "ms"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void RunRealPing()
|
private void RunRealPing()
|
||||||
{
|
{
|
||||||
|
int pid = -1;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string msg = string.Empty;
|
string msg = string.Empty;
|
||||||
|
|
||||||
Global.reloadV2ray = true;
|
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||||
_v2rayHandler.LoadV2ray(_config, _selecteds);
|
|
||||||
|
|
||||||
Thread.Sleep(5000);
|
//Thread.Sleep(5000);
|
||||||
|
int httpPort = _config.GetLocalPort("speedtest");
|
||||||
var httpPort = _config.GetLocalPort("speedtest");
|
List<Task> tasks = new List<Task>();
|
||||||
foreach (int index in _selecteds)
|
foreach (int itemIndex in _selecteds)
|
||||||
{
|
{
|
||||||
if (_config.vmess[index].configType == (int)EConfigType.Custom)
|
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
tasks.Add(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) ? FormatOut(responseTime, "ms") : FormatOut(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.ToArray());
|
||||||
Global.reloadV2ray = true;
|
|
||||||
_v2rayHandler.LoadV2ray(_config);
|
|
||||||
Thread.Sleep(100);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (pid > 0) _v2rayHandler.V2rayStopPid(pid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int RunAvailabilityCheck() // alias: isLive
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int httpPort = _config.GetLocalPort(Global.InboundHttp);
|
||||||
|
|
||||||
|
Task<int> t = Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
int responseTime = -1;
|
||||||
|
string status = GetRealPingTime(Global.AvailabilityTestUrl, webProxy, out responseTime);
|
||||||
|
bool noError = Utils.IsNullOrEmpty(status);
|
||||||
|
return noError ? responseTime : -1;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return t.Result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void RunSpeedTest()
|
private void RunSpeedTest()
|
||||||
{
|
{
|
||||||
|
int testCounter = 0;
|
||||||
|
int pid = -1;
|
||||||
|
|
||||||
if (_config.vmess.Count <= 0)
|
if (_config.vmess.Count <= 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.reloadV2ray = true;
|
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||||
_v2rayHandler.LoadV2ray(_config, _selecteds);
|
|
||||||
|
|
||||||
Thread.Sleep(5000);
|
string url = _config.speedTestUrl;
|
||||||
|
DownloadHandle downloadHandle2 = new DownloadHandle();
|
||||||
string url = Global.SpeedTestUrl;
|
|
||||||
testCounter = 0;
|
|
||||||
if (downloadHandle2 == null)
|
|
||||||
{
|
|
||||||
downloadHandle2 = new DownloadHandle();
|
|
||||||
downloadHandle2.UpdateCompleted += (sender2, args) =>
|
downloadHandle2.UpdateCompleted += (sender2, args) =>
|
||||||
{
|
{
|
||||||
if (args.Success)
|
_updateFunc(testCounter, args.Msg);
|
||||||
{
|
|
||||||
_updateFunc(ItemIndex, args.Msg);
|
|
||||||
if (ServerSpeedTestSub(testCounter, url) != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_updateFunc(ItemIndex, args.Msg);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
downloadHandle2.Error += (sender2, args) =>
|
downloadHandle2.Error += (sender2, args) =>
|
||||||
{
|
{
|
||||||
_updateFunc(ItemIndex, args.GetException().Message);
|
_updateFunc(testCounter, args.GetException().Message);
|
||||||
if (ServerSpeedTestSub(testCounter, url) != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
if (ServerSpeedTestSub(testCounter, url) != 0)
|
var timeout = 10;
|
||||||
|
foreach (int itemIndex in _selecteds)
|
||||||
{
|
{
|
||||||
return;
|
if (itemIndex >= _config.vmess.Count)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int ServerSpeedTestSub(int index, string url)
|
|
||||||
{
|
{
|
||||||
if (index >= _selecteds.Count)
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||||
{
|
{
|
||||||
Global.reloadV2ray = true;
|
continue;
|
||||||
_v2rayHandler.LoadV2ray(_config);
|
}
|
||||||
return -1;
|
testCounter = itemIndex;
|
||||||
|
int httpPort = _config.GetLocalPort("speedtest");
|
||||||
|
|
||||||
|
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
||||||
|
var ws = downloadHandle2.DownloadFileAsync(url, webProxy, timeout - 2);
|
||||||
|
|
||||||
|
Thread.Sleep(1000 * timeout);
|
||||||
|
|
||||||
|
ws.CancelAsync();
|
||||||
|
|
||||||
|
Thread.Sleep(1000 * 2);
|
||||||
|
}
|
||||||
|
if (pid > 0) _v2rayHandler.V2rayStopPid(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
var httpPort = _config.GetLocalPort("speedtest");
|
|
||||||
index = _selecteds[index];
|
|
||||||
|
|
||||||
testCounter++;
|
|
||||||
var webProxy = new WebProxy(Global.Loopback, httpPort + index);
|
|
||||||
downloadHandle2.DownloadFileAsync(_config, url, webProxy, 20);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 +256,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 +282,14 @@ namespace v2rayN.Handler
|
|||||||
msg = ex.Message;
|
msg = ex.Message;
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
|
}
|
||||||
|
private string FormatOut(object time, string unit)
|
||||||
|
{
|
||||||
|
if (time.ToString().Equals("-1"))
|
||||||
|
{
|
||||||
|
return "Timeout";
|
||||||
|
}
|
||||||
|
return string.Format("{0}{1}", time, unit).PadLeft(6, ' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -22,15 +22,13 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
||||||
private List<string> lstV2ray;
|
private List<string> lstV2ray;
|
||||||
|
private string coreUrl;
|
||||||
public event ProcessDelegate ProcessEvent;
|
public event ProcessDelegate ProcessEvent;
|
||||||
//private int processId = 0;
|
//private int processId = 0;
|
||||||
private Process _process;
|
private Process _process;
|
||||||
|
|
||||||
public V2rayHandler()
|
public V2rayHandler()
|
||||||
{
|
{
|
||||||
lstV2ray = new List<string>();
|
|
||||||
lstV2ray.Add("wv2ray");
|
|
||||||
lstV2ray.Add("v2ray");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -38,11 +36,28 @@ namespace v2rayN.Handler
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void LoadV2ray(Config config)
|
public void LoadV2ray(Config config)
|
||||||
{
|
{
|
||||||
|
if (config.coreType == ECoreType.v2fly_core)
|
||||||
|
{
|
||||||
|
lstV2ray = new List<string>
|
||||||
|
{
|
||||||
|
"wv2ray",
|
||||||
|
"v2ray"
|
||||||
|
};
|
||||||
|
coreUrl = Global.v2flyCoreUrl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lstV2ray = new List<string>
|
||||||
|
{
|
||||||
|
"xray"
|
||||||
|
};
|
||||||
|
coreUrl = Global.xrayCoreUrl;
|
||||||
|
}
|
||||||
|
|
||||||
if (Global.reloadV2ray)
|
if (Global.reloadV2ray)
|
||||||
{
|
{
|
||||||
string msg = string.Empty;
|
|
||||||
string fileName = Utils.GetPath(v2rayConfigRes);
|
string fileName = Utils.GetPath(v2rayConfigRes);
|
||||||
if (V2rayConfigHandler.GenerateClientConfig(config, fileName, false, out msg) != 0)
|
if (V2rayConfigHandler.GenerateClientConfig(config, fileName, false, out string msg) != 0)
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
@@ -55,24 +70,25 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 载入V2ray
|
/// 新建进程,载入V2ray配置文件字符串
|
||||||
|
/// 返回新进程pid。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void LoadV2ray(Config config, List<int> _selecteds)
|
public int LoadV2rayConfigString(Config config, List<int> _selecteds)
|
||||||
{
|
{
|
||||||
if (Global.reloadV2ray)
|
int pid = -1;
|
||||||
{
|
string configStr = V2rayConfigHandler.GenerateClientSpeedtestConfigString(config, _selecteds, out string msg);
|
||||||
string msg = string.Empty;
|
if (configStr == "")
|
||||||
string fileName = Utils.GetPath(v2rayConfigRes);
|
|
||||||
if (V2rayConfigHandler.GenerateClientSpeedtestConfig(config, _selecteds, fileName, out msg) != 0)
|
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
V2rayRestart();
|
pid = V2rayStartNew(configStr);
|
||||||
}
|
//V2rayRestart();
|
||||||
|
// start with -config
|
||||||
}
|
}
|
||||||
|
return pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -104,7 +120,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);
|
||||||
@@ -140,18 +156,27 @@ namespace v2rayN.Handler
|
|||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// V2ray启动
|
/// V2ray停止
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void V2rayStart()
|
public void V2rayStopPid(int pid)
|
||||||
{
|
{
|
||||||
ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString()));
|
|
||||||
|
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
Process _p = Process.GetProcessById(pid);
|
||||||
|
KillProcess(_p);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string V2rayFindexe()
|
||||||
{
|
{
|
||||||
//查找v2ray文件是否存在
|
//查找v2ray文件是否存在
|
||||||
string fileName = string.Empty;
|
string fileName = string.Empty;
|
||||||
|
//lstV2ray.Reverse();
|
||||||
foreach (string name in lstV2ray)
|
foreach (string name in lstV2ray)
|
||||||
{
|
{
|
||||||
string vName = string.Format("{0}.exe", name);
|
string vName = string.Format("{0}.exe", name);
|
||||||
@@ -164,18 +189,92 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
{
|
{
|
||||||
string msg = string.Format(UIRes.I18N("NotFoundCore"), @"https://github.com/v2ray/v2ray-core/releases");
|
string msg = string.Format(UIRes.I18N("NotFoundCore"), coreUrl);
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
return;
|
}
|
||||||
|
return fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
Process p = new Process();
|
/// <summary>
|
||||||
p.StartInfo.FileName = fileName;
|
/// V2ray启动
|
||||||
p.StartInfo.WorkingDirectory = Utils.StartupPath();
|
/// </summary>
|
||||||
p.StartInfo.UseShellExecute = false;
|
private void V2rayStart()
|
||||||
p.StartInfo.RedirectStandardOutput = true;
|
{
|
||||||
p.StartInfo.CreateNoWindow = true;
|
ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString()));
|
||||||
p.StartInfo.StandardOutputEncoding = Encoding.UTF8;
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string fileName = V2rayFindexe();
|
||||||
|
if (fileName == "") return;
|
||||||
|
|
||||||
|
Process p = new Process
|
||||||
|
{
|
||||||
|
StartInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = fileName,
|
||||||
|
WorkingDirectory = Utils.StartupPath(),
|
||||||
|
UseShellExecute = false,
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true,
|
||||||
|
CreateNoWindow = true,
|
||||||
|
StandardOutputEncoding = Encoding.UTF8
|
||||||
|
}
|
||||||
|
};
|
||||||
|
p.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
|
||||||
|
{
|
||||||
|
if (!String.IsNullOrEmpty(e.Data))
|
||||||
|
{
|
||||||
|
string msg = e.Data + Environment.NewLine;
|
||||||
|
ShowMsg(false, msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
p.Start();
|
||||||
|
p.PriorityClass = ProcessPriorityClass.High;
|
||||||
|
p.BeginOutputReadLine();
|
||||||
|
//processId = p.Id;
|
||||||
|
_process = p;
|
||||||
|
|
||||||
|
if (p.WaitForExit(1000))
|
||||||
|
{
|
||||||
|
throw new Exception(p.StandardError.ReadToEnd());
|
||||||
|
}
|
||||||
|
|
||||||
|
Global.processJob.AddProcess(p.Handle);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
string msg = ex.Message;
|
||||||
|
ShowMsg(true, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// V2ray启动,新建进程,传入配置字符串
|
||||||
|
/// </summary>
|
||||||
|
private int V2rayStartNew(string configStr)
|
||||||
|
{
|
||||||
|
ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString()));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string fileName = V2rayFindexe();
|
||||||
|
if (fileName == "") return -1;
|
||||||
|
|
||||||
|
Process p = new Process
|
||||||
|
{
|
||||||
|
StartInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = fileName,
|
||||||
|
Arguments = "-config stdin:",
|
||||||
|
WorkingDirectory = Utils.StartupPath(),
|
||||||
|
UseShellExecute = false,
|
||||||
|
RedirectStandardInput = true,
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true,
|
||||||
|
CreateNoWindow = true,
|
||||||
|
StandardOutputEncoding = Encoding.UTF8
|
||||||
|
}
|
||||||
|
};
|
||||||
p.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
|
p.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
|
||||||
{
|
{
|
||||||
if (!String.IsNullOrEmpty(e.Data))
|
if (!String.IsNullOrEmpty(e.Data))
|
||||||
@@ -186,16 +285,24 @@ namespace v2rayN.Handler
|
|||||||
});
|
});
|
||||||
p.Start();
|
p.Start();
|
||||||
p.BeginOutputReadLine();
|
p.BeginOutputReadLine();
|
||||||
//processId = p.Id;
|
|
||||||
_process = p;
|
p.StandardInput.Write(configStr);
|
||||||
|
p.StandardInput.Close();
|
||||||
|
|
||||||
|
if (p.WaitForExit(1000))
|
||||||
|
{
|
||||||
|
throw new Exception(p.StandardError.ReadToEnd());
|
||||||
|
}
|
||||||
|
|
||||||
Global.processJob.AddProcess(p.Handle);
|
Global.processJob.AddProcess(p.Handle);
|
||||||
|
return p.Id;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
string msg = ex.Message;
|
string msg = ex.Message;
|
||||||
ShowMsg(true, msg);
|
ShowMsg(false, msg);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,60 +3,58 @@ using v2rayN.Mode;
|
|||||||
|
|
||||||
namespace v2rayN.HttpProxyHandler
|
namespace v2rayN.HttpProxyHandler
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 系统代理(http)模式
|
||||||
|
/// </summary>
|
||||||
|
public enum ListenerType
|
||||||
|
{
|
||||||
|
noHttpProxy = 0,
|
||||||
|
GlobalHttp = 1,
|
||||||
|
HttpOpenAndClear = 2,
|
||||||
|
HttpOpenOnly = 3,
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统代理(http)总处理
|
/// 系统代理(http)总处理
|
||||||
/// 启动privoxy提供http协议
|
/// 启动privoxy提供http协议
|
||||||
/// 设置IE系统代理或者PAC模式
|
/// 设置IE系统代理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class HttpProxyHandle
|
class HttpProxyHandle
|
||||||
{
|
{
|
||||||
private static bool Update(Config config, bool forceDisable)
|
private static bool Update(Config config, bool forceDisable)
|
||||||
{
|
{
|
||||||
int type = config.listenerType;
|
// ListenerType type = config.listenerType;
|
||||||
|
var type = ListenerType.noHttpProxy;
|
||||||
if (forceDisable)
|
if (forceDisable)
|
||||||
{
|
{
|
||||||
type = 0;
|
type = ListenerType.noHttpProxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (type != 0)
|
if (type != ListenerType.noHttpProxy)
|
||||||
{
|
{
|
||||||
var port = Global.httpPort;
|
int port = Global.httpPort;
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (type == 1)
|
if (type == ListenerType.GlobalHttp)
|
||||||
{
|
{
|
||||||
//PACServerHandle.Stop();
|
//ProxySetting.SetProxy($"{Global.Loopback}:{port}", Global.IEProxyExceptions, 2);
|
||||||
ProxySetting.SetProxy($"{Global.Loopback}:{port}", Global.IEProxyExceptions, 2);
|
SysProxyHandle.SetIEProxy(true, true, $"{Global.Loopback}:{port}");
|
||||||
}
|
}
|
||||||
else if (type == 2)
|
else if (type == ListenerType.HttpOpenAndClear)
|
||||||
{
|
{
|
||||||
string pacUrl = GetPacUrl();
|
SysProxyHandle.ResetIEProxy();
|
||||||
ProxySetting.SetProxy(pacUrl, "", 4);
|
|
||||||
//PACServerHandle.Stop();
|
|
||||||
PACServerHandle.Init(config);
|
|
||||||
}
|
}
|
||||||
else if (type == 3)
|
else if (type == ListenerType.HttpOpenOnly)
|
||||||
{
|
{
|
||||||
//PACServerHandle.Stop();
|
//SysProxyHandle.ResetIEProxy();
|
||||||
ProxySetting.UnsetProxy();
|
|
||||||
}
|
|
||||||
else if (type == 4)
|
|
||||||
{
|
|
||||||
string pacUrl = GetPacUrl();
|
|
||||||
ProxySetting.UnsetProxy();
|
|
||||||
//PACServerHandle.Stop();
|
|
||||||
PACServerHandle.Init(config);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ProxySetting.UnsetProxy();
|
SysProxyHandle.ResetIEProxy();
|
||||||
//PACServerHandle.Stop();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -83,7 +81,6 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
Global.sysAgent = true;
|
Global.sysAgent = true;
|
||||||
Global.socksPort = localPort;
|
Global.socksPort = localPort;
|
||||||
Global.httpPort = PrivoxyHandler.Instance.RunningPort;
|
Global.httpPort = PrivoxyHandler.Instance.RunningPort;
|
||||||
Global.pacPort = config.GetLocalPort("pac");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,7 +97,10 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Update(config, true);
|
//if (config.listenerType != ListenerType.HttpOpenOnly)
|
||||||
|
//{
|
||||||
|
// Update(config, true);
|
||||||
|
//}
|
||||||
|
|
||||||
PrivoxyHandler.Instance.Stop();
|
PrivoxyHandler.Instance.Stop();
|
||||||
|
|
||||||
@@ -121,6 +121,11 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
public static void RestartHttpAgent(Config config, bool forced)
|
public static void RestartHttpAgent(Config config, bool forced)
|
||||||
{
|
{
|
||||||
bool isRestart = false;
|
bool isRestart = false;
|
||||||
|
//if (config.listenerType == ListenerType.noHttpProxy)
|
||||||
|
//{
|
||||||
|
// // 关闭http proxy时,直接返回
|
||||||
|
// return;
|
||||||
|
//}
|
||||||
//强制重启或者socks端口变化
|
//强制重启或者socks端口变化
|
||||||
if (forced)
|
if (forced)
|
||||||
{
|
{
|
||||||
@@ -142,10 +147,40 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
Update(config, false);
|
Update(config, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetPacUrl()
|
public static bool UpdateSysProxy(Config config, bool forceDisable)
|
||||||
{
|
{
|
||||||
string pacUrl = $"http://{Global.Loopback}:{Global.pacPort}/pac/?t={ DateTime.Now.ToString("HHmmss")}";
|
var type = config.sysProxyType;
|
||||||
return pacUrl;
|
|
||||||
|
if (forceDisable)
|
||||||
|
{
|
||||||
|
type = ESysProxyType.ForcedClear;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Global.httpPort = config.GetLocalPort(Global.InboundHttp);
|
||||||
|
int port = Global.httpPort;
|
||||||
|
if (port <= 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (type == ESysProxyType.ForcedChange)
|
||||||
|
{
|
||||||
|
SysProxyHandle.SetIEProxy(true, true, $"{Global.Loopback}:{port}");
|
||||||
|
}
|
||||||
|
else if (type == ESysProxyType.ForcedClear)
|
||||||
|
{
|
||||||
|
SysProxyHandle.ResetIEProxy();
|
||||||
|
}
|
||||||
|
else if (type == ESysProxyType.Unchanged)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,207 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Properties;
|
|
||||||
using v2rayN.Tool;
|
|
||||||
using v2rayN.Base;
|
|
||||||
|
|
||||||
namespace v2rayN.HttpProxyHandler
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 提供PAC功能支持
|
|
||||||
/// </summary>
|
|
||||||
class PACServerHandle
|
|
||||||
{
|
|
||||||
private static int pacPort = 0;
|
|
||||||
private static HttpWebServer server;
|
|
||||||
private static HttpWebServerB serverB;
|
|
||||||
private static Config _config;
|
|
||||||
|
|
||||||
public static bool IsRunning
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return (pacPort > 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Init(Config config)
|
|
||||||
{
|
|
||||||
_config = config;
|
|
||||||
Global.pacPort = config.GetLocalPort("pac");
|
|
||||||
|
|
||||||
if (InitServer("*"))
|
|
||||||
{
|
|
||||||
pacPort = Global.pacPort;
|
|
||||||
}
|
|
||||||
//else if (InitServer(Global.Loopback))
|
|
||||||
//{
|
|
||||||
// pacPort = Global.pacPort;
|
|
||||||
//}
|
|
||||||
else if (InitServerB(Global.Loopback))
|
|
||||||
{
|
|
||||||
pacPort = Global.pacPort;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Utils.SaveLog("Webserver init failed ");
|
|
||||||
pacPort = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool InitServer(string address)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (pacPort != Global.pacPort)
|
|
||||||
{
|
|
||||||
if (server != null)
|
|
||||||
{
|
|
||||||
server.Stop();
|
|
||||||
server = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (server == null)
|
|
||||||
{
|
|
||||||
string prefixes = string.Format("http://{0}:{1}/pac/", address, Global.pacPort);
|
|
||||||
Utils.SaveLog("Webserver prefixes " + prefixes);
|
|
||||||
|
|
||||||
server = new HttpWebServer(SendResponse, prefixes);
|
|
||||||
server.Run();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Utils.SaveLog("Webserver at " + address);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog("Webserver InitServer " + ex.Message);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool InitServerB(string address)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (pacPort != Global.pacPort)
|
|
||||||
{
|
|
||||||
if (serverB != null)
|
|
||||||
{
|
|
||||||
serverB.Stop();
|
|
||||||
serverB = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serverB == null)
|
|
||||||
{
|
|
||||||
serverB = new HttpWebServerB(Global.pacPort, SendResponse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Utils.SaveLog("WebserverB at " + address);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog("WebserverB InitServer " + ex.Message);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string SendResponse(string address)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var pac = GetPacList(address);
|
|
||||||
return pac;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog("Webserver SendResponse " + ex.Message);
|
|
||||||
return ex.Message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Stop()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (server != null)
|
|
||||||
{
|
|
||||||
server.Stop();
|
|
||||||
server = null;
|
|
||||||
}
|
|
||||||
if (serverB != null)
|
|
||||||
{
|
|
||||||
serverB.Stop();
|
|
||||||
serverB = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog("Webserver Stop " + ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
//try
|
|
||||||
//{
|
|
||||||
// if (httpWebServer == null)
|
|
||||||
// {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// foreach (var key in httpWebServer.Keys)
|
|
||||||
// {
|
|
||||||
// Utils.SaveLog("Webserver Stop " + key.ToString());
|
|
||||||
// ((HttpWebServer)httpWebServer[key]).Stop();
|
|
||||||
// }
|
|
||||||
// httpWebServer.Clear();
|
|
||||||
//}
|
|
||||||
//catch (Exception ex)
|
|
||||||
//{
|
|
||||||
// Utils.SaveLog("Webserver Stop " + ex.Message);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetPacList(string address)
|
|
||||||
{
|
|
||||||
var port = Global.httpPort;
|
|
||||||
if (port <= 0)
|
|
||||||
{
|
|
||||||
return "No port";
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
List<string> lstProxy = new List<string>();
|
|
||||||
lstProxy.Add(string.Format("PROXY {0}:{1};", address, port));
|
|
||||||
var proxy = string.Join("", lstProxy.ToArray());
|
|
||||||
|
|
||||||
string strPacfile = Utils.GetPath(Global.pacFILE);
|
|
||||||
if (!File.Exists(strPacfile))
|
|
||||||
{
|
|
||||||
FileManager.UncompressFile(strPacfile, Resources.pac_txt);
|
|
||||||
}
|
|
||||||
var pac = File.ReadAllText(strPacfile, Encoding.UTF8);
|
|
||||||
pac = pac.Replace("__PROXY__", proxy);
|
|
||||||
|
|
||||||
if (_config.userPacRule.Count > 0)
|
|
||||||
{
|
|
||||||
var keyWords = "var rules = [";
|
|
||||||
if (pac.IndexOf(keyWords) >= 0)
|
|
||||||
{
|
|
||||||
var userPac = string.Join($"\",{Environment.NewLine}\"", _config.userPacRule.ToArray());
|
|
||||||
userPac = string.Format("\"{0}\",", userPac);
|
|
||||||
pac = pac.Replace(keyWords, keyWords + userPac);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return pac;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
}
|
|
||||||
return "No pac content";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -74,7 +74,7 @@ namespace v2rayN.HttpProxyHandler
|
|||||||
if (_process == null)
|
if (_process == null)
|
||||||
{
|
{
|
||||||
|
|
||||||
string privoxyConfig = Resources.privoxy_conf;
|
string privoxyConfig = "";//Resources.privoxy_conf;
|
||||||
RunningPort = config.GetLocalPort(Global.InboundHttp);
|
RunningPort = config.GetLocalPort(Global.InboundHttp);
|
||||||
privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", localPort.ToString());
|
privoxyConfig = privoxyConfig.Replace("__SOCKS_PORT__", localPort.ToString());
|
||||||
privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", RunningPort.ToString());
|
privoxyConfig = privoxyConfig.Replace("__PRIVOXY_BIND_PORT__", RunningPort.ToString());
|
||||||
@@ -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
|
||||||
|
|||||||
192
v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs
Normal file
192
v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Properties;
|
||||||
|
using v2rayN.Tool;
|
||||||
|
|
||||||
|
namespace v2rayN.HttpProxyHandler
|
||||||
|
{
|
||||||
|
public static class SysProxyHandle
|
||||||
|
{
|
||||||
|
//private const string _userWininetConfigFile = "user-wininet.json";
|
||||||
|
|
||||||
|
//private static string _queryStr;
|
||||||
|
|
||||||
|
// In general, this won't change
|
||||||
|
// format:
|
||||||
|
// <flags><CR-LF>
|
||||||
|
// <proxy-server><CR-LF>
|
||||||
|
// <bypass-list><CR-LF>
|
||||||
|
// <pac-url>
|
||||||
|
private static SysproxyConfig _userSettings = null;
|
||||||
|
|
||||||
|
enum RET_ERRORS : int
|
||||||
|
{
|
||||||
|
RET_NO_ERROR = 0,
|
||||||
|
INVALID_FORMAT = 1,
|
||||||
|
NO_PERMISSION = 2,
|
||||||
|
SYSCALL_FAILED = 3,
|
||||||
|
NO_MEMORY = 4,
|
||||||
|
INVAILD_OPTION_COUNT = 5,
|
||||||
|
};
|
||||||
|
|
||||||
|
static SysProxyHandle()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FileManager.UncompressFile(Utils.GetTempPath("sysproxy.exe"),
|
||||||
|
Environment.Is64BitOperatingSystem ? Resources.sysproxy64_exe : Resources.sysproxy_exe);
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetIEProxy(bool enable, bool global, string strProxy)
|
||||||
|
{
|
||||||
|
//Read();
|
||||||
|
|
||||||
|
//if (!_userSettings.UserSettingsRecorded)
|
||||||
|
//{
|
||||||
|
// // record user settings
|
||||||
|
// ExecSysproxy("query");
|
||||||
|
// //ParseQueryStr(_queryStr);
|
||||||
|
//}
|
||||||
|
|
||||||
|
string arguments;
|
||||||
|
if (enable)
|
||||||
|
{
|
||||||
|
arguments = global
|
||||||
|
? $"global {strProxy} {Global.IEProxyExceptions}"
|
||||||
|
: $"pac {strProxy}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// restore user settings
|
||||||
|
string flags = _userSettings.Flags;
|
||||||
|
string proxy_server = _userSettings.ProxyServer ?? "-";
|
||||||
|
string bypass_list = _userSettings.BypassList ?? "-";
|
||||||
|
string pac_url = _userSettings.PacUrl ?? "-";
|
||||||
|
arguments = $"set {flags} {proxy_server} {bypass_list} {pac_url}";
|
||||||
|
|
||||||
|
// have to get new settings
|
||||||
|
_userSettings.UserSettingsRecorded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Save();
|
||||||
|
ExecSysproxy(arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set system proxy to 1 (null) (null) (null)
|
||||||
|
public static bool ResetIEProxy()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// clear user-wininet.json
|
||||||
|
//_userSettings = new SysproxyConfig();
|
||||||
|
//Save();
|
||||||
|
// clear system setting
|
||||||
|
ExecSysproxy("set 1 - - -");
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ExecSysproxy(string arguments)
|
||||||
|
{
|
||||||
|
// using event to avoid hanging when redirect standard output/error
|
||||||
|
// ref: https://stackoverflow.com/questions/139593/processstartinfo-hanging-on-waitforexit-why
|
||||||
|
// and http://blog.csdn.net/zhangweixing0/article/details/7356841
|
||||||
|
using (AutoResetEvent outputWaitHandle = new AutoResetEvent(false))
|
||||||
|
using (AutoResetEvent errorWaitHandle = new AutoResetEvent(false))
|
||||||
|
{
|
||||||
|
using (Process process = new Process())
|
||||||
|
{
|
||||||
|
// Configure the process using the StartInfo properties.
|
||||||
|
process.StartInfo.FileName = Utils.GetTempPath("sysproxy.exe");
|
||||||
|
process.StartInfo.Arguments = arguments;
|
||||||
|
process.StartInfo.WorkingDirectory = Utils.GetTempPath();
|
||||||
|
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
||||||
|
process.StartInfo.UseShellExecute = false;
|
||||||
|
process.StartInfo.RedirectStandardError = true;
|
||||||
|
process.StartInfo.RedirectStandardOutput = true;
|
||||||
|
|
||||||
|
// Need to provide encoding info, or output/error strings we got will be wrong.
|
||||||
|
process.StartInfo.StandardOutputEncoding = Encoding.Unicode;
|
||||||
|
process.StartInfo.StandardErrorEncoding = Encoding.Unicode;
|
||||||
|
|
||||||
|
process.StartInfo.CreateNoWindow = true;
|
||||||
|
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
StringBuilder error = new StringBuilder();
|
||||||
|
|
||||||
|
process.OutputDataReceived += (sender, e) =>
|
||||||
|
{
|
||||||
|
if (e.Data == null)
|
||||||
|
{
|
||||||
|
outputWaitHandle.Set();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output.AppendLine(e.Data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
process.ErrorDataReceived += (sender, e) =>
|
||||||
|
{
|
||||||
|
if (e.Data == null)
|
||||||
|
{
|
||||||
|
errorWaitHandle.Set();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error.AppendLine(e.Data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
try
|
||||||
|
{
|
||||||
|
process.Start();
|
||||||
|
|
||||||
|
process.BeginErrorReadLine();
|
||||||
|
process.BeginOutputReadLine();
|
||||||
|
|
||||||
|
process.WaitForExit();
|
||||||
|
}
|
||||||
|
catch (System.ComponentModel.Win32Exception e)
|
||||||
|
{
|
||||||
|
|
||||||
|
// log the arguments
|
||||||
|
throw new Exception(process.StartInfo.Arguments);
|
||||||
|
}
|
||||||
|
string stderr = error.ToString();
|
||||||
|
string stdout = output.ToString();
|
||||||
|
|
||||||
|
int exitCode = process.ExitCode;
|
||||||
|
if (exitCode != (int)RET_ERRORS.RET_NO_ERROR)
|
||||||
|
{
|
||||||
|
throw new Exception(stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (arguments == "query")
|
||||||
|
//{
|
||||||
|
// if (stdout.IsNullOrWhiteSpace() || stdout.IsNullOrEmpty())
|
||||||
|
// {
|
||||||
|
// throw new Exception("failed to query wininet settings");
|
||||||
|
// }
|
||||||
|
// _queryStr = stdout;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
14
v2rayN/v2rayN/Mode/ComboItem.cs
Normal file
14
v2rayN/v2rayN/Mode/ComboItem.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
class ComboItem
|
||||||
|
{
|
||||||
|
public int ID
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public string Text
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.HttpProxyHandler;
|
||||||
|
|
||||||
|
|
||||||
namespace v2rayN.Mode
|
namespace v2rayN.Mode
|
||||||
{
|
{
|
||||||
@@ -65,39 +67,6 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 路由模式
|
|
||||||
/// </summary>
|
|
||||||
public string routingMode
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 用户自定义需代理的网址或ip
|
|
||||||
/// </summary>
|
|
||||||
public List<string> useragent
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 用户自定义直连的网址或ip
|
|
||||||
/// </summary>
|
|
||||||
public List<string> userdirect
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 用户自定义阻止的网址或ip
|
|
||||||
/// </summary>
|
|
||||||
public List<string> userblock
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// KcpItem
|
/// KcpItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -107,17 +76,24 @@ namespace v2rayN.Mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 监听状态 0-not 1-http 2-PAC
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int listenerType
|
public ESysProxyType sysProxyType
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义GFWList url
|
/// 自定义服务器下载测速url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string urlGFWList
|
public string speedTestUrl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义“服务器真连接延迟”测试url
|
||||||
|
/// </summary>
|
||||||
|
public string speedPingTestUrl
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
@@ -138,6 +114,14 @@ namespace v2rayN.Mode
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 去重时优先保留较旧(顶部)节点
|
||||||
|
/// </summary>
|
||||||
|
public bool keepOlderDedupl
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 视图刷新率
|
/// 视图刷新率
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -154,6 +138,15 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否允许不安全连接
|
||||||
|
/// </summary>
|
||||||
|
public bool defAllowInsecure
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订阅
|
/// 订阅
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -168,8 +161,16 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
public List<RulesItem> rules
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
public List<string> userPacRule
|
public ECoreType coreType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
public bool ignoreGeoUpdateCore
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
@@ -273,7 +274,7 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
if (index < 0 || Utils.IsNullOrEmpty(vmess[index].allowInsecure))
|
if (index < 0 || Utils.IsNullOrEmpty(vmess[index].allowInsecure))
|
||||||
{
|
{
|
||||||
return true;
|
return defAllowInsecure;
|
||||||
}
|
}
|
||||||
return Convert.ToBoolean(vmess[index].allowInsecure);
|
return Convert.ToBoolean(vmess[index].allowInsecure);
|
||||||
}
|
}
|
||||||
@@ -284,10 +285,7 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 1;
|
return GetLocalPort(Global.InboundSocks) + 1;
|
||||||
}
|
}
|
||||||
else if (protocol == "pac")
|
|
||||||
{
|
|
||||||
return GetLocalPort(Global.InboundSocks) + 2;
|
|
||||||
}
|
|
||||||
else if (protocol == "speedtest")
|
else if (protocol == "speedtest")
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 103;
|
return GetLocalPort(Global.InboundSocks) + 103;
|
||||||
@@ -332,7 +330,14 @@ namespace v2rayN.Mode
|
|||||||
|
|
||||||
return vmess[index].getItemId();
|
return vmess[index].getItemId();
|
||||||
}
|
}
|
||||||
|
public string flow()
|
||||||
|
{
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
return vmess[index].flow.TrimEx();
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -358,14 +363,14 @@ namespace v2rayN.Mode
|
|||||||
configType = (int)EConfigType.Vmess;
|
configType = (int)EConfigType.Vmess;
|
||||||
testResult = string.Empty;
|
testResult = string.Empty;
|
||||||
subid = string.Empty;
|
subid = string.Empty;
|
||||||
|
flow = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string getSummary()
|
public string getSummary()
|
||||||
{
|
{
|
||||||
string summary = string.Empty;
|
string summary = string.Format("[{0}] ", ((EConfigType)configType).ToString());
|
||||||
summary = string.Format("{0}-", ((EConfigType)configType).ToString());
|
|
||||||
string[] arrAddr = address.Split('.');
|
string[] arrAddr = address.Split('.');
|
||||||
string addr = string.Empty;
|
string addr;
|
||||||
if (arrAddr.Length > 2)
|
if (arrAddr.Length > 2)
|
||||||
{
|
{
|
||||||
addr = $"{arrAddr[0]}***{arrAddr[arrAddr.Length - 1]}";
|
addr = $"{arrAddr[0]}***{arrAddr[arrAddr.Length - 1]}";
|
||||||
@@ -378,21 +383,26 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
addr = address;
|
addr = address;
|
||||||
}
|
}
|
||||||
if (configType == (int)EConfigType.Vmess)
|
switch (configType)
|
||||||
{
|
{
|
||||||
|
case (int)EConfigType.Vmess:
|
||||||
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
||||||
}
|
break;
|
||||||
else if (configType == (int)EConfigType.Shadowsocks)
|
case (int)EConfigType.Shadowsocks:
|
||||||
{
|
|
||||||
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
||||||
}
|
break;
|
||||||
else if (configType == (int)EConfigType.Socks)
|
case (int)EConfigType.Socks:
|
||||||
{
|
|
||||||
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
||||||
}
|
break;
|
||||||
else
|
case (int)EConfigType.VLESS:
|
||||||
{
|
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
||||||
|
break;
|
||||||
|
case (int)EConfigType.Trojan:
|
||||||
|
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
summary += string.Format("{0}", remarks);
|
summary += string.Format("{0}", remarks);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return summary;
|
return summary;
|
||||||
}
|
}
|
||||||
@@ -419,7 +429,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;
|
||||||
}
|
}
|
||||||
@@ -546,6 +556,14 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VLESS flow
|
||||||
|
/// </summary>
|
||||||
|
public string flow
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
@@ -672,10 +690,16 @@ namespace v2rayN.Mode
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class UIItem
|
public class UIItem
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public int mainQRCodeWidth { get; set; } = 600;
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Drawing.Size mainSize
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, int> mainLvColWidth
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ namespace v2rayN.Mode
|
|||||||
Vmess = 1,
|
Vmess = 1,
|
||||||
Custom = 2,
|
Custom = 2,
|
||||||
Shadowsocks = 3,
|
Shadowsocks = 3,
|
||||||
Socks = 4
|
Socks = 4,
|
||||||
|
VLESS = 5,
|
||||||
|
Trojan = 6
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
9
v2rayN/v2rayN/Mode/ECoreType.cs
Normal file
9
v2rayN/v2rayN/Mode/ECoreType.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public enum ECoreType
|
||||||
|
{
|
||||||
|
v2fly_core = 0,
|
||||||
|
Xray_core = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
21
v2rayN/v2rayN/Mode/EServerColName.cs
Normal file
21
v2rayN/v2rayN/Mode/EServerColName.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public enum EServerColName
|
||||||
|
{
|
||||||
|
def = 0,
|
||||||
|
configType,
|
||||||
|
remarks,
|
||||||
|
address,
|
||||||
|
port,
|
||||||
|
security,
|
||||||
|
network,
|
||||||
|
subRemarks,
|
||||||
|
testResult,
|
||||||
|
|
||||||
|
todayDown,
|
||||||
|
todayUp,
|
||||||
|
totalDown,
|
||||||
|
totalUp
|
||||||
|
}
|
||||||
|
}
|
||||||
10
v2rayN/v2rayN/Mode/ESysProxyType.cs
Normal file
10
v2rayN/v2rayN/Mode/ESysProxyType.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public enum ESysProxyType
|
||||||
|
{
|
||||||
|
ForcedClear = 0,
|
||||||
|
ForcedChange = 1,
|
||||||
|
Unchanged = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
27
v2rayN/v2rayN/Mode/RulesItem.cs
Normal file
27
v2rayN/v2rayN/Mode/RulesItem.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class RulesItem
|
||||||
|
{
|
||||||
|
public string remarks { get; set; }
|
||||||
|
|
||||||
|
public string type { get; set; }
|
||||||
|
|
||||||
|
public string port { get; set; }
|
||||||
|
|
||||||
|
public List<string> inboundTag { get; set; }
|
||||||
|
|
||||||
|
public string outboundTag { get; set; }
|
||||||
|
|
||||||
|
public List<string> ip { get; set; }
|
||||||
|
|
||||||
|
public List<string> domain { get; set; }
|
||||||
|
|
||||||
|
public List<string> protocol { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -35,7 +35,7 @@ namespace v2rayN.Mode
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// DNS 配置
|
/// DNS 配置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Dns dns { get; set; }
|
public object dns { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路由配置
|
/// 路由配置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -57,8 +57,8 @@ namespace v2rayN.Mode
|
|||||||
|
|
||||||
public class SystemPolicy
|
public class SystemPolicy
|
||||||
{
|
{
|
||||||
public bool statsInboundUplink;
|
public bool statsOutboundUplink;
|
||||||
public bool statsInboundDownlink;
|
public bool statsOutboundDownlink;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Log
|
public class Log
|
||||||
@@ -132,6 +132,15 @@ namespace v2rayN.Mode
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<UsersItem> clients { get; set; }
|
public List<UsersItem> clients { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VLESS
|
||||||
|
/// </summary>
|
||||||
|
public string decryption { get; set; }
|
||||||
|
|
||||||
|
public bool allowTransparent { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UsersItem
|
public class UsersItem
|
||||||
@@ -152,6 +161,16 @@ namespace v2rayN.Mode
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string security { get; set; }
|
public string security { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VLESS
|
||||||
|
/// </summary>
|
||||||
|
public string encryption { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VLESS
|
||||||
|
/// </summary>
|
||||||
|
public string flow { get; set; }
|
||||||
}
|
}
|
||||||
public class Sniffing
|
public class Sniffing
|
||||||
{
|
{
|
||||||
@@ -304,34 +323,6 @@ namespace v2rayN.Mode
|
|||||||
public List<string> servers { get; set; }
|
public List<string> servers { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RulesItem
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public string type { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public string port { get; set; }
|
|
||||||
|
|
||||||
public List<string> inboundTag { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public string outboundTag { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public List<string> ip { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public List<string> domain { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Routing
|
public class Routing
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -382,6 +373,11 @@ namespace v2rayN.Mode
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public QuicSettings quicSettings { get; set; }
|
public QuicSettings quicSettings { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VLESS xtls
|
||||||
|
/// </summary>
|
||||||
|
public TlsSettings xtlsSettings { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TlsSettings
|
public class TlsSettings
|
||||||
@@ -399,10 +395,6 @@ namespace v2rayN.Mode
|
|||||||
|
|
||||||
public class TcpSettings
|
public class TcpSettings
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// 是否重用 TCP 连接
|
|
||||||
/// </summary>
|
|
||||||
public bool connectionReuse { get; set; }
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据包头部伪装设置
|
/// 数据包头部伪装设置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -459,15 +451,14 @@ namespace v2rayN.Mode
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Header header { get; set; }
|
public Header header { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string seed { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class WsSettings
|
public class WsSettings
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public bool connectionReuse { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Reflection;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Forms;
|
using v2rayN.Forms;
|
||||||
@@ -26,27 +25,20 @@ 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);
|
||||||
|
|
||||||
|
|
||||||
//AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
//AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
||||||
|
|
||||||
Thread.Sleep(300); // 尽量避免切换语言后提示“已经运行”
|
if (!IsDuplicateInstance())
|
||||||
Process instance = RunningInstance();
|
|
||||||
if (instance == null)
|
|
||||||
{
|
{
|
||||||
if (!UnzipLibs())
|
|
||||||
{
|
|
||||||
UI.Show($"Error preparing the environment(准备运行环境出错)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Utils.SaveLog("v2rayN start up " + Utils.GetVersion());
|
Utils.SaveLog("v2rayN start up " + Utils.GetVersion());
|
||||||
|
|
||||||
//设置语言环境
|
//设置语言环境
|
||||||
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);
|
||||||
@@ -54,7 +46,7 @@ namespace v2rayN
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.Show($"v2rayN is already running(v2rayN已经运行)");
|
UI.ShowWarning($"v2rayN is already running(v2rayN已经运行)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,26 +73,20 @@ namespace v2rayN
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取正在运行的实例,没有运行的实例返回null;
|
/// 检查是否已在运行
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Process RunningInstance()
|
public static bool IsDuplicateInstance()
|
||||||
{
|
{
|
||||||
Process current = Process.GetCurrentProcess();
|
//string name = "v2rayN";
|
||||||
Process[] processes = Process.GetProcessesByName(current.ProcessName);
|
|
||||||
foreach (Process process in processes)
|
string name = Utils.GetExePath(); // Allow different locations to run
|
||||||
{
|
name = name.Replace("\\", "/"); // https://stackoverflow.com/questions/20714120/could-not-find-a-part-of-the-path-error-while-creating-mutex
|
||||||
if (process.Id != current.Id)
|
|
||||||
{
|
Global.mutexObj = new Mutex(false, name, out bool bCreatedNew);
|
||||||
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == process.MainModule.FileName)
|
return !bCreatedNew;
|
||||||
{
|
|
||||||
return process;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -109,21 +95,5 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject);
|
Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool UnzipLibs()
|
|
||||||
{
|
|
||||||
var fileName = Utils.GetPath("libs.zip");
|
|
||||||
if (!FileManager.ByteArrayToFile(fileName, Resources.libs))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!FileManager.ZipExtractToFile(fileName))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// 有关程序集的常规信息通过以下
|
// 有关程序集的常规信息通过以下
|
||||||
@@ -8,9 +7,9 @@ using System.Runtime.InteropServices;
|
|||||||
[assembly: AssemblyTitle("v2rayN")]
|
[assembly: AssemblyTitle("v2rayN")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Microsoft")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("v2rayN")]
|
[assembly: AssemblyProduct("v2rayN")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2019")]
|
[assembly: AssemblyCopyright("Copyright © 2019-2020 (GPLv3)")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
@@ -33,4 +32,4 @@ using System.Runtime.InteropServices;
|
|||||||
// 方法是按如下所示使用“*”:
|
// 方法是按如下所示使用“*”:
|
||||||
//[assembly: AssemblyVersion("1.0.*")]
|
//[assembly: AssemblyVersion("1.0.*")]
|
||||||
//[assembly: AssemblyVersion("1.0.0")]
|
//[assembly: AssemblyVersion("1.0.0")]
|
||||||
[assembly: AssemblyFileVersion("3.7")]
|
[assembly: AssemblyFileVersion("4.5")]
|
||||||
|
|||||||
79
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
79
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
@@ -19,7 +19,7 @@ namespace v2rayN.Properties {
|
|||||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
@@ -70,16 +70,6 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Byte[] 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static byte[] abp_js {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("abp_js", resourceCulture);
|
|
||||||
return ((byte[])(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -100,16 +90,6 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Byte[] 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static byte[] libs {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("libs", resourceCulture);
|
|
||||||
return ((byte[])(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -140,33 +120,6 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找 System.Byte[] 类型的本地化资源。
|
|
||||||
/// </summary>
|
|
||||||
internal static byte[] pac_txt {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("pac_txt", resourceCulture);
|
|
||||||
return ((byte[])(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 listen-address __PRIVOXY_BIND_IP__:__PRIVOXY_BIND_PORT__
|
|
||||||
///toggle 0
|
|
||||||
///logfile v2ray_privoxy.log
|
|
||||||
///show-on-task-bar 0
|
|
||||||
///activity-animation 0
|
|
||||||
///forward-socks5 / 127.0.0.1:__SOCKS_PORT__ .
|
|
||||||
///max-client-connections 2048
|
|
||||||
///hide-console
|
|
||||||
/// 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
internal static string privoxy_conf {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("privoxy_conf", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Byte[] 类型的本地化资源。
|
/// 查找 System.Byte[] 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -207,6 +160,16 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap share {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("share", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -216,5 +179,25 @@ namespace v2rayN.Properties {
|
|||||||
return ((System.Drawing.Bitmap)(obj));
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找 System.Byte[] 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static byte[] sysproxy_exe {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("sysproxy_exe", resourceCulture);
|
||||||
|
return ((byte[])(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找 System.Byte[] 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static byte[] sysproxy64_exe {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("sysproxy64_exe", resourceCulture);
|
||||||
|
return ((byte[])(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user