Compare commits
97 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e256ec5401 | ||
|
|
3defba6290 | ||
|
|
c201d986c5 | ||
|
|
36aad4424e | ||
|
|
b29fb1e2a3 | ||
|
|
d5aa307efb | ||
|
|
48928613bf | ||
|
|
52b8f480f6 | ||
|
|
bcda8bd602 | ||
|
|
2a11fe11e8 | ||
|
|
7ec0607fec | ||
|
|
aa41a8675e | ||
|
|
19f9bff6fe | ||
|
|
4e65732a4e | ||
|
|
47c843bf09 | ||
|
|
a7741a0b7d | ||
|
|
6f3fbdfe17 | ||
|
|
3be93df63f | ||
|
|
6259539c87 | ||
|
|
9654009650 | ||
|
|
62e796cf5a | ||
|
|
af820bb0f2 | ||
|
|
8f5bb3591b | ||
|
|
7eafae98d4 | ||
|
|
1d4e5baafb | ||
|
|
9894aa053f | ||
|
|
4ada8fea27 | ||
|
|
4d013a206b | ||
|
|
2d8a707bed | ||
|
|
0e55a859ea | ||
|
|
0b1ec520f4 | ||
|
|
fcc5f29882 | ||
|
|
d431c63245 | ||
|
|
15f8db64e7 | ||
|
|
c2ea14151e | ||
|
|
977f0428e2 | ||
|
|
f110446738 | ||
|
|
90289120d3 | ||
|
|
688f206555 | ||
|
|
38c739c45d | ||
|
|
73c79ca7bf | ||
|
|
978975ee2d | ||
|
|
d7dc0dff50 | ||
|
|
a3aa6c045f | ||
|
|
785ebc49fc | ||
|
|
fde1c98ddd | ||
|
|
024040163a | ||
|
|
e95b5e04c0 | ||
|
|
815826c856 | ||
|
|
1c5cc190c5 | ||
|
|
50b109ca71 | ||
|
|
3aa48a9a3e | ||
|
|
09702b9bde | ||
|
|
35f6cd3d9c | ||
|
|
b62f1786a9 | ||
|
|
b21ad28d5b | ||
|
|
8d66c0d180 | ||
|
|
ec8aa0df18 | ||
|
|
e824d8e91d | ||
|
|
b919422ec4 | ||
|
|
a8bc9ce605 | ||
|
|
e2f399eeb1 | ||
|
|
82924278b5 | ||
|
|
bb828a4e06 | ||
|
|
74933ac146 | ||
|
|
0d315f0dc3 | ||
|
|
372ee346dc | ||
|
|
cb462ab944 | ||
|
|
606da79372 | ||
|
|
0801c3db64 | ||
|
|
35deb0c915 | ||
|
|
fd4d712688 | ||
|
|
354fc618b0 | ||
|
|
82b6ee5ad2 | ||
|
|
645e6c4ec0 | ||
|
|
cdc83bc9d7 | ||
|
|
70feacd276 | ||
|
|
ece4572058 | ||
|
|
4d16a5e801 | ||
|
|
1493a8b03f | ||
|
|
d20791bf73 | ||
|
|
7bb91f57ac | ||
|
|
b7a6004830 | ||
|
|
dee5613f2f | ||
|
|
e58e0d6ac7 | ||
|
|
a2679e009d | ||
|
|
78d6bcd57a | ||
|
|
026936c92f | ||
|
|
5e5893362c | ||
|
|
5b8ce1836b | ||
|
|
d71f3fafcf | ||
|
|
828f93bc5c | ||
|
|
f947c541c9 | ||
|
|
539b6aafd9 | ||
|
|
c3971bda05 | ||
|
|
8f17331db2 | ||
|
|
583e824337 |
@@ -1,3 +1,12 @@
|
|||||||
|
---
|
||||||
|
name: Bug 报告
|
||||||
|
about: 在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
||||||
|
title: "[BUG]"
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
||||||
|
|
||||||
### 预期行为
|
### 预期行为
|
||||||
@@ -22,4 +31,3 @@
|
|||||||
### 环境信息(客户端请升级至最新正式版)
|
### 环境信息(客户端请升级至最新正式版)
|
||||||
|
|
||||||
### 额外信息(可选)
|
### 额外信息(可选)
|
||||||
|
|
||||||
20
.github/ISSUE_TEMPLATE/feature---.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature---.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature 请求
|
||||||
|
about: 为这个项目提出一个建议
|
||||||
|
title: "[Feature request]"
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**你的功能请求是否与一个问题有关?请描述。**
|
||||||
|
清楚而简洁地描述问题是什么。例如。我总是感到沮丧,当 [...]
|
||||||
|
|
||||||
|
**描述你希望的解决方案**
|
||||||
|
对你希望发生的事情进行清晰、简明的描述。
|
||||||
|
|
||||||
|
**描述你所考虑的替代方案**
|
||||||
|
对你考虑过的任何替代解决方案或功能进行清晰、简洁的描述。
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
12
README.md
12
README.md
@@ -1,4 +1,11 @@
|
|||||||
# v2rayN
|
# v2rayN
|
||||||
|
A V2Ray client for Windows, support [Xray core](https://github.com/XTLS/Xray-core) and [v2fly core](https://github.com/v2fly/v2ray-core)
|
||||||
|
|
||||||
|
|
||||||
|
[](https://github.com/2dust/v2rayN/commits/master)
|
||||||
|
[](https://www.codefactor.io/repository/github/2dust/v2rayn)
|
||||||
|
[](https://github.com/2dust/v2rayN/releases)
|
||||||
|
[](https://t.me/v2rayn)
|
||||||
|
|
||||||
### How to use
|
### How to use
|
||||||
- If you are newbie please download v2rayN-Core.zip from releases
|
- If you are newbie please download v2rayN-Core.zip from releases
|
||||||
@@ -6,5 +13,6 @@
|
|||||||
- Run v2rayN.exe
|
- Run v2rayN.exe
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
- Microsoft [.NET Framework 4.8](https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers)
|
- Microsoft [.NET Framework 4.8](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/thank-you/net48-web-installer)
|
||||||
- Project V core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
- v2fly core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
||||||
|
- Xray core [https://github.com/XTLS/Xray-core/releases](https://github.com/XTLS/Xray-core/releases)
|
||||||
|
|||||||
231
v2rayN/v2rayN/Base/HttpClientHelper.cs
Normal file
231
v2rayN/v2rayN/Base/HttpClientHelper.cs
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace v2rayN.Base
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// </summary>
|
||||||
|
public class HttpClientHelper
|
||||||
|
{
|
||||||
|
private static HttpClientHelper httpClientHelper = null;
|
||||||
|
private HttpClient httpClient;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// </summary>
|
||||||
|
private HttpClientHelper() { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static HttpClientHelper GetInstance()
|
||||||
|
{
|
||||||
|
if (httpClientHelper != null)
|
||||||
|
{
|
||||||
|
return httpClientHelper;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HttpClientHelper httpClientHelper = new HttpClientHelper();
|
||||||
|
|
||||||
|
HttpClientHandler handler = new HttpClientHandler() { UseCookies = false };
|
||||||
|
httpClientHelper.httpClient = new HttpClient(handler);
|
||||||
|
return httpClientHelper;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public async Task<string> GetAsync(string url)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpResponseMessage response = await httpClient.GetAsync(url);
|
||||||
|
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public async Task<string> GetAsync(HttpClient client, string url, CancellationToken token)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpResponseMessage response = await client.GetAsync(url, token);
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("GetAsync", ex);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task PutAsync(string url, Dictionary<string, string> headers)
|
||||||
|
{
|
||||||
|
var myContent = Utils.ToJson(headers);
|
||||||
|
var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
|
||||||
|
var byteContent = new ByteArrayContent(buffer);
|
||||||
|
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
|
||||||
|
|
||||||
|
var result = await httpClient.PutAsync(url, byteContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DownloadFileAsync(HttpClient client, string url, string fileName, IProgress<double> progress, CancellationToken token)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("url");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(fileName))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("fileName");
|
||||||
|
}
|
||||||
|
if (File.Exists(fileName))
|
||||||
|
{
|
||||||
|
File.Delete(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
||||||
|
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
||||||
|
}
|
||||||
|
|
||||||
|
var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||||
|
var canReportProgress = total != -1 && progress != null;
|
||||||
|
|
||||||
|
using (var stream = await response.Content.ReadAsStreamAsync())
|
||||||
|
{
|
||||||
|
using (var file = File.Create(fileName))
|
||||||
|
{
|
||||||
|
var totalRead = 0L;
|
||||||
|
var buffer = new byte[1024 * 1024];
|
||||||
|
var isMoreToRead = true;
|
||||||
|
var progressPercentage = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
var read = await stream.ReadAsync(buffer, 0, buffer.Length, token);
|
||||||
|
|
||||||
|
if (read == 0)
|
||||||
|
{
|
||||||
|
isMoreToRead = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var data = new byte[read];
|
||||||
|
buffer.ToList().CopyTo(0, data, 0, read);
|
||||||
|
|
||||||
|
// TODO: put here the code to write the file to disk
|
||||||
|
file.Write(data, 0, read);
|
||||||
|
|
||||||
|
totalRead += read;
|
||||||
|
|
||||||
|
if (canReportProgress)
|
||||||
|
{
|
||||||
|
var percent = Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100);
|
||||||
|
if (progressPercentage != percent && percent % 10 == 0)
|
||||||
|
{
|
||||||
|
progressPercentage = percent;
|
||||||
|
progress.Report(percent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (isMoreToRead);
|
||||||
|
file.Close();
|
||||||
|
if (canReportProgress)
|
||||||
|
{
|
||||||
|
progress.Report(101);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<string> progress, CancellationToken token)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("url");
|
||||||
|
}
|
||||||
|
|
||||||
|
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
||||||
|
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
||||||
|
}
|
||||||
|
|
||||||
|
//var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||||
|
//var canReportProgress = total != -1 && progress != null;
|
||||||
|
|
||||||
|
using (var stream = await response.Content.ReadAsStreamAsync())
|
||||||
|
{
|
||||||
|
var totalRead = 0L;
|
||||||
|
var buffer = new byte[1024 * 64];
|
||||||
|
var isMoreToRead = true;
|
||||||
|
string progressSpeed = string.Empty;
|
||||||
|
DateTime totalDatetime = DateTime.Now;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
if (totalRead > 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var read = await stream.ReadAsync(buffer, 0, buffer.Length, token);
|
||||||
|
|
||||||
|
if (read == 0)
|
||||||
|
{
|
||||||
|
isMoreToRead = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var data = new byte[read];
|
||||||
|
buffer.ToList().CopyTo(0, data, 0, read);
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
totalRead += read;
|
||||||
|
|
||||||
|
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||||
|
var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
|
||||||
|
if (progress != null)
|
||||||
|
{
|
||||||
|
if (progressSpeed != speed)
|
||||||
|
{
|
||||||
|
progressSpeed = speed;
|
||||||
|
progress.Report(speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (isMoreToRead);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
using System.Drawing;
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace v2rayN.Base
|
namespace v2rayN.Base
|
||||||
{
|
{
|
||||||
class ListViewFlickerFree : ListView
|
class ListViewFlickerFree : ListView
|
||||||
{
|
{
|
||||||
|
Action<int, int> _updateFunc;
|
||||||
|
|
||||||
public ListViewFlickerFree()
|
public ListViewFlickerFree()
|
||||||
{
|
{
|
||||||
SetStyle(ControlStyles.OptimizedDoubleBuffer
|
SetStyle(ControlStyles.OptimizedDoubleBuffer
|
||||||
@@ -13,40 +16,82 @@ namespace v2rayN.Base
|
|||||||
UpdateStyles();
|
UpdateStyles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RegisterDragEvent(Action<int, int> _update)
|
||||||
public void AutoResizeColumns()
|
|
||||||
{
|
{
|
||||||
try
|
_updateFunc = _update;
|
||||||
{
|
this.AllowDrop = true;
|
||||||
this.SuspendLayout();
|
|
||||||
Graphics graphics = this.CreateGraphics();
|
|
||||||
|
|
||||||
// 原生 ColumnHeaderAutoResizeStyle.ColumnContent 将忽略列头宽度
|
this.ItemDrag += new ItemDragEventHandler(this.lv_ItemDrag);
|
||||||
this.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
this.DragDrop += new DragEventHandler(this.lv_DragDrop);
|
||||||
|
this.DragEnter += new DragEventHandler(this.lv_DragEnter);
|
||||||
for (int i = 0; i < this.Columns.Count; i++)
|
this.DragOver += new DragEventHandler(this.lv_DragOver);
|
||||||
{
|
this.DragLeave += new EventHandler(this.lv_DragLeave);
|
||||||
ColumnHeader c = this.Columns[i];
|
|
||||||
int cWidth = c.Width;
|
|
||||||
string MaxStr = "";
|
|
||||||
Font font = this.Items[0].SubItems[0].Font;
|
|
||||||
|
|
||||||
foreach (ListViewItem item in this.Items)
|
|
||||||
{
|
|
||||||
// 整行视作相同字形,不单独计算每个单元格
|
|
||||||
font = item.SubItems[i].Font;
|
|
||||||
string str = item.SubItems[i].Text;
|
|
||||||
if (str.Length > MaxStr.Length) // 未考虑非等宽问题
|
|
||||||
MaxStr = str;
|
|
||||||
}
|
|
||||||
int strWidth = (int)graphics.MeasureString(MaxStr, font).Width;
|
|
||||||
c.Width = System.Math.Max(cWidth, strWidth);
|
|
||||||
}
|
|
||||||
this.ResumeLayout();
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void lv_DragDrop(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
int targetIndex = this.InsertionMark.Index;
|
||||||
|
if (targetIndex == -1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.InsertionMark.AppearsAfterItem)
|
||||||
|
{
|
||||||
|
targetIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (this.SelectedIndices.Count <= 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateFunc(this.SelectedIndices[0], targetIndex);
|
||||||
|
|
||||||
|
//ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
|
||||||
|
//this.BeginUpdate();
|
||||||
|
//this.Items.Insert(targetIndex, (ListViewItem)draggedItem.Clone());
|
||||||
|
//this.Items.Remove(draggedItem);
|
||||||
|
//this.EndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void lv_DragEnter(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
e.Effect = e.AllowedEffect;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lv_DragLeave(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.InsertionMark.Index = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lv_DragOver(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
Point targetPoint = this.PointToClient(new Point(e.X, e.Y));
|
||||||
|
int targetIndex = this.InsertionMark.NearestIndex(targetPoint);
|
||||||
|
|
||||||
|
if (targetIndex > -1)
|
||||||
|
{
|
||||||
|
Rectangle itemBounds = this.GetItemRect(targetIndex);
|
||||||
|
this.EnsureVisible(targetIndex);
|
||||||
|
|
||||||
|
if (targetPoint.Y > itemBounds.Top + (itemBounds.Height / 2))
|
||||||
|
{
|
||||||
|
this.InsertionMark.AppearsAfterItem = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.InsertionMark.AppearsAfterItem = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.InsertionMark.Index = targetIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lv_ItemDrag(object sender, ItemDragEventArgs e)
|
||||||
|
{
|
||||||
|
this.DoDragDrop(e.Item, DragDropEffects.Move);
|
||||||
|
this.InsertionMark.Index = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Net;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
class WebClientEx : WebClient
|
|
||||||
{
|
|
||||||
public int Timeout
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
public WebClientEx(int timeout = 3000)
|
|
||||||
{
|
|
||||||
Timeout = timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override WebRequest GetWebRequest(Uri address)
|
|
||||||
{
|
|
||||||
HttpWebRequest request;
|
|
||||||
request = (HttpWebRequest)base.GetWebRequest(address);
|
|
||||||
request.Timeout = Timeout;
|
|
||||||
request.ReadWriteTimeout = Timeout;
|
|
||||||
//request.AllowAutoRedirect = false;
|
|
||||||
//request.AllowWriteStreamBuffering = true;
|
|
||||||
|
|
||||||
request.ServicePoint.BindIPEndPointDelegate = (servicePoint, remoteEndPoint, retryCount) =>
|
|
||||||
{
|
|
||||||
if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
|
|
||||||
return new IPEndPoint(IPAddress.IPv6Any, 0);
|
|
||||||
else
|
|
||||||
return new IPEndPoint(IPAddress.Any, 0);
|
|
||||||
};
|
|
||||||
|
|
||||||
return request;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
28
v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
generated
28
v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
generated
@@ -31,6 +31,9 @@
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.btnEdit = new System.Windows.Forms.Button();
|
||||||
|
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType = new System.Windows.Forms.Label();
|
||||||
this.btnBrowse = new System.Windows.Forms.Button();
|
this.btnBrowse = new System.Windows.Forms.Button();
|
||||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
this.txtAddress = new System.Windows.Forms.TextBox();
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
@@ -54,6 +57,9 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
this.groupBox1.Controls.Add(this.btnEdit);
|
||||||
|
this.groupBox1.Controls.Add(this.cmbCoreType);
|
||||||
|
this.groupBox1.Controls.Add(this.labCoreType);
|
||||||
this.groupBox1.Controls.Add(this.btnBrowse);
|
this.groupBox1.Controls.Add(this.btnBrowse);
|
||||||
this.groupBox1.Controls.Add(this.txtAddress);
|
this.groupBox1.Controls.Add(this.txtAddress);
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
this.groupBox1.Controls.Add(this.label13);
|
||||||
@@ -64,6 +70,25 @@
|
|||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// btnEdit
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnEdit, "btnEdit");
|
||||||
|
this.btnEdit.Name = "btnEdit";
|
||||||
|
this.btnEdit.UseVisualStyleBackColor = true;
|
||||||
|
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
|
||||||
|
//
|
||||||
|
// cmbCoreType
|
||||||
|
//
|
||||||
|
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
||||||
|
this.cmbCoreType.Name = "cmbCoreType";
|
||||||
|
//
|
||||||
|
// labCoreType
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType, "labCoreType");
|
||||||
|
this.labCoreType.Name = "labCoreType";
|
||||||
|
//
|
||||||
// btnBrowse
|
// btnBrowse
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnBrowse, "btnBrowse");
|
resources.ApplyResources(this.btnBrowse, "btnBrowse");
|
||||||
@@ -146,5 +171,8 @@
|
|||||||
private System.Windows.Forms.Label label13;
|
private System.Windows.Forms.Label label13;
|
||||||
private System.Windows.Forms.TextBox txtAddress;
|
private System.Windows.Forms.TextBox txtAddress;
|
||||||
private System.Windows.Forms.Button btnBrowse;
|
private System.Windows.Forms.Button btnBrowse;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType;
|
||||||
|
private System.Windows.Forms.Label labCoreType;
|
||||||
|
private System.Windows.Forms.Button btnEdit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -15,6 +18,13 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void AddServer2Form_Load(object sender, EventArgs e)
|
private void AddServer2Form_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
||||||
|
cmbCoreType.Items.Add("clash");
|
||||||
|
cmbCoreType.Items.Add("clash_meta");
|
||||||
|
cmbCoreType.Items.Add("hysteria");
|
||||||
|
cmbCoreType.Items.Add("naiveproxy");
|
||||||
|
cmbCoreType.Items.Add(string.Empty);
|
||||||
|
|
||||||
txtAddress.ReadOnly = true;
|
txtAddress.ReadOnly = true;
|
||||||
if (vmessItem != null)
|
if (vmessItem != null)
|
||||||
{
|
{
|
||||||
@@ -35,6 +45,15 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
txtAddress.Text = vmessItem.address;
|
txtAddress.Text = vmessItem.address;
|
||||||
|
|
||||||
|
if (vmessItem.coreType == null)
|
||||||
|
{
|
||||||
|
cmbCoreType.Text = string.Empty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmbCoreType.Text = vmessItem.coreType.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -51,10 +70,23 @@ namespace v2rayN.Forms
|
|||||||
string remarks = txtRemarks.Text;
|
string remarks = txtRemarks.Text;
|
||||||
if (Utils.IsNullOrEmpty(remarks))
|
if (Utils.IsNullOrEmpty(remarks))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseFillRemarks"));
|
UI.Show(ResUI.PleaseFillRemarks);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(txtAddress.Text))
|
||||||
|
{
|
||||||
|
UI.Show(ResUI.FillServerAddressCustom);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vmessItem.remarks = remarks;
|
vmessItem.remarks = remarks;
|
||||||
|
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
||||||
|
{
|
||||||
|
vmessItem.coreType = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), cmbCoreType.Text);
|
||||||
|
}
|
||||||
|
|
||||||
if (ConfigHandler.EditCustomServer(ref config, vmessItem) == 0)
|
if (ConfigHandler.EditCustomServer(ref config, vmessItem) == 0)
|
||||||
{
|
{
|
||||||
@@ -62,7 +94,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,12 +112,12 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void btnBrowse_Click(object sender, EventArgs e)
|
private void btnBrowse_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("CustomServerTips"));
|
UI.Show(ResUI.CustomServerTips);
|
||||||
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog
|
OpenFileDialog fileDialog = new OpenFileDialog
|
||||||
{
|
{
|
||||||
Multiselect = false,
|
Multiselect = false,
|
||||||
Filter = "Config|*.json|All|*.*"
|
Filter = "Config|*.json|YAML|*.yaml|All|*.*"
|
||||||
};
|
};
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
if (fileDialog.ShowDialog() != DialogResult.OK)
|
||||||
{
|
{
|
||||||
@@ -100,15 +132,28 @@ namespace v2rayN.Forms
|
|||||||
vmessItem.address = fileName;
|
vmessItem.address = fileName;
|
||||||
vmessItem.remarks = txtRemarks.Text;
|
vmessItem.remarks = txtRemarks.Text;
|
||||||
|
|
||||||
if (ConfigHandler.AddCustomServer(ref config, vmessItem) == 0)
|
if (ConfigHandler.AddCustomServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
BindingServer();
|
BindingServer();
|
||||||
UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer"));
|
UI.Show(ResUI.SuccessfullyImportedCustomServer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("FailedImportedCustomServer"));
|
UI.ShowWarning(ResUI.FailedImportedCustomServer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void btnEdit_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var address = txtAddress.Text;
|
||||||
|
if (Utils.IsNullOrEmpty(address))
|
||||||
|
{
|
||||||
|
UI.Show(ResUI.FillServerAddressCustom);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
address = Utils.GetConfigPath(address);
|
||||||
|
Process.Start(address);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,11 +144,89 @@
|
|||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</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="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>208, 110</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>75, 23</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnEdit.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>43</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnEdit.Text" xml:space="preserve">
|
||||||
|
<value>&Edit</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnEdit.Name" xml:space="preserve">
|
||||||
|
<value>btnEdit</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnEdit.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=">>btnEdit.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnEdit.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 157</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 20</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbCoreType.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>41</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbCoreType.Name" xml:space="preserve">
|
||||||
|
<value>cmbCoreType</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbCoreType.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=">>cmbCoreType.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmbCoreType.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>12, 161</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>59, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>42</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Text" xml:space="preserve">
|
||||||
|
<value>Core Type</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labCoreType.Name" xml:space="preserve">
|
||||||
|
<value>labCoreType</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labCoreType.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=">>labCoreType.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>labCoreType.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</value>
|
||||||
|
</data>
|
||||||
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>127, 121</value>
|
<value>127, 110</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>75, 23</value>
|
||||||
@@ -169,7 +247,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>3</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, 62</value>
|
<value>127, 62</value>
|
||||||
@@ -193,7 +271,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -220,7 +298,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>5</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, 23</value>
|
<value>127, 23</value>
|
||||||
@@ -241,7 +319,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>6</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>
|
||||||
@@ -268,7 +346,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>7</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>
|
||||||
@@ -295,7 +373,7 @@
|
|||||||
<value>groupBox1</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
<value>5</value>
|
<value>8</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>
|
||||||
@@ -324,18 +402,6 @@
|
|||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>357, 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">
|
<data name=">>btnOK.Name" xml:space="preserve">
|
||||||
<value>btnOK</value>
|
<value>btnOK</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -372,6 +438,30 @@
|
|||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
<data name=">>panel2.ZOrder" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>357, 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="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Top</value>
|
<value>Top</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -406,7 +496,7 @@
|
|||||||
<value>611, 259</value>
|
<value>611, 259</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Edit custom configuration server</value>
|
<value>Custom configuration server</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>AddServer2Form</value>
|
<value>AddServer2Form</value>
|
||||||
|
|||||||
@@ -118,17 +118,26 @@
|
|||||||
<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">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>编辑自定义配置服务器</value>
|
<value>自定义配置</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnBrowse.Text" xml:space="preserve">
|
||||||
|
<value>浏览(&B)</value>
|
||||||
</data>
|
</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="btnEdit.Text" xml:space="preserve">
|
||||||
|
<value>编辑(&E)</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="groupBox1.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>服务器</value>
|
<value>服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="labCoreType.Text" xml:space="preserve">
|
||||||
|
<value>Core类型</value>
|
||||||
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>地址(address)</value>
|
<value>地址(address)</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
191
v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
generated
191
v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
generated
@@ -1,191 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class AddServer3Form
|
|
||||||
{
|
|
||||||
/// <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(AddServer3Form));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label13 = 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.groupBox1.SuspendLayout();
|
|
||||||
this.panel2.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.label13);
|
|
||||||
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;
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label13, "label13");
|
|
||||||
this.label13.Name = "label13";
|
|
||||||
//
|
|
||||||
// cmbSecurity
|
|
||||||
//
|
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbSecurity.FormattingEnabled = true;
|
|
||||||
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";
|
|
||||||
//
|
|
||||||
// AddServer3Form
|
|
||||||
//
|
|
||||||
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 = "AddServer3Form";
|
|
||||||
this.Load += new System.EventHandler(this.AddServer3Form_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.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.Panel panel1;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class AddServer3Form : BaseServerForm
|
|
||||||
{
|
|
||||||
|
|
||||||
public AddServer3Form()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddServer3Form_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
cmbSecurity.Items.AddRange(config.GetShadowsocksSecuritys().ToArray());
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem();
|
|
||||||
vmessItem.groupId = groupId;
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
cmbSecurity.Text = vmessItem.security;
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtAddress.Text = "";
|
|
||||||
txtPort.Text = "";
|
|
||||||
txtId.Text = "";
|
|
||||||
cmbSecurity.Text = Global.DefaultSecurity;
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string address = txtAddress.Text;
|
|
||||||
string port = txtPort.Text;
|
|
||||||
string id = txtId.Text;
|
|
||||||
string security = cmbSecurity.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;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(security))
|
|
||||||
{
|
|
||||||
UI.Show(UIRes.I18N("PleaseSelectEncryption"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vmessItem.address = address;
|
|
||||||
vmessItem.port = Utils.ToInt(port);
|
|
||||||
vmessItem.id = id;
|
|
||||||
vmessItem.security = security;
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
|
|
||||||
if (ConfigHandler.AddShadowsocksServer(ref config, vmessItem) == 0)
|
|
||||||
{
|
|
||||||
this.DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,534 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="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>1</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>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>426, 158</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 123</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbSecurity.Name" xml:space="preserve">
|
|
||||||
<value>cmbSecurity</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=">>cmbSecurity.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 154</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 155</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>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>Encryption</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 91</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>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Name" xml:space="preserve">
|
|
||||||
<value>txtId</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 93</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, 59</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>1</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, 62</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>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 31</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Server address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 221</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>0</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, 0</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="$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>547, 291</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit or add a [Shadowsocks] server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer3Form</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>
|
|
||||||
</root>
|
|
||||||
189
v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs
generated
189
v2rayN/v2rayN/Forms/AddServer4Form.Designer.cs
generated
@@ -1,189 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class AddServer4Form
|
|
||||||
{
|
|
||||||
/// <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(AddServer4Form));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtSecurity = new System.Windows.Forms.TextBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.txtId = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label6 = 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
|
|
||||||
//
|
|
||||||
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.txtSecurity);
|
|
||||||
this.groupBox1.Controls.Add(this.label4);
|
|
||||||
this.groupBox1.Controls.Add(this.txtId);
|
|
||||||
this.groupBox1.Controls.Add(this.label3);
|
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
|
||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
|
||||||
this.groupBox1.Controls.Add(this.label6);
|
|
||||||
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;
|
|
||||||
//
|
|
||||||
// txtSecurity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtSecurity, "txtSecurity");
|
|
||||||
this.txtSecurity.Name = "txtSecurity";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// txtId
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId, "txtId");
|
|
||||||
this.txtId.Name = "txtId";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// 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";
|
|
||||||
//
|
|
||||||
// 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";
|
|
||||||
//
|
|
||||||
// AddServer4Form
|
|
||||||
//
|
|
||||||
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 = "AddServer4Form";
|
|
||||||
this.Load += new System.EventHandler(this.AddServer4Form_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 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.TextBox txtId;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txtSecurity;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class AddServer4Form : BaseServerForm
|
|
||||||
{
|
|
||||||
|
|
||||||
public AddServer4Form()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddServer4Form_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem();
|
|
||||||
vmessItem.groupId = groupId;
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
txtSecurity.Text = vmessItem.security;
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtAddress.Text = "";
|
|
||||||
txtPort.Text = "";
|
|
||||||
txtId.Text = "";
|
|
||||||
txtSecurity.Text = "";
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string address = txtAddress.Text;
|
|
||||||
string port = txtPort.Text;
|
|
||||||
string id = txtId.Text;
|
|
||||||
string security = txtSecurity.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
vmessItem.address = address;
|
|
||||||
vmessItem.port = Utils.ToInt(port);
|
|
||||||
vmessItem.id = id;
|
|
||||||
vmessItem.security = security;
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
|
|
||||||
if (ConfigHandler.AddSocksServer(ref config, vmessItem) == 0)
|
|
||||||
{
|
|
||||||
this.DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,537 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="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>1</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, 89</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>2</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, 93</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, 120</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>3</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, 124</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" 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>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</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>422, 155</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 151</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 155</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>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 58</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>1</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, 62</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>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 31</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Server address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>547, 221</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>0</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, 0</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="$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>547, 291</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit or add a [Socks] server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer4Form</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>
|
|
||||||
</root>
|
|
||||||
@@ -1,178 +0,0 @@
|
|||||||
<?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>
|
|
||||||
<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>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>用户名(可选)</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>密码(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>*手填,方便识别管理</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="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="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</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="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="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑或添加[Socks]服务器</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
246
v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs
generated
246
v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs
generated
@@ -1,246 +0,0 @@
|
|||||||
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.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.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.transportControl = new v2rayN.Forms.ServerTransportControl();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel3.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.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;
|
|
||||||
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";
|
|
||||||
//
|
|
||||||
// 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";
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.transportControl);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// transportControl
|
|
||||||
//
|
|
||||||
this.transportControl.AllowXtls = false;
|
|
||||||
resources.ApplyResources(this.transportControl, "transportControl");
|
|
||||||
this.transportControl.Name = "transportControl";
|
|
||||||
//
|
|
||||||
// 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.panel3);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
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.panel2.ResumeLayout(false);
|
|
||||||
this.panel3.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.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.Label label8;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
private System.Windows.Forms.Button btnGUID;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFlow;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.Panel panel3;
|
|
||||||
private ServerTransportControl transportControl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
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)
|
|
||||||
{
|
|
||||||
cmbFlow.Items.AddRange(Global.xtlsFlows.ToArray());
|
|
||||||
transportControl.AllowXtls = true;
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem();
|
|
||||||
vmessItem.groupId = groupId;
|
|
||||||
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;
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtAddress.Text = "";
|
|
||||||
txtPort.Text = "";
|
|
||||||
txtId.Text = "";
|
|
||||||
cmbFlow.Text = "";
|
|
||||||
cmbSecurity.Text = Global.None;
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
|
|
||||||
transportControl.ClearServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
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 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("FillUUID"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
transportControl.EndBindingServer();
|
|
||||||
|
|
||||||
vmessItem.address = address;
|
|
||||||
vmessItem.port = Utils.ToInt(port);
|
|
||||||
vmessItem.id = id;
|
|
||||||
vmessItem.flow = flow;
|
|
||||||
vmessItem.security = security;
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
|
|
||||||
if (ConfigHandler.AddVlessServer(ref config, vmessItem) == 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,690 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="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="cmbFlow.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 123</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFlow.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFlow.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFlow.Name" xml:space="preserve">
|
|
||||||
<value>cmbFlow</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFlow.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=">>cmbFlow.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFlow.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, 127</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Flow</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="btnGUID.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>411, 91</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID.Text" xml:space="preserve">
|
|
||||||
<value>&Generate</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnGUID.Name" xml:space="preserve">
|
|
||||||
<value>btnGUID</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnGUID.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=">>btnGUID.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnGUID.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</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>353, 189</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>353, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>119, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>14</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Text" xml:space="preserve">
|
|
||||||
<value>*Recommended (none)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label8.Name" xml:space="preserve">
|
|
||||||
<value>label8</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label8.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=">>label8.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label8.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Items" xml:space="preserve">
|
|
||||||
<value>none</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 154</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbSecurity.Name" xml:space="preserve">
|
|
||||||
<value>cmbSecurity</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=">>cmbSecurity.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbSecurity.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 185</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</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, 189</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>7</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, 158</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>Encryption</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 91</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>2</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>9</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, 95</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>UUID(id)</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>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 59</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>143, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</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>11</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, 63</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>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>12</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>0</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>13</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>47, 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=">>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>14</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>729, 221</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, 461</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>729, 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>2</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>729, 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>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>729, 230</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.Name" xml:space="preserve">
|
|
||||||
<value>transportControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 231</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>729, 230</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>9</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>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>25</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>729, 521</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit or add a [VLESS] server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer5Form</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>
|
|
||||||
</root>
|
|
||||||
@@ -1,193 +0,0 @@
|
|||||||
<?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>
|
|
||||||
<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="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="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>编辑或添加[VLESS]服务器</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
209
v2rayN/v2rayN/Forms/AddServer6Form.Designer.cs
generated
209
v2rayN/v2rayN/Forms/AddServer6Form.Designer.cs
generated
@@ -1,209 +0,0 @@
|
|||||||
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.cmbFlow = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
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.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.transportControl = new v2rayN.Forms.ServerTransportControl();
|
|
||||||
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.panel3.SuspendLayout();
|
|
||||||
this.panel2.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.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);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// cmbFlow
|
|
||||||
//
|
|
||||||
this.cmbFlow.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbFlow, "cmbFlow");
|
|
||||||
this.cmbFlow.Name = "cmbFlow";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// 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";
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.transportControl);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// transportControl
|
|
||||||
//
|
|
||||||
this.transportControl.AllowXtls = false;
|
|
||||||
resources.ApplyResources(this.transportControl, "transportControl");
|
|
||||||
this.transportControl.Name = "transportControl";
|
|
||||||
//
|
|
||||||
// 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";
|
|
||||||
//
|
|
||||||
// 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.panel3);
|
|
||||||
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.panel3.ResumeLayout(false);
|
|
||||||
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.Panel panel3;
|
|
||||||
private ServerTransportControl transportControl;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFlow;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
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)
|
|
||||||
{
|
|
||||||
cmbFlow.Items.AddRange(Global.xtlsFlows.ToArray());
|
|
||||||
transportControl.AllowXtls = true;
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem();
|
|
||||||
vmessItem.groupId = groupId;
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
cmbFlow.Text = vmessItem.flow;
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtAddress.Text = "";
|
|
||||||
txtPort.Text = "";
|
|
||||||
txtId.Text = "";
|
|
||||||
cmbFlow.Text = "";
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
|
|
||||||
transportControl.ClearServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
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 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
transportControl.EndBindingServer();
|
|
||||||
|
|
||||||
vmessItem.address = address;
|
|
||||||
vmessItem.port = Utils.ToInt(port);
|
|
||||||
vmessItem.id = id;
|
|
||||||
vmessItem.flow = flow;
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
|
|
||||||
if (ConfigHandler.AddTrojanServer(ref config, vmessItem) == 0)
|
|
||||||
{
|
|
||||||
this.DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,603 +0,0 @@
|
|||||||
<?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>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="cmbFlow.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 123</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFlow.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFlow.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFlow.Name" xml:space="preserve">
|
|
||||||
<value>cmbFlow</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFlow.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=">>cmbFlow.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFlow.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</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>12, 127</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>27</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Flow</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="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>428, 158</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 155</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>265, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 159</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>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 91</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>265, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtId.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Name" xml:space="preserve">
|
|
||||||
<value>txtId</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtId.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.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, 93</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, 59</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>1</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.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 62</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>0</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.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 31</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Server address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>707, 191</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="transportControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>707, 230</value>
|
|
||||||
</data>
|
|
||||||
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.Name" xml:space="preserve">
|
|
||||||
<value>transportControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.ServerTransportControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>transportControl.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 201</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>707, 230</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>1</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>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, 431</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>707, 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>2</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>707, 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>3</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>707, 491</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Edit or add a [Trojan] server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer6Form</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>
|
|
||||||
</root>
|
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
<?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>
|
|
||||||
<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>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>流控(flow)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>*手填,方便识别管理</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="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="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>编辑或添加[Trojan]服务器</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
496
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
496
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
@@ -31,36 +31,62 @@
|
|||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServerForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServerForm));
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.btnGUID = new System.Windows.Forms.Button();
|
this.panSocks = new System.Windows.Forms.Panel();
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
this.label17 = new System.Windows.Forms.Label();
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
this.txtSecurity4 = new System.Windows.Forms.TextBox();
|
||||||
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
this.label18 = new System.Windows.Forms.Label();
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
this.txtId4 = new System.Windows.Forms.TextBox();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.panSs = new System.Windows.Forms.Panel();
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
this.txtId3 = new System.Windows.Forms.TextBox();
|
||||||
this.txtAlterId = new System.Windows.Forms.TextBox();
|
this.label15 = new System.Windows.Forms.Label();
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
this.cmbSecurity3 = new System.Windows.Forms.ComboBox();
|
||||||
this.txtId = new System.Windows.Forms.TextBox();
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
|
this.panTrojan = new System.Windows.Forms.Panel();
|
||||||
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbFlow6 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.txtId6 = new System.Windows.Forms.TextBox();
|
||||||
|
this.label14 = new System.Windows.Forms.Label();
|
||||||
|
this.panVless = new System.Windows.Forms.Panel();
|
||||||
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbFlow5 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.txtId5 = new System.Windows.Forms.TextBox();
|
||||||
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
|
this.btnGUID5 = new System.Windows.Forms.Button();
|
||||||
|
this.cmbSecurity5 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label11 = new System.Windows.Forms.Label();
|
||||||
|
this.panVmess = new System.Windows.Forms.Panel();
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
this.txtPort = new System.Windows.Forms.TextBox();
|
this.txtId = new System.Windows.Forms.TextBox();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.btnGUID = new System.Windows.Forms.Button();
|
||||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
|
this.txtAlterId = new System.Windows.Forms.TextBox();
|
||||||
|
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.panAddr = new System.Windows.Forms.Panel();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.txtAddress = new System.Windows.Forms.TextBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.txtPort = new System.Windows.Forms.TextBox();
|
||||||
|
this.txtRemarks = new System.Windows.Forms.TextBox();
|
||||||
|
this.panBottom = 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.panTop = new System.Windows.Forms.Panel();
|
||||||
this.menuServer = new System.Windows.Forms.MenuStrip();
|
this.panTran = new System.Windows.Forms.Panel();
|
||||||
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.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.transportControl = new v2rayN.Forms.ServerTransportControl();
|
this.transportControl = new v2rayN.Forms.ServerTransportControl();
|
||||||
|
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType = new System.Windows.Forms.Label();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.panel2.SuspendLayout();
|
this.panSocks.SuspendLayout();
|
||||||
this.menuServer.SuspendLayout();
|
this.panSs.SuspendLayout();
|
||||||
this.panel3.SuspendLayout();
|
this.panTrojan.SuspendLayout();
|
||||||
|
this.panVless.SuspendLayout();
|
||||||
|
this.panVmess.SuspendLayout();
|
||||||
|
this.panAddr.SuspendLayout();
|
||||||
|
this.panBottom.SuspendLayout();
|
||||||
|
this.panTran.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
@@ -73,25 +99,189 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
this.groupBox1.Controls.Add(this.btnGUID);
|
this.groupBox1.Controls.Add(this.panSocks);
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
this.groupBox1.Controls.Add(this.panSs);
|
||||||
this.groupBox1.Controls.Add(this.label8);
|
this.groupBox1.Controls.Add(this.panTrojan);
|
||||||
this.groupBox1.Controls.Add(this.cmbSecurity);
|
this.groupBox1.Controls.Add(this.panVless);
|
||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
this.groupBox1.Controls.Add(this.panVmess);
|
||||||
this.groupBox1.Controls.Add(this.label6);
|
this.groupBox1.Controls.Add(this.panAddr);
|
||||||
this.groupBox1.Controls.Add(this.label5);
|
|
||||||
this.groupBox1.Controls.Add(this.txtAlterId);
|
|
||||||
this.groupBox1.Controls.Add(this.label4);
|
|
||||||
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");
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// panSocks
|
||||||
|
//
|
||||||
|
this.panSocks.Controls.Add(this.label17);
|
||||||
|
this.panSocks.Controls.Add(this.txtSecurity4);
|
||||||
|
this.panSocks.Controls.Add(this.label18);
|
||||||
|
this.panSocks.Controls.Add(this.txtId4);
|
||||||
|
resources.ApplyResources(this.panSocks, "panSocks");
|
||||||
|
this.panSocks.Name = "panSocks";
|
||||||
|
//
|
||||||
|
// label17
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label17, "label17");
|
||||||
|
this.label17.Name = "label17";
|
||||||
|
//
|
||||||
|
// txtSecurity4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtSecurity4, "txtSecurity4");
|
||||||
|
this.txtSecurity4.Name = "txtSecurity4";
|
||||||
|
//
|
||||||
|
// label18
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label18, "label18");
|
||||||
|
this.label18.Name = "label18";
|
||||||
|
//
|
||||||
|
// txtId4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId4, "txtId4");
|
||||||
|
this.txtId4.Name = "txtId4";
|
||||||
|
//
|
||||||
|
// panSs
|
||||||
|
//
|
||||||
|
this.panSs.Controls.Add(this.txtId3);
|
||||||
|
this.panSs.Controls.Add(this.label15);
|
||||||
|
this.panSs.Controls.Add(this.cmbSecurity3);
|
||||||
|
this.panSs.Controls.Add(this.label16);
|
||||||
|
resources.ApplyResources(this.panSs, "panSs");
|
||||||
|
this.panSs.Name = "panSs";
|
||||||
|
//
|
||||||
|
// txtId3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId3, "txtId3");
|
||||||
|
this.txtId3.Name = "txtId3";
|
||||||
|
//
|
||||||
|
// label15
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label15, "label15");
|
||||||
|
this.label15.Name = "label15";
|
||||||
|
//
|
||||||
|
// cmbSecurity3
|
||||||
|
//
|
||||||
|
this.cmbSecurity3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbSecurity3.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbSecurity3, "cmbSecurity3");
|
||||||
|
this.cmbSecurity3.Name = "cmbSecurity3";
|
||||||
|
//
|
||||||
|
// label16
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label16, "label16");
|
||||||
|
this.label16.Name = "label16";
|
||||||
|
//
|
||||||
|
// panTrojan
|
||||||
|
//
|
||||||
|
this.panTrojan.Controls.Add(this.label12);
|
||||||
|
this.panTrojan.Controls.Add(this.cmbFlow6);
|
||||||
|
this.panTrojan.Controls.Add(this.txtId6);
|
||||||
|
this.panTrojan.Controls.Add(this.label14);
|
||||||
|
resources.ApplyResources(this.panTrojan, "panTrojan");
|
||||||
|
this.panTrojan.Name = "panTrojan";
|
||||||
|
//
|
||||||
|
// label12
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label12, "label12");
|
||||||
|
this.label12.Name = "label12";
|
||||||
|
//
|
||||||
|
// cmbFlow6
|
||||||
|
//
|
||||||
|
this.cmbFlow6.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbFlow6, "cmbFlow6");
|
||||||
|
this.cmbFlow6.Name = "cmbFlow6";
|
||||||
|
//
|
||||||
|
// txtId6
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId6, "txtId6");
|
||||||
|
this.txtId6.Name = "txtId6";
|
||||||
|
//
|
||||||
|
// label14
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label14, "label14");
|
||||||
|
this.label14.Name = "label14";
|
||||||
|
//
|
||||||
|
// panVless
|
||||||
|
//
|
||||||
|
this.panVless.Controls.Add(this.label7);
|
||||||
|
this.panVless.Controls.Add(this.cmbFlow5);
|
||||||
|
this.panVless.Controls.Add(this.txtId5);
|
||||||
|
this.panVless.Controls.Add(this.label9);
|
||||||
|
this.panVless.Controls.Add(this.label10);
|
||||||
|
this.panVless.Controls.Add(this.btnGUID5);
|
||||||
|
this.panVless.Controls.Add(this.cmbSecurity5);
|
||||||
|
this.panVless.Controls.Add(this.label11);
|
||||||
|
resources.ApplyResources(this.panVless, "panVless");
|
||||||
|
this.panVless.Name = "panVless";
|
||||||
|
//
|
||||||
|
// label7
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label7, "label7");
|
||||||
|
this.label7.Name = "label7";
|
||||||
|
//
|
||||||
|
// cmbFlow5
|
||||||
|
//
|
||||||
|
this.cmbFlow5.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbFlow5, "cmbFlow5");
|
||||||
|
this.cmbFlow5.Name = "cmbFlow5";
|
||||||
|
//
|
||||||
|
// txtId5
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId5, "txtId5");
|
||||||
|
this.txtId5.Name = "txtId5";
|
||||||
|
//
|
||||||
|
// label9
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label9, "label9");
|
||||||
|
this.label9.Name = "label9";
|
||||||
|
//
|
||||||
|
// label10
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label10, "label10");
|
||||||
|
this.label10.Name = "label10";
|
||||||
|
//
|
||||||
|
// btnGUID5
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnGUID5, "btnGUID5");
|
||||||
|
this.btnGUID5.Name = "btnGUID5";
|
||||||
|
this.btnGUID5.UseVisualStyleBackColor = true;
|
||||||
|
this.btnGUID5.Click += new System.EventHandler(this.btnGUID_Click);
|
||||||
|
//
|
||||||
|
// cmbSecurity5
|
||||||
|
//
|
||||||
|
this.cmbSecurity5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple;
|
||||||
|
this.cmbSecurity5.FormattingEnabled = true;
|
||||||
|
this.cmbSecurity5.Items.AddRange(new object[] {
|
||||||
|
resources.GetString("cmbSecurity5.Items")});
|
||||||
|
resources.ApplyResources(this.cmbSecurity5, "cmbSecurity5");
|
||||||
|
this.cmbSecurity5.Name = "cmbSecurity5";
|
||||||
|
//
|
||||||
|
// label11
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label11, "label11");
|
||||||
|
this.label11.Name = "label11";
|
||||||
|
//
|
||||||
|
// panVmess
|
||||||
|
//
|
||||||
|
this.panVmess.Controls.Add(this.label3);
|
||||||
|
this.panVmess.Controls.Add(this.txtId);
|
||||||
|
this.panVmess.Controls.Add(this.btnGUID);
|
||||||
|
this.panVmess.Controls.Add(this.label4);
|
||||||
|
this.panVmess.Controls.Add(this.label8);
|
||||||
|
this.panVmess.Controls.Add(this.txtAlterId);
|
||||||
|
this.panVmess.Controls.Add(this.cmbSecurity);
|
||||||
|
this.panVmess.Controls.Add(this.label5);
|
||||||
|
resources.ApplyResources(this.panVmess, "panVmess");
|
||||||
|
this.panVmess.Name = "panVmess";
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
|
// txtId
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtId, "txtId");
|
||||||
|
this.txtId.Name = "txtId";
|
||||||
|
//
|
||||||
// btnGUID
|
// btnGUID
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnGUID, "btnGUID");
|
resources.ApplyResources(this.btnGUID, "btnGUID");
|
||||||
@@ -99,16 +289,21 @@
|
|||||||
this.btnGUID.UseVisualStyleBackColor = true;
|
this.btnGUID.UseVisualStyleBackColor = true;
|
||||||
this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click);
|
this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click);
|
||||||
//
|
//
|
||||||
// label13
|
// label4
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label13, "label13");
|
resources.ApplyResources(this.label4, "label4");
|
||||||
this.label13.Name = "label13";
|
this.label4.Name = "label4";
|
||||||
//
|
//
|
||||||
// label8
|
// label8
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label8, "label8");
|
resources.ApplyResources(this.label8, "label8");
|
||||||
this.label8.Name = "label8";
|
this.label8.Name = "label8";
|
||||||
//
|
//
|
||||||
|
// txtAlterId
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtAlterId, "txtAlterId");
|
||||||
|
this.txtAlterId.Name = "txtAlterId";
|
||||||
|
//
|
||||||
// cmbSecurity
|
// cmbSecurity
|
||||||
//
|
//
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
@@ -116,67 +311,60 @@
|
|||||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
||||||
this.cmbSecurity.Name = "cmbSecurity";
|
this.cmbSecurity.Name = "cmbSecurity";
|
||||||
//
|
//
|
||||||
// txtRemarks
|
// label5
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
resources.ApplyResources(this.label5, "label5");
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
this.label5.Name = "label5";
|
||||||
|
//
|
||||||
|
// panAddr
|
||||||
|
//
|
||||||
|
this.panAddr.Controls.Add(this.cmbCoreType);
|
||||||
|
this.panAddr.Controls.Add(this.labCoreType);
|
||||||
|
this.panAddr.Controls.Add(this.label6);
|
||||||
|
this.panAddr.Controls.Add(this.label1);
|
||||||
|
this.panAddr.Controls.Add(this.txtAddress);
|
||||||
|
this.panAddr.Controls.Add(this.label2);
|
||||||
|
this.panAddr.Controls.Add(this.txtPort);
|
||||||
|
this.panAddr.Controls.Add(this.txtRemarks);
|
||||||
|
resources.ApplyResources(this.panAddr, "panAddr");
|
||||||
|
this.panAddr.Name = "panAddr";
|
||||||
//
|
//
|
||||||
// label6
|
// label6
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label6, "label6");
|
resources.ApplyResources(this.label6, "label6");
|
||||||
this.label6.Name = "label6";
|
this.label6.Name = "label6";
|
||||||
//
|
//
|
||||||
// label5
|
// label1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label5, "label5");
|
resources.ApplyResources(this.label1, "label1");
|
||||||
this.label5.Name = "label5";
|
this.label1.Name = "label1";
|
||||||
//
|
|
||||||
// txtAlterId
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAlterId, "txtAlterId");
|
|
||||||
this.txtAlterId.Name = "txtAlterId";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// 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
|
// txtAddress
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.txtAddress, "txtAddress");
|
resources.ApplyResources(this.txtAddress, "txtAddress");
|
||||||
this.txtAddress.Name = "txtAddress";
|
this.txtAddress.Name = "txtAddress";
|
||||||
//
|
//
|
||||||
// label1
|
// label2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label1, "label1");
|
resources.ApplyResources(this.label2, "label2");
|
||||||
this.label1.Name = "label1";
|
this.label2.Name = "label2";
|
||||||
//
|
//
|
||||||
// panel2
|
// txtPort
|
||||||
//
|
//
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
resources.ApplyResources(this.txtPort, "txtPort");
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
this.txtPort.Name = "txtPort";
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
//
|
||||||
this.panel2.Name = "panel2";
|
// txtRemarks
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
||||||
|
this.txtRemarks.Name = "txtRemarks";
|
||||||
|
//
|
||||||
|
// panBottom
|
||||||
|
//
|
||||||
|
this.panBottom.Controls.Add(this.btnClose);
|
||||||
|
this.panBottom.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panBottom, "panBottom");
|
||||||
|
this.panBottom.Name = "panBottom";
|
||||||
//
|
//
|
||||||
// btnOK
|
// btnOK
|
||||||
//
|
//
|
||||||
@@ -185,56 +373,16 @@
|
|||||||
this.btnOK.UseVisualStyleBackColor = true;
|
this.btnOK.UseVisualStyleBackColor = true;
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||||
//
|
//
|
||||||
// panel1
|
// panTop
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
resources.ApplyResources(this.panTop, "panTop");
|
||||||
this.panel1.Name = "panel1";
|
this.panTop.Name = "panTop";
|
||||||
//
|
//
|
||||||
// menuServer
|
// panTran
|
||||||
//
|
//
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.panTran.Controls.Add(this.transportControl);
|
||||||
this.MenuItem1});
|
resources.ApplyResources(this.panTran, "panTran");
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
this.panTran.Name = "panTran";
|
||||||
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);
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.transportControl);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
//
|
||||||
// transportControl
|
// transportControl
|
||||||
//
|
//
|
||||||
@@ -242,27 +390,46 @@
|
|||||||
resources.ApplyResources(this.transportControl, "transportControl");
|
resources.ApplyResources(this.transportControl, "transportControl");
|
||||||
this.transportControl.Name = "transportControl";
|
this.transportControl.Name = "transportControl";
|
||||||
//
|
//
|
||||||
|
// cmbCoreType
|
||||||
|
//
|
||||||
|
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
||||||
|
this.cmbCoreType.Name = "cmbCoreType";
|
||||||
|
//
|
||||||
|
// labCoreType
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType, "labCoreType");
|
||||||
|
this.labCoreType.Name = "labCoreType";
|
||||||
|
//
|
||||||
// AddServerForm
|
// AddServerForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.CancelButton = this.btnClose;
|
this.CancelButton = this.btnClose;
|
||||||
this.Controls.Add(this.groupBox1);
|
this.Controls.Add(this.groupBox1);
|
||||||
this.Controls.Add(this.panel3);
|
this.Controls.Add(this.panTran);
|
||||||
this.Controls.Add(this.panel2);
|
this.Controls.Add(this.panBottom);
|
||||||
this.Controls.Add(this.panel1);
|
this.Controls.Add(this.panTop);
|
||||||
this.Controls.Add(this.menuServer);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
this.Name = "AddServerForm";
|
this.Name = "AddServerForm";
|
||||||
this.Load += new System.EventHandler(this.AddServerForm_Load);
|
this.Load += new System.EventHandler(this.AddServerForm_Load);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
this.groupBox1.PerformLayout();
|
this.panSocks.ResumeLayout(false);
|
||||||
this.panel2.ResumeLayout(false);
|
this.panSocks.PerformLayout();
|
||||||
this.menuServer.ResumeLayout(false);
|
this.panSs.ResumeLayout(false);
|
||||||
this.menuServer.PerformLayout();
|
this.panSs.PerformLayout();
|
||||||
this.panel3.ResumeLayout(false);
|
this.panTrojan.ResumeLayout(false);
|
||||||
|
this.panTrojan.PerformLayout();
|
||||||
|
this.panVless.ResumeLayout(false);
|
||||||
|
this.panVless.PerformLayout();
|
||||||
|
this.panVmess.ResumeLayout(false);
|
||||||
|
this.panVmess.PerformLayout();
|
||||||
|
this.panAddr.ResumeLayout(false);
|
||||||
|
this.panAddr.PerformLayout();
|
||||||
|
this.panBottom.ResumeLayout(false);
|
||||||
|
this.panTran.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,17 +451,38 @@
|
|||||||
private System.Windows.Forms.Label label1;
|
private System.Windows.Forms.Label label1;
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity;
|
private System.Windows.Forms.ComboBox cmbSecurity;
|
||||||
private System.Windows.Forms.Label label8;
|
private System.Windows.Forms.Label label8;
|
||||||
private System.Windows.Forms.Panel panel1;
|
private System.Windows.Forms.Panel panTop;
|
||||||
private System.Windows.Forms.Panel panel2;
|
private System.Windows.Forms.Panel panBottom;
|
||||||
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.ToolStripSeparator toolStripSeparator1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItemImportClipboard;
|
|
||||||
private System.Windows.Forms.Button btnGUID;
|
private System.Windows.Forms.Button btnGUID;
|
||||||
private System.Windows.Forms.Panel panel3;
|
private System.Windows.Forms.Panel panTran;
|
||||||
private ServerTransportControl transportControl;
|
private ServerTransportControl transportControl;
|
||||||
|
private System.Windows.Forms.Panel panAddr;
|
||||||
|
private System.Windows.Forms.Panel panVmess;
|
||||||
|
private System.Windows.Forms.Panel panVless;
|
||||||
|
private System.Windows.Forms.Label label7;
|
||||||
|
private System.Windows.Forms.ComboBox cmbFlow5;
|
||||||
|
private System.Windows.Forms.TextBox txtId5;
|
||||||
|
private System.Windows.Forms.Label label9;
|
||||||
|
private System.Windows.Forms.Label label10;
|
||||||
|
private System.Windows.Forms.Button btnGUID5;
|
||||||
|
private System.Windows.Forms.ComboBox cmbSecurity5;
|
||||||
|
private System.Windows.Forms.Label label11;
|
||||||
|
private System.Windows.Forms.Panel panTrojan;
|
||||||
|
private System.Windows.Forms.Label label12;
|
||||||
|
private System.Windows.Forms.ComboBox cmbFlow6;
|
||||||
|
private System.Windows.Forms.TextBox txtId6;
|
||||||
|
private System.Windows.Forms.Label label14;
|
||||||
|
private System.Windows.Forms.Panel panSs;
|
||||||
|
private System.Windows.Forms.TextBox txtId3;
|
||||||
|
private System.Windows.Forms.Label label15;
|
||||||
|
private System.Windows.Forms.ComboBox cmbSecurity3;
|
||||||
|
private System.Windows.Forms.Label label16;
|
||||||
|
private System.Windows.Forms.Panel panSocks;
|
||||||
|
private System.Windows.Forms.Label label17;
|
||||||
|
private System.Windows.Forms.TextBox txtSecurity4;
|
||||||
|
private System.Windows.Forms.Label label18;
|
||||||
|
private System.Windows.Forms.TextBox txtId4;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType;
|
||||||
|
private System.Windows.Forms.Label labCoreType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
public partial class AddServerForm : BaseServerForm
|
public partial class AddServerForm : BaseServerForm
|
||||||
{
|
{
|
||||||
|
|
||||||
public AddServerForm()
|
public AddServerForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -15,8 +16,48 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void AddServerForm_Load(object sender, EventArgs e)
|
private void AddServerForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray());
|
this.Text = (eConfigType).ToString();
|
||||||
//FillCoreType(cmbCoreType);
|
|
||||||
|
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
||||||
|
cmbCoreType.Items.Add(string.Empty);
|
||||||
|
|
||||||
|
switch (eConfigType)
|
||||||
|
{
|
||||||
|
case EConfigType.Vmess:
|
||||||
|
panVmess.Dock = DockStyle.Fill;
|
||||||
|
panVmess.Visible = true;
|
||||||
|
|
||||||
|
cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray());
|
||||||
|
break;
|
||||||
|
case EConfigType.Shadowsocks:
|
||||||
|
panSs.Dock = DockStyle.Fill;
|
||||||
|
panSs.Visible = true;
|
||||||
|
panTran.Visible = false;
|
||||||
|
this.Height = this.Height - panTran.Height;
|
||||||
|
|
||||||
|
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys().ToArray());
|
||||||
|
break;
|
||||||
|
case EConfigType.Socks:
|
||||||
|
panSocks.Dock = DockStyle.Fill;
|
||||||
|
panSocks.Visible = true;
|
||||||
|
panTran.Visible = false;
|
||||||
|
this.Height = this.Height - panTran.Height;
|
||||||
|
break;
|
||||||
|
case EConfigType.VLESS:
|
||||||
|
panVless.Dock = DockStyle.Fill;
|
||||||
|
panVless.Visible = true;
|
||||||
|
transportControl.AllowXtls = true;
|
||||||
|
|
||||||
|
cmbFlow5.Items.AddRange(Global.xtlsFlows.ToArray());
|
||||||
|
break;
|
||||||
|
case EConfigType.Trojan:
|
||||||
|
panTrojan.Dock = DockStyle.Fill;
|
||||||
|
panTrojan.Visible = true;
|
||||||
|
transportControl.AllowXtls = true;
|
||||||
|
|
||||||
|
cmbFlow6.Items.AddRange(Global.xtlsFlows.ToArray());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (vmessItem != null)
|
if (vmessItem != null)
|
||||||
{
|
{
|
||||||
@@ -35,180 +76,215 @@ namespace v2rayN.Forms
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void BindingServer()
|
private void BindingServer()
|
||||||
{
|
{
|
||||||
|
txtRemarks.Text = vmessItem.remarks;
|
||||||
txtAddress.Text = vmessItem.address;
|
txtAddress.Text = vmessItem.address;
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
txtPort.Text = vmessItem.port.ToString();
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
txtAlterId.Text = vmessItem.alterId.ToString();
|
switch (eConfigType)
|
||||||
cmbSecurity.Text = vmessItem.security;
|
{
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
case EConfigType.Vmess:
|
||||||
// BindingCoreType(cmbCoreType, vmessItem);
|
txtId.Text = vmessItem.id;
|
||||||
|
txtAlterId.Text = vmessItem.alterId.ToString();
|
||||||
|
cmbSecurity.Text = vmessItem.security;
|
||||||
|
break;
|
||||||
|
case EConfigType.Shadowsocks:
|
||||||
|
txtId3.Text = vmessItem.id;
|
||||||
|
cmbSecurity3.Text = vmessItem.security;
|
||||||
|
break;
|
||||||
|
case EConfigType.Socks:
|
||||||
|
txtId4.Text = vmessItem.id;
|
||||||
|
txtSecurity4.Text = vmessItem.security;
|
||||||
|
break;
|
||||||
|
case EConfigType.VLESS:
|
||||||
|
txtId5.Text = vmessItem.id;
|
||||||
|
cmbFlow5.Text = vmessItem.flow;
|
||||||
|
cmbSecurity5.Text = vmessItem.security;
|
||||||
|
break;
|
||||||
|
case EConfigType.Trojan:
|
||||||
|
txtId6.Text = vmessItem.id;
|
||||||
|
cmbFlow6.Text = vmessItem.flow;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vmessItem.coreType == null)
|
||||||
|
{
|
||||||
|
cmbCoreType.Text = string.Empty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmbCoreType.Text = vmessItem.coreType.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
transportControl.BindingServer(vmessItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清除设置
|
/// 清除设置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void ClearServer()
|
private void ClearServer()
|
||||||
{
|
{
|
||||||
|
txtRemarks.Text = "";
|
||||||
txtAddress.Text = "";
|
txtAddress.Text = "";
|
||||||
txtPort.Text = "";
|
txtPort.Text = "";
|
||||||
txtId.Text = "";
|
|
||||||
txtAlterId.Text = "0";
|
switch (eConfigType)
|
||||||
cmbSecurity.Text = Global.DefaultSecurity;
|
{
|
||||||
txtRemarks.Text = "";
|
case EConfigType.Vmess:
|
||||||
|
txtId.Text = "";
|
||||||
|
txtAlterId.Text = "0";
|
||||||
|
cmbSecurity.Text = Global.DefaultSecurity;
|
||||||
|
break;
|
||||||
|
case EConfigType.Shadowsocks:
|
||||||
|
txtId3.Text = "";
|
||||||
|
cmbSecurity3.Text = Global.DefaultSecurity;
|
||||||
|
break;
|
||||||
|
case EConfigType.Socks:
|
||||||
|
txtId4.Text = "";
|
||||||
|
txtSecurity4.Text = "";
|
||||||
|
break;
|
||||||
|
case EConfigType.VLESS:
|
||||||
|
txtId5.Text = "";
|
||||||
|
cmbFlow5.Text = "";
|
||||||
|
cmbSecurity5.Text = Global.None;
|
||||||
|
break;
|
||||||
|
case EConfigType.Trojan:
|
||||||
|
txtId6.Text = "";
|
||||||
|
cmbFlow6.Text = "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
transportControl.ClearServer(vmessItem);
|
transportControl.ClearServer(vmessItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
string remarks = txtRemarks.Text;
|
||||||
string address = txtAddress.Text;
|
string address = txtAddress.Text;
|
||||||
string port = txtPort.Text;
|
string port = txtPort.Text;
|
||||||
string id = txtId.Text;
|
|
||||||
string alterId = txtAlterId.Text;
|
string id = string.Empty;
|
||||||
string security = cmbSecurity.Text;
|
string alterId = string.Empty;
|
||||||
string remarks = txtRemarks.Text;
|
string security = string.Empty;
|
||||||
|
string flow = string.Empty;
|
||||||
|
|
||||||
|
switch (eConfigType)
|
||||||
|
{
|
||||||
|
case EConfigType.Vmess:
|
||||||
|
id = txtId.Text;
|
||||||
|
alterId = txtAlterId.Text;
|
||||||
|
security = cmbSecurity.Text;
|
||||||
|
break;
|
||||||
|
case EConfigType.Shadowsocks:
|
||||||
|
id = txtId3.Text;
|
||||||
|
security = cmbSecurity3.Text;
|
||||||
|
break;
|
||||||
|
case EConfigType.Socks:
|
||||||
|
id = txtId4.Text;
|
||||||
|
security = txtSecurity4.Text;
|
||||||
|
break;
|
||||||
|
case EConfigType.VLESS:
|
||||||
|
id = txtId5.Text;
|
||||||
|
flow = cmbFlow5.Text;
|
||||||
|
security = cmbSecurity5.Text;
|
||||||
|
break;
|
||||||
|
case EConfigType.Trojan:
|
||||||
|
id = txtId6.Text;
|
||||||
|
flow = cmbFlow6.Text;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(address))
|
if (Utils.IsNullOrEmpty(address))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FillServerAddress"));
|
UI.Show(ResUI.FillServerAddress);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port))
|
if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FillCorrectServerPort"));
|
UI.Show(ResUI.FillCorrectServerPort);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(id))
|
if (eConfigType == EConfigType.Shadowsocks)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FillUUID"));
|
if (Utils.IsNullOrEmpty(id))
|
||||||
return;
|
{
|
||||||
|
UI.Show(ResUI.FillPassword);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(security))
|
||||||
|
{
|
||||||
|
UI.Show(ResUI.PleaseSelectEncryption);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (eConfigType != EConfigType.Socks)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(id))
|
||||||
|
{
|
||||||
|
UI.Show(ResUI.FillUUID);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
transportControl.EndBindingServer();
|
transportControl.EndBindingServer();
|
||||||
|
|
||||||
|
vmessItem.remarks = remarks;
|
||||||
vmessItem.address = address;
|
vmessItem.address = address;
|
||||||
vmessItem.port = Utils.ToInt(port);
|
vmessItem.port = Utils.ToInt(port);
|
||||||
vmessItem.id = id;
|
vmessItem.id = id;
|
||||||
vmessItem.alterId = Utils.ToInt(alterId);
|
vmessItem.alterId = Utils.ToInt(alterId);
|
||||||
vmessItem.security = security;
|
vmessItem.security = security;
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
//vmessItem.coreType = GetCoreType(cmbCoreType);
|
|
||||||
|
|
||||||
if (ConfigHandler.AddServer(ref config, vmessItem) == 0)
|
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
||||||
|
{
|
||||||
|
vmessItem.coreType = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
vmessItem.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), cmbCoreType.Text);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret = -1;
|
||||||
|
switch (eConfigType)
|
||||||
|
{
|
||||||
|
case EConfigType.Vmess:
|
||||||
|
ret = ConfigHandler.AddServer(ref config, vmessItem);
|
||||||
|
break;
|
||||||
|
case EConfigType.Shadowsocks:
|
||||||
|
ret = ConfigHandler.AddShadowsocksServer(ref config, vmessItem);
|
||||||
|
break;
|
||||||
|
case EConfigType.Socks:
|
||||||
|
ret = ConfigHandler.AddSocksServer(ref config, vmessItem);
|
||||||
|
break;
|
||||||
|
case EConfigType.VLESS:
|
||||||
|
vmessItem.flow = flow;
|
||||||
|
ret = ConfigHandler.AddVlessServer(ref config, vmessItem);
|
||||||
|
break;
|
||||||
|
case EConfigType.Trojan:
|
||||||
|
vmessItem.flow = flow;
|
||||||
|
ret = ConfigHandler.AddTrojanServer(ref config, vmessItem);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnGUID_Click(object sender, EventArgs e)
|
private void btnGUID_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
txtId.Text = Utils.GetGUID();
|
txtId.Text =
|
||||||
|
txtId5.Text = Utils.GetGUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
#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 vmessItemTemp;
|
|
||||||
if (type.Equals(1))
|
|
||||||
{
|
|
||||||
vmessItemTemp = V2rayConfigHandler.ImportFromClientConfig(fileName, out msg);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItemTemp = V2rayConfigHandler.ImportFromServerConfig(fileName, out msg);
|
|
||||||
}
|
|
||||||
if (vmessItemTemp == null)
|
|
||||||
{
|
|
||||||
UI.ShowWarning(msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
vmessItem = vmessItemTemp;
|
|
||||||
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
txtAlterId.Text = vmessItem.alterId.ToString();
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 从剪贴板导入URL
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void MenuItemImportClipboard_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ClearServer();
|
|
||||||
|
|
||||||
VmessItem vmessItemTemp = ShareHandler.ImportFromClipboardConfig(Utils.GetClipboardData(), out string msg);
|
|
||||||
if (vmessItemTemp == null)
|
|
||||||
{
|
|
||||||
UI.ShowWarning(msg);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
vmessItem = vmessItemTemp;
|
|
||||||
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
txtAlterId.Text = vmessItem.alterId.ToString();
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -120,93 +120,109 @@
|
|||||||
<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>
|
||||||
|
<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>None</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>270, 156</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>115, 61</value>
|
||||||
|
</data>
|
||||||
|
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label17.Text" xml:space="preserve">
|
||||||
|
<value>用户名(可选)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label18.Text" xml:space="preserve">
|
||||||
|
<value>密码(可选)</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>None</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>142, 147</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>137, 78</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label15.Text" xml:space="preserve">
|
||||||
|
<value>密码(password)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>125, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label16.Text" xml:space="preserve">
|
||||||
|
<value>加密方式(encryption)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>89, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label12.Text" xml:space="preserve">
|
||||||
|
<value>密码(password)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label14.Text" xml:space="preserve">
|
||||||
|
<value>流控(flow)</value>
|
||||||
|
</data>
|
||||||
|
<data name="panVless.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>110, 52</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label7.Text" xml:space="preserve">
|
||||||
|
<value>用户ID(id)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label9.Text" xml:space="preserve">
|
||||||
|
<value>流控(flow)</value>
|
||||||
|
</data>
|
||||||
|
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>101, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label10.Text" xml:space="preserve">
|
||||||
|
<value>加密(encryption)</value>
|
||||||
|
</data>
|
||||||
|
<data name="button1.Text" xml:space="preserve">
|
||||||
|
<value>生成</value>
|
||||||
|
</data>
|
||||||
|
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label11.Text" xml:space="preserve">
|
||||||
|
<value>*非空(none)</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="btnGUID.Text" xml:space="preserve">
|
<data name="btnGUID.Text" xml:space="preserve">
|
||||||
<value>生成(&G)</value>
|
<value>生成(&G)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label13.Text" xml:space="preserve">
|
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>*手填,方便识别管理</value>
|
|
||||||
</data>
|
|
||||||
<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">
|
|
||||||
<value>149, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label23.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
<value>95, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label21.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label4.Text" xml:space="preserve">
|
||||||
<value>167, 12</value>
|
<value>额外ID(alterId)</value>
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>180, 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="label20.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>149, 12</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>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="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="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>161, 12</value>
|
|
||||||
</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">
|
|
||||||
<value>107, 12</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="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="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="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 67</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>
|
||||||
@@ -215,40 +231,22 @@
|
|||||||
<value>*随便选,建议(auto)</value>
|
<value>*随便选,建议(auto)</value>
|
||||||
</data>
|
</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>126, 65</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>211, 20</value>
|
<value>211, 20</value>
|
||||||
</data>
|
</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">
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>113, 12</value>
|
<value>113, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.Text" xml:space="preserve">
|
<data name="label5.Text" xml:space="preserve">
|
||||||
<value>加密方式(security)</value>
|
<value>加密方式(security)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>83, 12</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label4.Text" xml:space="preserve">
|
<data name="label6.Text" xml:space="preserve">
|
||||||
<value>额外ID(alterId)</value>
|
<value>别名(remarks)</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>
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>83, 12</value>
|
<value>83, 12</value>
|
||||||
@@ -256,40 +254,22 @@
|
|||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>地址(address)</value>
|
<value>地址(address)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>服务器</value>
|
<value>65, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>端口(port)</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="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="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="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>编辑或添加[VMess]服务器</value>
|
<value>编辑或添加[VMess]服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnGUID5.Text" xml:space="preserve">
|
||||||
|
<value>生成</value>
|
||||||
|
</data>
|
||||||
|
<data name="labCoreType.Text" xml:space="preserve">
|
||||||
|
<value>Core类型</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -7,7 +7,6 @@ namespace v2rayN.Forms
|
|||||||
public partial class BaseForm : Form
|
public partial class BaseForm : Form
|
||||||
{
|
{
|
||||||
protected static Config config;
|
protected static Config config;
|
||||||
protected static System.Drawing.Icon icon;
|
|
||||||
|
|
||||||
public BaseForm()
|
public BaseForm()
|
||||||
{
|
{
|
||||||
@@ -19,16 +18,14 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (icon == null)
|
string file = Utils.GetPath(Global.CustomIconName);
|
||||||
|
if (System.IO.File.Exists(file))
|
||||||
{
|
{
|
||||||
string file = Utils.GetPath(Global.CustomIconName);
|
this.Icon = new System.Drawing.Icon(file);
|
||||||
if (!System.IO.File.Exists(file))
|
return;
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
icon = new System.Drawing.Icon(file);
|
|
||||||
}
|
}
|
||||||
this.Icon = icon;
|
|
||||||
|
this.Icon = Properties.Resources.NotifyIcon1;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,11 +8,12 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
public VmessItem vmessItem = null;
|
public VmessItem vmessItem = null;
|
||||||
public string groupId;
|
public string groupId;
|
||||||
|
public EConfigType eConfigType;
|
||||||
|
|
||||||
public BaseServerForm()
|
public BaseServerForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Windows.Forms;
|
|||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -104,7 +105,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
21
v2rayN/v2rayN/Forms/GroupSettingControl.Designer.cs
generated
21
v2rayN/v2rayN/Forms/GroupSettingControl.Designer.cs
generated
@@ -33,15 +33,20 @@
|
|||||||
this.btnRemove = new System.Windows.Forms.Button();
|
this.btnRemove = new System.Windows.Forms.Button();
|
||||||
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.numSort = new System.Windows.Forms.NumericUpDown();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
this.grbMain.SuspendLayout();
|
this.grbMain.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.numSort)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// grbMain
|
// grbMain
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.grbMain, "grbMain");
|
this.grbMain.Controls.Add(this.label1);
|
||||||
|
this.grbMain.Controls.Add(this.numSort);
|
||||||
this.grbMain.Controls.Add(this.btnRemove);
|
this.grbMain.Controls.Add(this.btnRemove);
|
||||||
this.grbMain.Controls.Add(this.txtRemarks);
|
this.grbMain.Controls.Add(this.txtRemarks);
|
||||||
this.grbMain.Controls.Add(this.label2);
|
this.grbMain.Controls.Add(this.label2);
|
||||||
|
resources.ApplyResources(this.grbMain, "grbMain");
|
||||||
this.grbMain.Name = "grbMain";
|
this.grbMain.Name = "grbMain";
|
||||||
this.grbMain.TabStop = false;
|
this.grbMain.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -63,6 +68,17 @@
|
|||||||
resources.ApplyResources(this.label2, "label2");
|
resources.ApplyResources(this.label2, "label2");
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
//
|
//
|
||||||
|
// numSort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.numSort, "numSort");
|
||||||
|
this.numSort.Name = "numSort";
|
||||||
|
this.numSort.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label1, "label1");
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
//
|
||||||
// GroupSettingControl
|
// GroupSettingControl
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
@@ -72,6 +88,7 @@
|
|||||||
this.Load += new System.EventHandler(this.GroupSettingControl_Load);
|
this.Load += new System.EventHandler(this.GroupSettingControl_Load);
|
||||||
this.grbMain.ResumeLayout(false);
|
this.grbMain.ResumeLayout(false);
|
||||||
this.grbMain.PerformLayout();
|
this.grbMain.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.numSort)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -82,5 +99,7 @@
|
|||||||
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.Button btnRemove;
|
private System.Windows.Forms.Button btnRemove;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.NumericUpDown numSort;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ namespace v2rayN.Forms
|
|||||||
if (groupItem != null)
|
if (groupItem != null)
|
||||||
{
|
{
|
||||||
txtRemarks.Text = groupItem.remarks.ToString();
|
txtRemarks.Text = groupItem.remarks.ToString();
|
||||||
|
numSort.Value = groupItem.sort;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void EndBindingSub()
|
private void EndBindingSub()
|
||||||
@@ -39,6 +40,7 @@ namespace v2rayN.Forms
|
|||||||
if (groupItem != null)
|
if (groupItem != null)
|
||||||
{
|
{
|
||||||
groupItem.remarks = txtRemarks.Text.TrimEx();
|
groupItem.remarks = txtRemarks.Text.TrimEx();
|
||||||
|
groupItem.sort = Convert.ToInt32(numSort.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void txtRemarks_Leave(object sender, EventArgs e)
|
private void txtRemarks_Leave(object sender, EventArgs e)
|
||||||
|
|||||||
@@ -118,126 +118,177 @@
|
|||||||
<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="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="grbMain.TabIndex" type="System.Int32, mscorlib">
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>10</value>
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</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="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>6, 12</value>
|
<value>12, 61</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>71, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>26</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>Sort number</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>grbMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="numSort.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>292, 21</value>
|
<value>127, 57</value>
|
||||||
|
</data>
|
||||||
|
<data name="numSort.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>120, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="numSort.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>25</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>numSort.Name" xml:space="preserve">
|
||||||
|
<value>numSort</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>numSort.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>numSort.Parent" xml:space="preserve">
|
||||||
|
<value>grbMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>numSort.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>525, 21</value>
|
<value>525, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>127, 21</value>
|
<value>75, 23</value>
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 25</value>
|
|
||||||
</data>
|
</data>
|
||||||
<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=">>$this.Type" xml:space="preserve">
|
<data name="btnRemove.Text" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>Remove</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name=">>btnRemove.Name" xml:space="preserve">
|
||||||
<value>GroupSettingControl</value>
|
<value>btnRemove</value>
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</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>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>grbMain.Name" xml:space="preserve">
|
<data name=">>btnRemove.Parent" xml:space="preserve">
|
||||||
<value>grbMain</value>
|
<value>grbMain</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
<data name=">>btnRemove.ZOrder" 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.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>127, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>292, 21</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>1</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>grbMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||||
|
<value>3</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>12, 25</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>10</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>Remarks</value>
|
||||||
|
</data>
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
<value>label2</value>
|
<value>label2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>label2.Type" xml:space="preserve">
|
||||||
<value>75, 23</value>
|
<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>grbMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>619, 61</value>
|
<value>619, 91</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="grbMain.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>Remarks</value>
|
<value>10</value>
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
<data name="grbMain.Text" xml:space="preserve">
|
||||||
<value>Group details</value>
|
<value>Group details</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<data name=">>grbMain.Name" xml:space="preserve">
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<value>grbMain</value>
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</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="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
|
||||||
<value>btnRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name=">>grbMain.Type" xml:space="preserve">
|
<data name=">>grbMain.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Parent" xml:space="preserve">
|
<data name=">>grbMain.Parent" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
||||||
<value>619, 61</value>
|
<value>0</value>
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>Remove</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>619, 91</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>GroupSettingControl</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>
|
||||||
@@ -130,4 +130,7 @@
|
|||||||
<data name="grbMain.Text" xml:space="preserve">
|
<data name="grbMain.Text" xml:space="preserve">
|
||||||
<value>分组详情</value>
|
<value>分组详情</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>排序编号</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -73,7 +74,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
218
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
218
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -47,6 +47,7 @@
|
|||||||
this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.menuMoveToGroup = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -64,27 +65,12 @@
|
|||||||
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.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tabGroup = new System.Windows.Forms.TabControl();
|
this.tabGroup = new System.Windows.Forms.TabControl();
|
||||||
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
||||||
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
this.mainMsgControl = new v2rayN.Forms.MainMsgControl();
|
||||||
this.txtMsgBox = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.ssMain = new System.Windows.Forms.StatusStrip();
|
|
||||||
this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
||||||
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -93,7 +79,6 @@
|
|||||||
this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuRoutings = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuRoutings = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuServers = new System.Windows.Forms.ToolStripMenuItem();
|
this.menuServers = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.menuServers2 = new System.Windows.Forms.ToolStripComboBox();
|
|
||||||
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
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();
|
||||||
@@ -125,8 +110,7 @@
|
|||||||
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsbCheckUpdateGeoSite = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbCheckUpdateGeo = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbCheckUpdateGeoIP = 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.tsbAbout = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsbAbout = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -147,9 +131,6 @@
|
|||||||
this.splitContainer1.Panel2.SuspendLayout();
|
this.splitContainer1.Panel2.SuspendLayout();
|
||||||
this.splitContainer1.SuspendLayout();
|
this.splitContainer1.SuspendLayout();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.gbMsgTitle.SuspendLayout();
|
|
||||||
this.cmsMsgBox.SuspendLayout();
|
|
||||||
this.ssMain.SuspendLayout();
|
|
||||||
this.cmsMain.SuspendLayout();
|
this.cmsMain.SuspendLayout();
|
||||||
this.tsMain.SuspendLayout();
|
this.tsMain.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@@ -208,6 +189,7 @@
|
|||||||
this.menuCopyServer,
|
this.menuCopyServer,
|
||||||
this.menuSetDefaultServer,
|
this.menuSetDefaultServer,
|
||||||
this.toolStripSeparator3,
|
this.toolStripSeparator3,
|
||||||
|
this.menuMoveToGroup,
|
||||||
this.menuMoveTop,
|
this.menuMoveTop,
|
||||||
this.menuMoveUp,
|
this.menuMoveUp,
|
||||||
this.menuMoveDown,
|
this.menuMoveDown,
|
||||||
@@ -310,6 +292,12 @@
|
|||||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
||||||
//
|
//
|
||||||
|
// menuMoveToGroup
|
||||||
|
//
|
||||||
|
this.menuMoveToGroup.Name = "menuMoveToGroup";
|
||||||
|
resources.ApplyResources(this.menuMoveToGroup, "menuMoveToGroup");
|
||||||
|
this.menuMoveToGroup.Click += new System.EventHandler(this.menuMoveToGroup_Click);
|
||||||
|
//
|
||||||
// menuMoveTop
|
// menuMoveTop
|
||||||
//
|
//
|
||||||
this.menuMoveTop.Name = "menuMoveTop";
|
this.menuMoveTop.Name = "menuMoveTop";
|
||||||
@@ -410,6 +398,13 @@
|
|||||||
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
||||||
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
||||||
//
|
//
|
||||||
|
// tsbServer
|
||||||
|
//
|
||||||
|
this.tsbServer.DropDown = this.cmsLv;
|
||||||
|
this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
|
||||||
|
resources.ApplyResources(this.tsbServer, "tsbServer");
|
||||||
|
this.tsbServer.Name = "tsbServer";
|
||||||
|
//
|
||||||
// tabGroup
|
// tabGroup
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tabGroup, "tabGroup");
|
resources.ApplyResources(this.tabGroup, "tabGroup");
|
||||||
@@ -422,13 +417,6 @@
|
|||||||
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";
|
|
||||||
//
|
|
||||||
// splitContainer1
|
// splitContainer1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.splitContainer1, "splitContainer1");
|
resources.ApplyResources(this.splitContainer1, "splitContainer1");
|
||||||
@@ -440,7 +428,7 @@
|
|||||||
//
|
//
|
||||||
// splitContainer1.Panel2
|
// splitContainer1.Panel2
|
||||||
//
|
//
|
||||||
this.splitContainer1.Panel2.Controls.Add(this.gbMsgTitle);
|
this.splitContainer1.Panel2.Controls.Add(this.mainMsgControl);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
@@ -449,119 +437,10 @@
|
|||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
// gbMsgTitle
|
// mainMsgControl
|
||||||
//
|
//
|
||||||
this.gbMsgTitle.Controls.Add(this.txtMsgBox);
|
resources.ApplyResources(this.mainMsgControl, "mainMsgControl");
|
||||||
this.gbMsgTitle.Controls.Add(this.ssMain);
|
this.mainMsgControl.Name = "mainMsgControl";
|
||||||
resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle");
|
|
||||||
this.gbMsgTitle.Name = "gbMsgTitle";
|
|
||||||
this.gbMsgTitle.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtMsgBox
|
|
||||||
//
|
|
||||||
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
|
||||||
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
|
||||||
this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox;
|
|
||||||
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
|
||||||
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
|
||||||
this.txtMsgBox.Name = "txtMsgBox";
|
|
||||||
this.txtMsgBox.ReadOnly = true;
|
|
||||||
this.txtMsgBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMsgBox_KeyDown);
|
|
||||||
//
|
|
||||||
// cmsMsgBox
|
|
||||||
//
|
|
||||||
this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuMsgBoxSelectAll,
|
|
||||||
this.menuMsgBoxCopy,
|
|
||||||
this.menuMsgBoxCopyAll,
|
|
||||||
this.menuMsgBoxClear,
|
|
||||||
this.menuMsgBoxAddRoutingRule,
|
|
||||||
this.menuMsgBoxFilter});
|
|
||||||
this.cmsMsgBox.Name = "cmsMsgBox";
|
|
||||||
resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox");
|
|
||||||
//
|
|
||||||
// menuMsgBoxSelectAll
|
|
||||||
//
|
|
||||||
this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll");
|
|
||||||
this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopy
|
|
||||||
//
|
|
||||||
this.menuMsgBoxCopy.Name = "menuMsgBoxCopy";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy");
|
|
||||||
this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopyAll
|
|
||||||
//
|
|
||||||
this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll");
|
|
||||||
this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxClear
|
|
||||||
//
|
|
||||||
this.menuMsgBoxClear.Name = "menuMsgBoxClear";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear");
|
|
||||||
this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxAddRoutingRule
|
|
||||||
//
|
|
||||||
this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule");
|
|
||||||
this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxFilter
|
|
||||||
//
|
|
||||||
this.menuMsgBoxFilter.Name = "menuMsgBoxFilter";
|
|
||||||
resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter");
|
|
||||||
this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click);
|
|
||||||
//
|
|
||||||
// ssMain
|
|
||||||
//
|
|
||||||
this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.toolSslInboundInfo,
|
|
||||||
this.toolSslBlank1,
|
|
||||||
this.toolSslRoutingRule,
|
|
||||||
this.toolSslBlank2,
|
|
||||||
this.toolSslServerSpeed,
|
|
||||||
this.toolSslBlank4});
|
|
||||||
resources.ApplyResources(this.ssMain, "ssMain");
|
|
||||||
this.ssMain.Name = "ssMain";
|
|
||||||
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
|
||||||
//
|
|
||||||
// toolSslInboundInfo
|
|
||||||
//
|
|
||||||
this.toolSslInboundInfo.Name = "toolSslInboundInfo";
|
|
||||||
resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo");
|
|
||||||
//
|
|
||||||
// toolSslBlank1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
|
|
||||||
this.toolSslBlank1.Name = "toolSslBlank1";
|
|
||||||
this.toolSslBlank1.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslRoutingRule
|
|
||||||
//
|
|
||||||
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
|
||||||
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
|
||||||
//
|
|
||||||
// toolSslBlank2
|
|
||||||
//
|
|
||||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
|
||||||
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
|
||||||
this.toolSslBlank2.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslServerSpeed
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
|
||||||
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
|
||||||
//
|
|
||||||
// toolSslBlank4
|
|
||||||
//
|
|
||||||
this.toolSslBlank4.Name = "toolSslBlank4";
|
|
||||||
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
|
||||||
//
|
//
|
||||||
// notifyMain
|
// notifyMain
|
||||||
//
|
//
|
||||||
@@ -577,7 +456,6 @@
|
|||||||
this.menuSysAgentMode,
|
this.menuSysAgentMode,
|
||||||
this.menuRoutings,
|
this.menuRoutings,
|
||||||
this.menuServers,
|
this.menuServers,
|
||||||
this.menuServers2,
|
|
||||||
this.toolStripSeparator13,
|
this.toolStripSeparator13,
|
||||||
this.menuAddServers2,
|
this.menuAddServers2,
|
||||||
this.menuScanScreen2,
|
this.menuScanScreen2,
|
||||||
@@ -627,14 +505,6 @@
|
|||||||
this.menuServers.Name = "menuServers";
|
this.menuServers.Name = "menuServers";
|
||||||
resources.ApplyResources(this.menuServers, "menuServers");
|
resources.ApplyResources(this.menuServers, "menuServers");
|
||||||
//
|
//
|
||||||
// menuServers2
|
|
||||||
//
|
|
||||||
this.menuServers2.BackColor = System.Drawing.SystemColors.Window;
|
|
||||||
this.menuServers2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.menuServers2.DropDownWidth = 500;
|
|
||||||
resources.ApplyResources(this.menuServers2, "menuServers2");
|
|
||||||
this.menuServers2.Name = "menuServers2";
|
|
||||||
//
|
|
||||||
// toolStripSeparator13
|
// toolStripSeparator13
|
||||||
//
|
//
|
||||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
||||||
@@ -822,8 +692,7 @@
|
|||||||
this.tsbCheckUpdateCore,
|
this.tsbCheckUpdateCore,
|
||||||
this.tsbCheckUpdateXrayCore,
|
this.tsbCheckUpdateXrayCore,
|
||||||
this.toolStripSeparator15,
|
this.toolStripSeparator15,
|
||||||
this.tsbCheckUpdateGeoSite,
|
this.tsbCheckUpdateGeo});
|
||||||
this.tsbCheckUpdateGeoIP});
|
|
||||||
this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
|
this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
|
||||||
resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
|
resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
|
||||||
this.tsbCheckUpdate.Name = "tsbCheckUpdate";
|
this.tsbCheckUpdate.Name = "tsbCheckUpdate";
|
||||||
@@ -851,17 +720,11 @@
|
|||||||
this.toolStripSeparator15.Name = "toolStripSeparator15";
|
this.toolStripSeparator15.Name = "toolStripSeparator15";
|
||||||
resources.ApplyResources(this.toolStripSeparator15, "toolStripSeparator15");
|
resources.ApplyResources(this.toolStripSeparator15, "toolStripSeparator15");
|
||||||
//
|
//
|
||||||
// tsbCheckUpdateGeoSite
|
// tsbCheckUpdateGeo
|
||||||
//
|
//
|
||||||
this.tsbCheckUpdateGeoSite.Name = "tsbCheckUpdateGeoSite";
|
this.tsbCheckUpdateGeo.Name = "tsbCheckUpdateGeo";
|
||||||
resources.ApplyResources(this.tsbCheckUpdateGeoSite, "tsbCheckUpdateGeoSite");
|
resources.ApplyResources(this.tsbCheckUpdateGeo, "tsbCheckUpdateGeo");
|
||||||
this.tsbCheckUpdateGeoSite.Click += new System.EventHandler(this.tsbCheckUpdateGeoSite_Click);
|
this.tsbCheckUpdateGeo.Click += new System.EventHandler(this.tsbCheckUpdateGeo_Click);
|
||||||
//
|
|
||||||
// tsbCheckUpdateGeoIP
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateGeoIP.Name = "tsbCheckUpdateGeoIP";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateGeoIP, "tsbCheckUpdateGeoIP");
|
|
||||||
this.tsbCheckUpdateGeoIP.Click += new System.EventHandler(this.tsbCheckUpdateGeoIP_Click);
|
|
||||||
//
|
//
|
||||||
// toolStripSeparator10
|
// toolStripSeparator10
|
||||||
//
|
//
|
||||||
@@ -954,11 +817,6 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||||
this.splitContainer1.ResumeLayout(false);
|
this.splitContainer1.ResumeLayout(false);
|
||||||
this.groupBox1.ResumeLayout(false);
|
this.groupBox1.ResumeLayout(false);
|
||||||
this.gbMsgTitle.ResumeLayout(false);
|
|
||||||
this.gbMsgTitle.PerformLayout();
|
|
||||||
this.cmsMsgBox.ResumeLayout(false);
|
|
||||||
this.ssMain.ResumeLayout(false);
|
|
||||||
this.ssMain.PerformLayout();
|
|
||||||
this.cmsMain.ResumeLayout(false);
|
this.cmsMain.ResumeLayout(false);
|
||||||
this.tsMain.ResumeLayout(false);
|
this.tsMain.ResumeLayout(false);
|
||||||
this.tsMain.PerformLayout();
|
this.tsMain.PerformLayout();
|
||||||
@@ -970,8 +828,6 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
private System.Windows.Forms.GroupBox gbMsgTitle;
|
|
||||||
private System.Windows.Forms.TextBox txtMsgBox;
|
|
||||||
private v2rayN.Base.ListViewFlickerFree lvServers;
|
private v2rayN.Base.ListViewFlickerFree lvServers;
|
||||||
private System.Windows.Forms.NotifyIcon notifyMain;
|
private System.Windows.Forms.NotifyIcon notifyMain;
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMain;
|
private System.Windows.Forms.ContextMenuStrip cmsMain;
|
||||||
@@ -1032,10 +888,6 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans;
|
private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans;
|
||||||
private System.Windows.Forms.ToolStripButton tsbPromotion;
|
private System.Windows.Forms.ToolStripButton tsbPromotion;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer;
|
private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer;
|
||||||
private System.Windows.Forms.StatusStrip ssMain;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
||||||
@@ -1054,28 +906,18 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem menuClearServerStatistics;
|
private System.Windows.Forms.ToolStripMenuItem menuClearServerStatistics;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRoutings;
|
private System.Windows.Forms.ToolStripMenuItem menuRoutings;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMsgBox;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbBackupGuiNConfig;
|
private System.Windows.Forms.ToolStripMenuItem tsbBackupGuiNConfig;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeoSite;
|
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeo;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeoIP;
|
|
||||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
|
||||||
private System.Windows.Forms.ToolStripComboBox menuServers2;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy;
|
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy;
|
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy;
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting;
|
private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting;
|
||||||
private System.Windows.Forms.TabControl tabGroup;
|
private System.Windows.Forms.TabControl tabGroup;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbGroupSetting;
|
private System.Windows.Forms.ToolStripMenuItem tsbGroupSetting;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMoveToGroup;
|
||||||
|
private MainMsgControl mainMsgControl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -126,7 +126,7 @@
|
|||||||
<value>3, 17</value>
|
<value>3, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>327, 17</value>
|
<value>226, 19</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>355, 22</value>
|
<value>355, 22</value>
|
||||||
@@ -206,6 +206,12 @@
|
|||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>352, 6</value>
|
<value>352, 6</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuMoveToGroup.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>355, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMoveToGroup.Text" xml:space="preserve">
|
||||||
|
<value>Move to Group</value>
|
||||||
|
</data>
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>355, 22</value>
|
<value>355, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -303,7 +309,7 @@
|
|||||||
<value>Export subscription (base64) share to clipboard</value>
|
<value>Export subscription (base64) share to clipboard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>356, 622</value>
|
<value>356, 666</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmsLv.Name" xml:space="preserve">
|
<data name=">>cmsLv.Name" xml:space="preserve">
|
||||||
<value>cmsLv</value>
|
<value>cmsLv</value>
|
||||||
@@ -509,178 +515,28 @@
|
|||||||
<data name=">>splitContainer1.Panel1.ZOrder" xml:space="preserve">
|
<data name=">>splitContainer1.Panel1.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="cmsMsgBox.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<data name="mainMsgControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>493, 20</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>Select All (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>Copy (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>Copy All</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>Clear All</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>Add Routing Rule (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>Set message filters</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>228, 158</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>cmsMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMsgBox.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="mainMsgControl.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.MaxLength" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>946, 177</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>228, 18</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="toolSslInboundInfo.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>80, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslInboundInfo.Text" xml:space="preserve">
|
|
||||||
<value>InboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>False</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
|
|
||||||
<value>No</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>250, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>SPEED Disabled</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
|
||||||
<value>MiddleRight</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 194</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>946, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Text" xml:space="preserve">
|
|
||||||
<value>statusStrip1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Name" xml:space="preserve">
|
|
||||||
<value>ssMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="mainMsgControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>952, 223</value>
|
<value>952, 223</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.TabIndex" type="System.Int32, mscorlib">
|
<data name="mainMsgControl.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
<data name=">>mainMsgControl.Name" xml:space="preserve">
|
||||||
<value>Informations</value>
|
<value>mainMsgControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>gbMsgTitle.Name" xml:space="preserve">
|
<data name=">>mainMsgControl.Type" xml:space="preserve">
|
||||||
<value>gbMsgTitle</value>
|
<value>v2rayN.Forms.MainMsgControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>gbMsgTitle.Type" xml:space="preserve">
|
<data name=">>mainMsgControl.Parent" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Parent" xml:space="preserve">
|
|
||||||
<value>splitContainer1.Panel2</value>
|
<value>splitContainer1.Panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>gbMsgTitle.ZOrder" xml:space="preserve">
|
<data name=">>mainMsgControl.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>splitContainer1.Panel2.Name" xml:space="preserve">
|
<data name=">>splitContainer1.Panel2.Name" xml:space="preserve">
|
||||||
@@ -714,7 +570,7 @@
|
|||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>splitContainer1.ZOrder" xml:space="preserve">
|
<data name=">>splitContainer1.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="notifyMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="notifyMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
@@ -744,73 +600,61 @@
|
|||||||
<value>Do not change system proxy</value>
|
<value>Do not change system proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||||
<value>System proxy</value>
|
<value>System proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuRoutings.Text" xml:space="preserve">
|
<data name="menuRoutings.Text" xml:space="preserve">
|
||||||
<value>Routing</value>
|
<value>Routing</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers.Text" xml:space="preserve">
|
<data name="menuServers.Text" xml:space="preserve">
|
||||||
<value>Server</value>
|
<value>Server</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuServers2.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
|
||||||
<value>Standard</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers2.MaxDropDownItems" type="System.Int32, mscorlib">
|
|
||||||
<value>50</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>200, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers2.ToolTipText" xml:space="preserve">
|
|
||||||
<value>Server</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>261, 6</value>
|
<value>274, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
<data name="menuAddServers2.Text" xml:space="preserve">
|
||||||
<value>Import bulk URL from clipboard</value>
|
<value>Import bulk URL from clipboard</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
<data name="menuScanScreen2.Text" xml:space="preserve">
|
||||||
<value>Scan QR code on the screen</value>
|
<value>Scan QR code on the screen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||||
<value>Update subscriptions</value>
|
<value>Update subscription without proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubViaProxy.Text" xml:space="preserve">
|
<data name="menuUpdateSubViaProxy.Text" xml:space="preserve">
|
||||||
<value>Update subscriptions via proxy</value>
|
<value>Update subscriptions via proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>261, 6</value>
|
<value>274, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>264, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuExit.Text" xml:space="preserve">
|
<data name="menuExit.Text" xml:space="preserve">
|
||||||
<value>Exit</value>
|
<value>Exit</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>265, 221</value>
|
<value>278, 192</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cmsMain.Name" xml:space="preserve">
|
<data name=">>cmsMain.Name" xml:space="preserve">
|
||||||
<value>cmsMain</value>
|
<value>cmsMain</value>
|
||||||
@@ -846,31 +690,31 @@
|
|||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
<data name=">>panel1.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>409, 17</value>
|
<value>315, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>6, 56</value>
|
<value>6, 56</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>182, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
<data name="tsbSubSetting.Text" xml:space="preserve">
|
||||||
<value>Settings</value>
|
<value>Settings</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>182, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||||
<value>Updates</value>
|
<value>Update subscription without proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>182, 22</value>
|
<value>277, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
||||||
<value>Updates via proxy</value>
|
<value>Update subscription with proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
<value>Magenta</value>
|
<value>Magenta</value>
|
||||||
@@ -989,17 +833,11 @@
|
|||||||
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>200, 6</value>
|
<value>200, 6</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateGeoSite.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbCheckUpdateGeo.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>203, 22</value>
|
<value>203, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdateGeoSite.Text" xml:space="preserve">
|
<data name="tsbCheckUpdateGeo.Text" xml:space="preserve">
|
||||||
<value>Update GeoSite</value>
|
<value>Update Geo files</value>
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeoIP.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>203, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeoIP.Text" xml:space="preserve">
|
|
||||||
<value>Update GeoIP</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbCheckUpdate.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
<data name="tsbCheckUpdate.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||||
<value>Magenta</value>
|
<value>Magenta</value>
|
||||||
@@ -1101,7 +939,7 @@
|
|||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>tsMain.ZOrder" xml:space="preserve">
|
<data name=">>tsMain.ZOrder" xml:space="preserve">
|
||||||
<value>5</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
@@ -1205,6 +1043,12 @@
|
|||||||
<data name=">>toolStripSeparator3.Type" xml:space="preserve">
|
<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>
|
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>menuMoveToGroup.Name" xml:space="preserve">
|
||||||
|
<value>menuMoveToGroup</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMoveToGroup.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=">>menuMoveTop.Name" xml:space="preserve">
|
<data name=">>menuMoveTop.Name" xml:space="preserve">
|
||||||
<value>menuMoveTop</value>
|
<value>menuMoveTop</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1313,78 +1157,6 @@
|
|||||||
<data name=">>tsbServer.Type" xml:space="preserve">
|
<data name=">>tsbServer.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuMsgBoxSelectAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxSelectAll</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxSelectAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopyAll</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxClear</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxAddRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Name" xml:space="preserve">
|
|
||||||
<value>toolSslInboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>toolSslRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Name" xml:space="preserve">
|
|
||||||
<value>toolSslServerSpeed</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>notifyMain.Name" xml:space="preserve">
|
<data name=">>notifyMain.Name" xml:space="preserve">
|
||||||
<value>notifyMain</value>
|
<value>notifyMain</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1427,12 +1199,6 @@
|
|||||||
<data name=">>menuServers.Type" xml:space="preserve">
|
<data name=">>menuServers.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>menuServers2.Name" xml:space="preserve">
|
|
||||||
<value>menuServers2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServers2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripSeparator13.Name" xml:space="preserve">
|
<data name=">>toolStripSeparator13.Name" xml:space="preserve">
|
||||||
<value>toolStripSeparator13</value>
|
<value>toolStripSeparator13</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1607,16 +1373,10 @@
|
|||||||
<data name=">>toolStripSeparator15.Type" xml:space="preserve">
|
<data name=">>toolStripSeparator15.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>tsbCheckUpdateGeoSite.Name" xml:space="preserve">
|
<data name=">>tsbCheckUpdateGeo.Name" xml:space="preserve">
|
||||||
<value>tsbCheckUpdateGeoSite</value>
|
<value>tsbCheckUpdateGeo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>tsbCheckUpdateGeoSite.Type" xml:space="preserve">
|
<data name=">>tsbCheckUpdateGeo.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=">>tsbCheckUpdateGeoIP.Name" xml:space="preserve">
|
|
||||||
<value>tsbCheckUpdateGeoIP</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tsbCheckUpdateGeoIP.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>toolStripSeparator10.Name" xml:space="preserve">
|
<data name=">>toolStripSeparator10.Name" xml:space="preserve">
|
||||||
|
|||||||
@@ -321,48 +321,27 @@
|
|||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>复制 (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>复制所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>清除所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>快速添加路由规则 (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>221, 22</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>设置信息过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>222, 136</value>
|
<value>222, 136</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
<value>网速显示未启用</value>
|
<value>网速显示未启用</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
|
||||||
<value>信息</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>172, 22</value>
|
<value>172, 22</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -421,7 +400,7 @@
|
|||||||
<value>260, 22</value>
|
<value>260, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||||
<value>更新订阅</value>
|
<value>更新订阅(不通过代理)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>260, 22</value>
|
<value>260, 22</value>
|
||||||
@@ -451,7 +430,7 @@
|
|||||||
<value>180, 22</value>
|
<value>180, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||||
<value>更新订阅</value>
|
<value>更新订阅(不通过代理)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>180, 22</value>
|
<value>180, 22</value>
|
||||||
@@ -573,4 +552,7 @@
|
|||||||
<data name="tsbClose.Text" xml:space="preserve">
|
<data name="tsbClose.Text" xml:space="preserve">
|
||||||
<value> 关闭窗口 </value>
|
<value> 关闭窗口 </value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuMoveToGroup.Text" xml:space="preserve">
|
||||||
|
<value>移至分组</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
204
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
Normal file
204
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
partial class MainMsgControl
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 必需的设计器变量。
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清理所有正在使用的资源。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 组件设计器生成的代码
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设计器支持所需的方法 - 不要修改
|
||||||
|
/// 使用代码编辑器修改此方法的内容。
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainMsgControl));
|
||||||
|
this.txtMsgBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
||||||
|
this.ssMain = new System.Windows.Forms.StatusStrip();
|
||||||
|
this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.cmsMsgBox.SuspendLayout();
|
||||||
|
this.gbMsgTitle.SuspendLayout();
|
||||||
|
this.ssMain.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// txtMsgBox
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
||||||
|
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
||||||
|
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox;
|
||||||
|
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
||||||
|
this.txtMsgBox.Name = "txtMsgBox";
|
||||||
|
this.txtMsgBox.ReadOnly = true;
|
||||||
|
this.txtMsgBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMsgBox_KeyDown);
|
||||||
|
//
|
||||||
|
// cmsMsgBox
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox");
|
||||||
|
this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuMsgBoxSelectAll,
|
||||||
|
this.menuMsgBoxCopy,
|
||||||
|
this.menuMsgBoxCopyAll,
|
||||||
|
this.menuMsgBoxClear,
|
||||||
|
this.menuMsgBoxAddRoutingRule,
|
||||||
|
this.menuMsgBoxFilter});
|
||||||
|
this.cmsMsgBox.Name = "cmsMsgBox";
|
||||||
|
//
|
||||||
|
// menuMsgBoxSelectAll
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll");
|
||||||
|
this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll";
|
||||||
|
this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxCopy
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy");
|
||||||
|
this.menuMsgBoxCopy.Name = "menuMsgBoxCopy";
|
||||||
|
this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxCopyAll
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll");
|
||||||
|
this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll";
|
||||||
|
this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxClear
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear");
|
||||||
|
this.menuMsgBoxClear.Name = "menuMsgBoxClear";
|
||||||
|
this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxAddRoutingRule
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule");
|
||||||
|
this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule";
|
||||||
|
this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click);
|
||||||
|
//
|
||||||
|
// menuMsgBoxFilter
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter");
|
||||||
|
this.menuMsgBoxFilter.Name = "menuMsgBoxFilter";
|
||||||
|
this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click);
|
||||||
|
//
|
||||||
|
// gbMsgTitle
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle");
|
||||||
|
this.gbMsgTitle.Controls.Add(this.txtMsgBox);
|
||||||
|
this.gbMsgTitle.Controls.Add(this.ssMain);
|
||||||
|
this.gbMsgTitle.Name = "gbMsgTitle";
|
||||||
|
this.gbMsgTitle.TabStop = false;
|
||||||
|
//
|
||||||
|
// ssMain
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.ssMain, "ssMain");
|
||||||
|
this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolSslInboundInfo,
|
||||||
|
this.toolSslBlank1,
|
||||||
|
this.toolSslRoutingRule,
|
||||||
|
this.toolSslBlank2,
|
||||||
|
this.toolSslServerSpeed,
|
||||||
|
this.toolSslBlank4});
|
||||||
|
this.ssMain.Name = "ssMain";
|
||||||
|
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
||||||
|
//
|
||||||
|
// toolSslInboundInfo
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo");
|
||||||
|
this.toolSslInboundInfo.Name = "toolSslInboundInfo";
|
||||||
|
//
|
||||||
|
// toolSslBlank1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
|
||||||
|
this.toolSslBlank1.Name = "toolSslBlank1";
|
||||||
|
this.toolSslBlank1.Spring = true;
|
||||||
|
//
|
||||||
|
// toolSslRoutingRule
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
||||||
|
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
||||||
|
//
|
||||||
|
// toolSslBlank2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
||||||
|
this.toolSslBlank2.Name = "toolSslBlank2";
|
||||||
|
this.toolSslBlank2.Spring = true;
|
||||||
|
//
|
||||||
|
// toolSslServerSpeed
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
||||||
|
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
|
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
||||||
|
//
|
||||||
|
// toolSslBlank4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
||||||
|
this.toolSslBlank4.Name = "toolSslBlank4";
|
||||||
|
//
|
||||||
|
// MainMsgControl
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this, "$this");
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.Controls.Add(this.gbMsgTitle);
|
||||||
|
this.Name = "MainMsgControl";
|
||||||
|
this.Load += new System.EventHandler(this.MainMsgControl_Load);
|
||||||
|
this.cmsMsgBox.ResumeLayout(false);
|
||||||
|
this.gbMsgTitle.ResumeLayout(false);
|
||||||
|
this.gbMsgTitle.PerformLayout();
|
||||||
|
this.ssMain.ResumeLayout(false);
|
||||||
|
this.ssMain.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TextBox txtMsgBox;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip cmsMsgBox;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter;
|
||||||
|
private System.Windows.Forms.GroupBox gbMsgTitle;
|
||||||
|
private System.Windows.Forms.StatusStrip ssMain;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
||||||
|
}
|
||||||
|
}
|
||||||
204
v2rayN/v2rayN/Forms/MainMsgControl.cs
Normal file
204
v2rayN/v2rayN/Forms/MainMsgControl.cs
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
|
namespace v2rayN.Forms
|
||||||
|
{
|
||||||
|
public partial class MainMsgControl : UserControl
|
||||||
|
{
|
||||||
|
private string MsgFilter = string.Empty;
|
||||||
|
delegate void AppendTextDelegate(string text);
|
||||||
|
|
||||||
|
public MainMsgControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MainMsgControl_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 提示信息
|
||||||
|
|
||||||
|
public void AppendText(string text)
|
||||||
|
{
|
||||||
|
if (this.txtMsgBox.InvokeRequired)
|
||||||
|
{
|
||||||
|
Invoke(new AppendTextDelegate(AppendText), new object[] { text });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!Utils.IsNullOrEmpty(MsgFilter))
|
||||||
|
{
|
||||||
|
if (!Regex.IsMatch(text, MsgFilter))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//this.txtMsgBox.AppendText(text);
|
||||||
|
ShowMsg(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提示信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="msg"></param>
|
||||||
|
private void ShowMsg(string msg)
|
||||||
|
{
|
||||||
|
if (txtMsgBox.Lines.Length > 999)
|
||||||
|
{
|
||||||
|
ClearMsg();
|
||||||
|
}
|
||||||
|
this.txtMsgBox.AppendText(msg);
|
||||||
|
if (!msg.EndsWith(Environment.NewLine))
|
||||||
|
{
|
||||||
|
this.txtMsgBox.AppendText(Environment.NewLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清除信息
|
||||||
|
/// </summary>
|
||||||
|
public void ClearMsg()
|
||||||
|
{
|
||||||
|
txtMsgBox.Invoke((Action)delegate
|
||||||
|
{
|
||||||
|
txtMsgBox.Clear();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisplayToolStatus(Config config)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append($"{ResUI.LabLocal}:");
|
||||||
|
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks)}]");
|
||||||
|
sb.Append(" | ");
|
||||||
|
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
||||||
|
{
|
||||||
|
sb.Append($"[{Global.InboundHttp}({ResUI.SystemProxy}):{config.GetLocalPort(Global.InboundHttp)}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.inbound[0].allowLANConn)
|
||||||
|
{
|
||||||
|
sb.Append($" {ResUI.LabLAN}:");
|
||||||
|
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks2)}]");
|
||||||
|
sb.Append(" | ");
|
||||||
|
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp2)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
SetToolSslInfo("inbound", sb.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetToolSslInfo(string type, string value)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case "speed":
|
||||||
|
toolSslServerSpeed.Text = value;
|
||||||
|
break;
|
||||||
|
case "inbound":
|
||||||
|
toolSslInboundInfo.Text = value;
|
||||||
|
break;
|
||||||
|
case "routing":
|
||||||
|
toolSslRoutingRule.Text = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ScrollToCaret()
|
||||||
|
{
|
||||||
|
this.txtMsgBox.ScrollToCaret();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region MsgBoxMenu
|
||||||
|
private void menuMsgBoxSelectAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.txtMsgBox.Focus();
|
||||||
|
this.txtMsgBox.SelectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMsgBoxCopy_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var data = this.txtMsgBox.SelectedText.TrimEx();
|
||||||
|
Utils.SetClipboardData(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuMsgBoxCopyAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var data = this.txtMsgBox.Text;
|
||||||
|
Utils.SetClipboardData(data);
|
||||||
|
}
|
||||||
|
private void menuMsgBoxClear_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.txtMsgBox.Clear();
|
||||||
|
}
|
||||||
|
private void menuMsgBoxAddRoutingRule_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
menuMsgBoxCopy_Click(null, null);
|
||||||
|
var fm = new RoutingSettingForm();
|
||||||
|
fm.ShowDialog();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void txtMsgBox_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Control)
|
||||||
|
{
|
||||||
|
switch (e.KeyCode)
|
||||||
|
{
|
||||||
|
case Keys.A:
|
||||||
|
menuMsgBoxSelectAll_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.C:
|
||||||
|
menuMsgBoxCopy_Click(null, null);
|
||||||
|
break;
|
||||||
|
case Keys.V:
|
||||||
|
menuMsgBoxAddRoutingRule_Click(null, null);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private void menuMsgBoxFilter_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var fm = new MsgFilterSetForm();
|
||||||
|
fm.MsgFilter = MsgFilter;
|
||||||
|
if (fm.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
MsgFilter = fm.MsgFilter;
|
||||||
|
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, MsgFilter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||||
|
{
|
||||||
|
if (!Utils.IsNullOrEmpty(e.ClickedItem.Text))
|
||||||
|
{
|
||||||
|
Utils.SetClipboardData(e.ClickedItem.Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
384
v2rayN/v2rayN/Forms/MainMsgControl.resx
Normal file
384
v2rayN/v2rayN/Forms/MainMsgControl.resx
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name=">>toolSslRoutingRule.Name" xml:space="preserve">
|
||||||
|
<value>toolSslRoutingRule</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
||||||
|
<value>Select All (Ctrl+A)</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.Name" xml:space="preserve">
|
||||||
|
<value>ssMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxSelectAll.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxSelectAll</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
||||||
|
<value>False</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxClear.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslServerSpeed.Name" xml:space="preserve">
|
||||||
|
<value>toolSslServerSpeed</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopyAll.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxCopyAll</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.MaxLength" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 221</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank2.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank1.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslInboundInfo.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>0, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslInboundInfo.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>80, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslInboundInfo.Name" xml:space="preserve">
|
||||||
|
<value>toolSslInboundInfo</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.Name" xml:space="preserve">
|
||||||
|
<value>txtMsgBox</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>0, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxFilter.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
|
||||||
|
<value>微软雅黑, 8pt</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.Parent" xml:space="preserve">
|
||||||
|
<value>gbMsgTitle</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslRoutingRule.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
||||||
|
<value>Add Routing Rule (Ctrl+V)</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||||
|
<value>MiddleRight</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
|
||||||
|
<value>微软雅黑, 8pt</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>696, 246</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslInboundInfo.Text" xml:space="preserve">
|
||||||
|
<value>InboundInfo</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxAddRoutingRule.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxClear.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxClear</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>5</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopy.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>3, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank4.Name" xml:space="preserve">
|
||||||
|
<value>toolSslBlank4</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.Parent" xml:space="preserve">
|
||||||
|
<value>gbMsgTitle</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Text" xml:space="preserve">
|
||||||
|
<value>Informations</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>172, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Multiline" type="System.Boolean, mscorlib">
|
||||||
|
<value>True</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
||||||
|
<value>Clear All</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
|
<value>6, 12</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="txtMsgBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
||||||
|
<value>Vertical</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.Parent" xml:space="preserve">
|
||||||
|
<value>$this</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>690, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
||||||
|
<value>cmsMsgBox</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>cmsMsgBox.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
|
<value>Fill</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>690, 204</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>227, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>172, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank4.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>MainMsgControl</value>
|
||||||
|
</data>
|
||||||
|
<data name="gbMsgTitle.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>696, 246</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank1.Name" xml:space="preserve">
|
||||||
|
<value>toolSslBlank1</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
|
||||||
|
<value>No</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
||||||
|
<value>Copy All</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>250, 17</value>
|
||||||
|
</data>
|
||||||
|
<data name="ssMain.Text" xml:space="preserve">
|
||||||
|
<value>statusStrip1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxAddRoutingRule.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxAddRoutingRule</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslBlank2.Name" xml:space="preserve">
|
||||||
|
<value>toolSslBlank2</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
||||||
|
<value>Set message filters</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
|
<value>SPEED Disabled</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>gbMsgTitle.Name" xml:space="preserve">
|
||||||
|
<value>gbMsgTitle</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxFilter.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxFilter</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>ssMain.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxSelectAll.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopy.Name" xml:space="preserve">
|
||||||
|
<value>menuMsgBoxCopy</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgBox.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolSslServerSpeed.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
||||||
|
<value>Copy (Ctrl+C)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>228, 136</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>menuMsgBoxCopyAll.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>131, 18</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="cmsMsgBox.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
@@ -117,62 +117,56 @@
|
|||||||
<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">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</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" />
|
<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">
|
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>83, 12</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label6.Text" xml:space="preserve">
|
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
||||||
<value>别名(remarks)</value>
|
<value>全选 (Ctrl+A)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>53, 12</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label5.Text" xml:space="preserve">
|
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
||||||
<value>加密方式</value>
|
<value>复制 (Ctrl+C)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>29, 12</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label3.Text" xml:space="preserve">
|
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
||||||
<value>密码</value>
|
<value>复制所有</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
||||||
<value>服务器端口</value>
|
<value>清除所有</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>65, 12</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
||||||
<value>服务器地址</value>
|
<value>快速添加路由规则 (Ctrl+V)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>确定(&O)</value>
|
<value>221, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
||||||
<value>92, 21</value>
|
<value>设置信息过滤器</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>导入配置文件</value>
|
<value>222, 136</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemImportClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>171, 22</value>
|
<value>157, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="menuItemImportClipboard.Text" xml:space="preserve">
|
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>从剪贴板导入URL</value>
|
<value>157, 17</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="gbMsgTitle.Text" xml:space="preserve">
|
||||||
<value>编辑或添加[Shadowsocks]服务器</value>
|
<value>信息</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
||||||
|
<value>网速显示未启用</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
26
v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs
generated
26
v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs
generated
@@ -34,14 +34,18 @@
|
|||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
|
this.btnFilterDirect = new System.Windows.Forms.Button();
|
||||||
|
this.btnFilderProxy = new System.Windows.Forms.Button();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
this.groupBox1.Controls.Add(this.btnFilderProxy);
|
||||||
|
this.groupBox1.Controls.Add(this.btnFilterDirect);
|
||||||
this.groupBox1.Controls.Add(this.txtMsgFilter);
|
this.groupBox1.Controls.Add(this.txtMsgFilter);
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -52,15 +56,15 @@
|
|||||||
//
|
//
|
||||||
// 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";
|
||||||
//
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
@@ -72,6 +76,20 @@
|
|||||||
this.btnOK.UseVisualStyleBackColor = true;
|
this.btnOK.UseVisualStyleBackColor = true;
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||||
//
|
//
|
||||||
|
// btnFilterDirect
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnFilterDirect, "btnFilterDirect");
|
||||||
|
this.btnFilterDirect.Name = "btnFilterDirect";
|
||||||
|
this.btnFilterDirect.UseVisualStyleBackColor = true;
|
||||||
|
this.btnFilterDirect.Click += new System.EventHandler(this.btnFilterDirect_Click);
|
||||||
|
//
|
||||||
|
// btnFilderProxy
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.btnFilderProxy, "btnFilderProxy");
|
||||||
|
this.btnFilderProxy.Name = "btnFilderProxy";
|
||||||
|
this.btnFilderProxy.UseVisualStyleBackColor = true;
|
||||||
|
this.btnFilderProxy.Click += new System.EventHandler(this.btnFilderProxy_Click);
|
||||||
|
//
|
||||||
// MsgFilterSetForm
|
// MsgFilterSetForm
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this, "$this");
|
resources.ApplyResources(this, "$this");
|
||||||
@@ -94,5 +112,7 @@
|
|||||||
private System.Windows.Forms.Panel panel2;
|
private System.Windows.Forms.Panel panel2;
|
||||||
private System.Windows.Forms.Button btnClose;
|
private System.Windows.Forms.Button btnClose;
|
||||||
private System.Windows.Forms.Button btnOK;
|
private System.Windows.Forms.Button btnOK;
|
||||||
|
private System.Windows.Forms.Button btnFilderProxy;
|
||||||
|
private System.Windows.Forms.Button btnFilterDirect;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,5 +34,15 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void btnFilderProxy_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
txtMsgFilter.Text = "^(?!.*proxy).*$";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnFilterDirect_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
txtMsgFilter.Text = "^(?!.*direct).*$";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,151 +117,226 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</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="txtMsgFilter.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnFilderProxy.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>41, 29</value>
|
<value>157, 47</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnFilderProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>490, 60</value>
|
<value>95, 23</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="txtMsgFilter.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnFilderProxy.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>11</value>
|
<value>13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
<data name="btnFilderProxy.Text" xml:space="preserve">
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
<value>Filter Proxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
<data name=">>btnFilderProxy.Name" xml:space="preserve">
|
||||||
<value>panel2</value>
|
<value>btnFilderProxy</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
<data name=">>btnFilderProxy.Type" xml:space="preserve">
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>396, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</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>
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
<data name=">>btnFilderProxy.Parent" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>groupBox1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
<data name=">>btnFilderProxy.ZOrder" xml:space="preserve">
|
||||||
|
<value>0</value>
|
||||||
|
</data>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="btnFilterDirect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
<value>NoControl</value>
|
<value>NoControl</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
<data name="btnFilterDirect.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>panel2</value>
|
<value>41, 47</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnFilterDirect.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>4</value>
|
<value>95, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name="btnFilterDirect.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>MsgFilterSetForm</value>
|
<value>12</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnFilterDirect.Text" xml:space="preserve">
|
||||||
|
<value>Filter Direct</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnFilterDirect.Name" xml:space="preserve">
|
||||||
|
<value>btnFilterDirect</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnFilterDirect.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=">>btnFilterDirect.Parent" xml:space="preserve">
|
||||||
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>btnFilterDirect.ZOrder" xml:space="preserve">
|
||||||
|
<value>1</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtMsgFilter.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>41, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMsgFilter.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtMsgFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>409, 21</value>
|
<value>409, 21</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
<data name="txtMsgFilter.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>txtMsgFilter.Name" xml:space="preserve">
|
||||||
<value>0, 0</value>
|
<value>txtMsgFilter</value>
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 76</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name=">>txtMsgFilter.Type" xml:space="preserve">
|
<data name=">>txtMsgFilter.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="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name=">>txtMsgFilter.Parent" xml:space="preserve">
|
||||||
<value>Bottom</value>
|
<value>groupBox1</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>txtMsgFilter.ZOrder" xml:space="preserve">
|
||||||
|
<value>2</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, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>490, 76</value>
|
<value>490, 76</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>8</value>
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
<data name="groupBox1.Text" xml:space="preserve">
|
||||||
<value>Filter</value>
|
<value>Filter</value>
|
||||||
</data>
|
</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=">>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">
|
<data name=">>btnOK.Name" xml:space="preserve">
|
||||||
<value>btnOK</value>
|
<value>btnOK</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name=">>btnOK.Type" xml:space="preserve">
|
||||||
<value>490, 136</value>
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
<data name=">>btnOK.Parent" xml:space="preserve">
|
||||||
<value>75, 23</value>
|
<value>panel2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
<value>303, 17</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>6, 12</value>
|
<value>Bottom</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>0, 76</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>490, 60</value>
|
||||||
|
</data>
|
||||||
|
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
||||||
|
<value>9</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>
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
<data name=">>panel2.Parent" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name=">>panel2.ZOrder" xml:space="preserve">
|
||||||
<value>MsgFilterSetForm</value>
|
<value>1</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>396, 17</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>panel2</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>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>
|
||||||
<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.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>490, 136</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Text" xml:space="preserve">
|
||||||
|
<value>MsgFilterSetForm</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
|
<value>MsgFilterSetForm</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>
|
||||||
@@ -129,4 +129,10 @@
|
|||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>设置过滤器</value>
|
<value>设置过滤器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnFilderProxy.Text" xml:space="preserve">
|
||||||
|
<value>过滤Proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnFilterDirect.Text" xml:space="preserve">
|
||||||
|
<value>过滤Direct</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
288
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
288
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -33,15 +33,14 @@
|
|||||||
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.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.txtpass = new System.Windows.Forms.TextBox();
|
||||||
|
this.txtuser = new System.Windows.Forms.TextBox();
|
||||||
this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox();
|
this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox();
|
||||||
this.chksniffingEnabled2 = new System.Windows.Forms.CheckBox();
|
this.chkAllowLANConn = new System.Windows.Forms.CheckBox();
|
||||||
this.chksniffingEnabled = new System.Windows.Forms.CheckBox();
|
this.chksniffingEnabled = new System.Windows.Forms.CheckBox();
|
||||||
this.chkmuxEnabled = new System.Windows.Forms.CheckBox();
|
this.chkmuxEnabled = new System.Windows.Forms.CheckBox();
|
||||||
this.chkAllowIn2 = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkudpEnabled2 = new System.Windows.Forms.CheckBox();
|
|
||||||
this.cmbprotocol2 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtlocalPort2 = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmbprotocol = new System.Windows.Forms.ComboBox();
|
this.cmbprotocol = new System.Windows.Forms.ComboBox();
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
this.chkudpEnabled = new System.Windows.Forms.CheckBox();
|
this.chkudpEnabled = new System.Windows.Forms.CheckBox();
|
||||||
@@ -69,22 +68,38 @@
|
|||||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||||
|
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
|
||||||
|
this.label17 = new System.Windows.Forms.Label();
|
||||||
|
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox();
|
this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox();
|
||||||
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
||||||
this.btnSetLoopback = new System.Windows.Forms.Button();
|
this.btnSetLoopback = new System.Windows.Forms.Button();
|
||||||
this.txtautoUpdateInterval = new System.Windows.Forms.TextBox();
|
this.txtautoUpdateInterval = new System.Windows.Forms.TextBox();
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
this.label15 = new System.Windows.Forms.Label();
|
||||||
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
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.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.chkAutoRun = new System.Windows.Forms.CheckBox();
|
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
||||||
|
this.tabPageCoreType = new System.Windows.Forms.TabPage();
|
||||||
|
this.cmbCoreType6 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType6 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbCoreType5 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType5 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbCoreType4 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType4 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbCoreType3 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType3 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbCoreType2 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType2 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbCoreType1 = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labCoreType1 = new System.Windows.Forms.Label();
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label18 = new System.Windows.Forms.Label();
|
||||||
|
this.cmbSystemProxyAdvancedProtocol = new System.Windows.Forms.ComboBox();
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
this.label12 = new System.Windows.Forms.Label();
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
this.txtsystemProxyExceptions = new System.Windows.Forms.TextBox();
|
this.txtsystemProxyExceptions = new System.Windows.Forms.TextBox();
|
||||||
@@ -97,6 +112,7 @@
|
|||||||
this.tabPage2.SuspendLayout();
|
this.tabPage2.SuspendLayout();
|
||||||
this.tabPage6.SuspendLayout();
|
this.tabPage6.SuspendLayout();
|
||||||
this.tabPage7.SuspendLayout();
|
this.tabPage7.SuspendLayout();
|
||||||
|
this.tabPageCoreType.SuspendLayout();
|
||||||
this.tabPage3.SuspendLayout();
|
this.tabPage3.SuspendLayout();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
this.panel2.SuspendLayout();
|
this.panel2.SuspendLayout();
|
||||||
@@ -116,6 +132,7 @@
|
|||||||
this.tabControl1.Controls.Add(this.tabPage2);
|
this.tabControl1.Controls.Add(this.tabPage2);
|
||||||
this.tabControl1.Controls.Add(this.tabPage6);
|
this.tabControl1.Controls.Add(this.tabPage6);
|
||||||
this.tabControl1.Controls.Add(this.tabPage7);
|
this.tabControl1.Controls.Add(this.tabPage7);
|
||||||
|
this.tabControl1.Controls.Add(this.tabPageCoreType);
|
||||||
this.tabControl1.Controls.Add(this.tabPage3);
|
this.tabControl1.Controls.Add(this.tabPage3);
|
||||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||||
this.tabControl1.Name = "tabControl1";
|
this.tabControl1.Name = "tabControl1";
|
||||||
@@ -130,15 +147,14 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
this.groupBox1.Controls.Add(this.label16);
|
||||||
|
this.groupBox1.Controls.Add(this.label4);
|
||||||
|
this.groupBox1.Controls.Add(this.txtpass);
|
||||||
|
this.groupBox1.Controls.Add(this.txtuser);
|
||||||
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
|
this.groupBox1.Controls.Add(this.chkAllowLANConn);
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
||||||
this.groupBox1.Controls.Add(this.chkmuxEnabled);
|
this.groupBox1.Controls.Add(this.chkmuxEnabled);
|
||||||
this.groupBox1.Controls.Add(this.chkAllowIn2);
|
|
||||||
this.groupBox1.Controls.Add(this.chkudpEnabled2);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbprotocol2);
|
|
||||||
this.groupBox1.Controls.Add(this.label3);
|
|
||||||
this.groupBox1.Controls.Add(this.txtlocalPort2);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbprotocol);
|
this.groupBox1.Controls.Add(this.cmbprotocol);
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
this.groupBox1.Controls.Add(this.chkudpEnabled);
|
this.groupBox1.Controls.Add(this.chkudpEnabled);
|
||||||
@@ -151,17 +167,37 @@
|
|||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// label16
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label16, "label16");
|
||||||
|
this.label16.Name = "label16";
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label4, "label4");
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
//
|
||||||
|
// txtpass
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtpass, "txtpass");
|
||||||
|
this.txtpass.Name = "txtpass";
|
||||||
|
//
|
||||||
|
// txtuser
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtuser, "txtuser");
|
||||||
|
this.txtuser.Name = "txtuser";
|
||||||
|
//
|
||||||
// chkdefAllowInsecure
|
// chkdefAllowInsecure
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure");
|
resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure");
|
||||||
this.chkdefAllowInsecure.Name = "chkdefAllowInsecure";
|
this.chkdefAllowInsecure.Name = "chkdefAllowInsecure";
|
||||||
this.chkdefAllowInsecure.UseVisualStyleBackColor = true;
|
this.chkdefAllowInsecure.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// chksniffingEnabled2
|
// chkAllowLANConn
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chksniffingEnabled2, "chksniffingEnabled2");
|
resources.ApplyResources(this.chkAllowLANConn, "chkAllowLANConn");
|
||||||
this.chksniffingEnabled2.Name = "chksniffingEnabled2";
|
this.chkAllowLANConn.Name = "chkAllowLANConn";
|
||||||
this.chksniffingEnabled2.UseVisualStyleBackColor = true;
|
this.chkAllowLANConn.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// chksniffingEnabled
|
// chksniffingEnabled
|
||||||
//
|
//
|
||||||
@@ -175,39 +211,6 @@
|
|||||||
this.chkmuxEnabled.Name = "chkmuxEnabled";
|
this.chkmuxEnabled.Name = "chkmuxEnabled";
|
||||||
this.chkmuxEnabled.UseVisualStyleBackColor = true;
|
this.chkmuxEnabled.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// chkAllowIn2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAllowIn2, "chkAllowIn2");
|
|
||||||
this.chkAllowIn2.Name = "chkAllowIn2";
|
|
||||||
this.chkAllowIn2.UseVisualStyleBackColor = true;
|
|
||||||
this.chkAllowIn2.CheckedChanged += new System.EventHandler(this.chkAllowIn2_CheckedChanged);
|
|
||||||
//
|
|
||||||
// chkudpEnabled2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkudpEnabled2, "chkudpEnabled2");
|
|
||||||
this.chkudpEnabled2.Name = "chkudpEnabled2";
|
|
||||||
this.chkudpEnabled2.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbprotocol2
|
|
||||||
//
|
|
||||||
this.cmbprotocol2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbprotocol2.FormattingEnabled = true;
|
|
||||||
this.cmbprotocol2.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbprotocol2.Items"),
|
|
||||||
resources.GetString("cmbprotocol2.Items1")});
|
|
||||||
resources.ApplyResources(this.cmbprotocol2, "cmbprotocol2");
|
|
||||||
this.cmbprotocol2.Name = "cmbprotocol2";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtlocalPort2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtlocalPort2, "txtlocalPort2");
|
|
||||||
this.txtlocalPort2.Name = "txtlocalPort2";
|
|
||||||
//
|
|
||||||
// cmbprotocol
|
// cmbprotocol
|
||||||
//
|
//
|
||||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
@@ -376,24 +379,45 @@
|
|||||||
//
|
//
|
||||||
// tabPage7
|
// tabPage7
|
||||||
//
|
//
|
||||||
|
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
|
||||||
|
this.tabPage7.Controls.Add(this.label17);
|
||||||
|
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
|
||||||
|
this.tabPage7.Controls.Add(this.label3);
|
||||||
this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13);
|
this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13);
|
||||||
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
||||||
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
||||||
this.tabPage7.Controls.Add(this.txtautoUpdateInterval);
|
this.tabPage7.Controls.Add(this.txtautoUpdateInterval);
|
||||||
this.tabPage7.Controls.Add(this.label15);
|
this.tabPage7.Controls.Add(this.label15);
|
||||||
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
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.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.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;
|
||||||
//
|
//
|
||||||
|
// txttrayMenuServersLimit
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
|
||||||
|
this.txttrayMenuServersLimit.Name = "txttrayMenuServersLimit";
|
||||||
|
//
|
||||||
|
// label17
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label17, "label17");
|
||||||
|
this.label17.Name = "label17";
|
||||||
|
//
|
||||||
|
// txtautoUpdateSubInterval
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.txtautoUpdateSubInterval, "txtautoUpdateSubInterval");
|
||||||
|
this.txtautoUpdateSubInterval.Name = "txtautoUpdateSubInterval";
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label3, "label3");
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
//
|
||||||
// chkEnableSecurityProtocolTls13
|
// chkEnableSecurityProtocolTls13
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13");
|
resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13");
|
||||||
@@ -429,18 +453,6 @@
|
|||||||
this.chkIgnoreGeoUpdateCore.Name = "chkIgnoreGeoUpdateCore";
|
this.chkIgnoreGeoUpdateCore.Name = "chkIgnoreGeoUpdateCore";
|
||||||
this.chkIgnoreGeoUpdateCore.UseVisualStyleBackColor = true;
|
this.chkIgnoreGeoUpdateCore.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// cmbCoreType
|
|
||||||
//
|
|
||||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
|
||||||
this.cmbCoreType.Name = "cmbCoreType";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// chkKeepOlderDedupl
|
// chkKeepOlderDedupl
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl");
|
resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl");
|
||||||
@@ -465,18 +477,102 @@
|
|||||||
this.chkEnableStatistics.Name = "chkEnableStatistics";
|
this.chkEnableStatistics.Name = "chkEnableStatistics";
|
||||||
this.chkEnableStatistics.UseVisualStyleBackColor = true;
|
this.chkEnableStatistics.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// chkAllowLANConn
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAllowLANConn, "chkAllowLANConn");
|
|
||||||
this.chkAllowLANConn.Name = "chkAllowLANConn";
|
|
||||||
this.chkAllowLANConn.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// 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;
|
||||||
//
|
//
|
||||||
|
// tabPageCoreType
|
||||||
|
//
|
||||||
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.labCoreType6);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.labCoreType5);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType4);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.labCoreType4);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType3);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.labCoreType3);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType2);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.labCoreType2);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
|
||||||
|
this.tabPageCoreType.Controls.Add(this.labCoreType1);
|
||||||
|
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
||||||
|
this.tabPageCoreType.Name = "tabPageCoreType";
|
||||||
|
this.tabPageCoreType.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// cmbCoreType6
|
||||||
|
//
|
||||||
|
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType6.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
||||||
|
this.cmbCoreType6.Name = "cmbCoreType6";
|
||||||
|
//
|
||||||
|
// labCoreType6
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType6, "labCoreType6");
|
||||||
|
this.labCoreType6.Name = "labCoreType6";
|
||||||
|
//
|
||||||
|
// cmbCoreType5
|
||||||
|
//
|
||||||
|
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType5.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
||||||
|
this.cmbCoreType5.Name = "cmbCoreType5";
|
||||||
|
//
|
||||||
|
// labCoreType5
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType5, "labCoreType5");
|
||||||
|
this.labCoreType5.Name = "labCoreType5";
|
||||||
|
//
|
||||||
|
// cmbCoreType4
|
||||||
|
//
|
||||||
|
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType4.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
||||||
|
this.cmbCoreType4.Name = "cmbCoreType4";
|
||||||
|
//
|
||||||
|
// labCoreType4
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType4, "labCoreType4");
|
||||||
|
this.labCoreType4.Name = "labCoreType4";
|
||||||
|
//
|
||||||
|
// cmbCoreType3
|
||||||
|
//
|
||||||
|
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType3.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
||||||
|
this.cmbCoreType3.Name = "cmbCoreType3";
|
||||||
|
//
|
||||||
|
// labCoreType3
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType3, "labCoreType3");
|
||||||
|
this.labCoreType3.Name = "labCoreType3";
|
||||||
|
//
|
||||||
|
// cmbCoreType2
|
||||||
|
//
|
||||||
|
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType2.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
||||||
|
this.cmbCoreType2.Name = "cmbCoreType2";
|
||||||
|
//
|
||||||
|
// labCoreType2
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType2, "labCoreType2");
|
||||||
|
this.labCoreType2.Name = "labCoreType2";
|
||||||
|
//
|
||||||
|
// cmbCoreType1
|
||||||
|
//
|
||||||
|
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbCoreType1.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
||||||
|
this.cmbCoreType1.Name = "cmbCoreType1";
|
||||||
|
//
|
||||||
|
// labCoreType1
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.labCoreType1, "labCoreType1");
|
||||||
|
this.labCoreType1.Name = "labCoreType1";
|
||||||
|
//
|
||||||
// tabPage3
|
// tabPage3
|
||||||
//
|
//
|
||||||
this.tabPage3.Controls.Add(this.groupBox2);
|
this.tabPage3.Controls.Add(this.groupBox2);
|
||||||
@@ -486,6 +582,8 @@
|
|||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
|
this.groupBox2.Controls.Add(this.label18);
|
||||||
|
this.groupBox2.Controls.Add(this.cmbSystemProxyAdvancedProtocol);
|
||||||
this.groupBox2.Controls.Add(this.label13);
|
this.groupBox2.Controls.Add(this.label13);
|
||||||
this.groupBox2.Controls.Add(this.label12);
|
this.groupBox2.Controls.Add(this.label12);
|
||||||
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
||||||
@@ -493,6 +591,17 @@
|
|||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
|
// label18
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.label18, "label18");
|
||||||
|
this.label18.Name = "label18";
|
||||||
|
//
|
||||||
|
// cmbSystemProxyAdvancedProtocol
|
||||||
|
//
|
||||||
|
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
|
||||||
|
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
|
||||||
|
this.cmbSystemProxyAdvancedProtocol.Name = "cmbSystemProxyAdvancedProtocol";
|
||||||
|
//
|
||||||
// label13
|
// label13
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.label13, "label13");
|
resources.ApplyResources(this.label13, "label13");
|
||||||
@@ -548,6 +657,8 @@
|
|||||||
this.tabPage6.PerformLayout();
|
this.tabPage6.PerformLayout();
|
||||||
this.tabPage7.ResumeLayout(false);
|
this.tabPage7.ResumeLayout(false);
|
||||||
this.tabPage7.PerformLayout();
|
this.tabPage7.PerformLayout();
|
||||||
|
this.tabPageCoreType.ResumeLayout(false);
|
||||||
|
this.tabPageCoreType.PerformLayout();
|
||||||
this.tabPage3.ResumeLayout(false);
|
this.tabPage3.ResumeLayout(false);
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.groupBox2.ResumeLayout(false);
|
||||||
this.groupBox2.PerformLayout();
|
this.groupBox2.PerformLayout();
|
||||||
@@ -573,11 +684,6 @@
|
|||||||
private System.Windows.Forms.Panel panel2;
|
private System.Windows.Forms.Panel panel2;
|
||||||
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.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txtlocalPort2;
|
|
||||||
private System.Windows.Forms.CheckBox chkudpEnabled2;
|
|
||||||
private System.Windows.Forms.CheckBox chkAllowIn2;
|
|
||||||
private System.Windows.Forms.CheckBox chkmuxEnabled;
|
private System.Windows.Forms.CheckBox chkmuxEnabled;
|
||||||
private System.Windows.Forms.TabPage tabPage6;
|
private System.Windows.Forms.TabPage tabPage6;
|
||||||
private System.Windows.Forms.TextBox txtKcpmtu;
|
private System.Windows.Forms.TextBox txtKcpmtu;
|
||||||
@@ -597,7 +703,6 @@
|
|||||||
private System.Windows.Forms.CheckBox chkAutoRun;
|
private System.Windows.Forms.CheckBox chkAutoRun;
|
||||||
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled2;
|
|
||||||
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;
|
||||||
@@ -607,8 +712,6 @@
|
|||||||
private System.Windows.Forms.LinkLabel linkDnsObjectDoc;
|
private System.Windows.Forms.LinkLabel linkDnsObjectDoc;
|
||||||
private System.Windows.Forms.TextBox txtremoteDNS;
|
private System.Windows.Forms.TextBox txtremoteDNS;
|
||||||
private System.Windows.Forms.Label label14;
|
private System.Windows.Forms.Label label14;
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.CheckBox chkIgnoreGeoUpdateCore;
|
private System.Windows.Forms.CheckBox chkIgnoreGeoUpdateCore;
|
||||||
private System.Windows.Forms.TabPage tabPage3;
|
private System.Windows.Forms.TabPage tabPage3;
|
||||||
private System.Windows.Forms.TextBox txtsystemProxyExceptions;
|
private System.Windows.Forms.TextBox txtsystemProxyExceptions;
|
||||||
@@ -620,5 +723,28 @@
|
|||||||
private System.Windows.Forms.Button btnSetLoopback;
|
private System.Windows.Forms.Button btnSetLoopback;
|
||||||
private System.Windows.Forms.CheckBox chkEnableAutoAdjustMainLvColWidth;
|
private System.Windows.Forms.CheckBox chkEnableAutoAdjustMainLvColWidth;
|
||||||
private System.Windows.Forms.CheckBox chkEnableSecurityProtocolTls13;
|
private System.Windows.Forms.CheckBox chkEnableSecurityProtocolTls13;
|
||||||
|
private System.Windows.Forms.TabPage tabPageCoreType;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType1;
|
||||||
|
private System.Windows.Forms.Label labCoreType1;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType6;
|
||||||
|
private System.Windows.Forms.Label labCoreType6;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType5;
|
||||||
|
private System.Windows.Forms.Label labCoreType5;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType4;
|
||||||
|
private System.Windows.Forms.Label labCoreType4;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType3;
|
||||||
|
private System.Windows.Forms.Label labCoreType3;
|
||||||
|
private System.Windows.Forms.ComboBox cmbCoreType2;
|
||||||
|
private System.Windows.Forms.Label labCoreType2;
|
||||||
|
private System.Windows.Forms.Label label16;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.TextBox txtpass;
|
||||||
|
private System.Windows.Forms.TextBox txtuser;
|
||||||
|
private System.Windows.Forms.TextBox txtautoUpdateSubInterval;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.TextBox txttrayMenuServersLimit;
|
||||||
|
private System.Windows.Forms.Label label17;
|
||||||
|
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
|
||||||
|
private System.Windows.Forms.Label label18;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -16,13 +18,15 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
private void OptionSettingForm_Load(object sender, EventArgs e)
|
private void OptionSettingForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
|
||||||
|
|
||||||
InitBase();
|
InitBase();
|
||||||
|
|
||||||
InitKCP();
|
InitKCP();
|
||||||
|
|
||||||
InitGUI();
|
InitGUI();
|
||||||
|
|
||||||
|
InitCoreType();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -44,23 +48,10 @@ namespace v2rayN.Forms
|
|||||||
cmbprotocol.Text = config.inbound[0].protocol.ToString();
|
cmbprotocol.Text = config.inbound[0].protocol.ToString();
|
||||||
chkudpEnabled.Checked = config.inbound[0].udpEnabled;
|
chkudpEnabled.Checked = config.inbound[0].udpEnabled;
|
||||||
chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled;
|
chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled;
|
||||||
|
chkAllowLANConn.Checked = config.inbound[0].allowLANConn;
|
||||||
|
txtuser.Text = config.inbound[0].user;
|
||||||
|
txtpass.Text = config.inbound[0].pass;
|
||||||
|
|
||||||
txtlocalPort2.Text = $"{config.inbound[0].localPort + 1}";
|
|
||||||
cmbprotocol2.Text = Global.InboundHttp;
|
|
||||||
|
|
||||||
if (config.inbound.Count > 1)
|
|
||||||
{
|
|
||||||
txtlocalPort2.Text = config.inbound[1].localPort.ToString();
|
|
||||||
cmbprotocol2.Text = config.inbound[1].protocol.ToString();
|
|
||||||
chkudpEnabled2.Checked = config.inbound[1].udpEnabled;
|
|
||||||
chksniffingEnabled2.Checked = config.inbound[1].sniffingEnabled;
|
|
||||||
chkAllowIn2.Checked = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
chkAllowIn2.Checked = false;
|
|
||||||
}
|
|
||||||
chkAllowIn2State();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//remoteDNS
|
//remoteDNS
|
||||||
@@ -69,6 +60,8 @@ namespace v2rayN.Forms
|
|||||||
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
||||||
|
|
||||||
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
||||||
|
|
||||||
|
cmbSystemProxyAdvancedProtocol.Text = config.systemProxyAdvancedProtocol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -94,15 +87,14 @@ namespace v2rayN.Forms
|
|||||||
//开机自动启动
|
//开机自动启动
|
||||||
chkAutoRun.Checked = Utils.IsAutoRun();
|
chkAutoRun.Checked = Utils.IsAutoRun();
|
||||||
|
|
||||||
chkAllowLANConn.Checked = config.allowLANConn;
|
|
||||||
chkEnableStatistics.Checked = config.enableStatistics;
|
chkEnableStatistics.Checked = config.enableStatistics;
|
||||||
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
||||||
|
|
||||||
ComboItem[] cbSource = new ComboItem[]
|
ComboItem[] cbSource = new ComboItem[]
|
||||||
{
|
{
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = UIRes.I18N("QuickFresh")},
|
new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = ResUI.QuickFresh},
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = UIRes.I18N("MediumFresh")},
|
new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = ResUI.MediumFresh},
|
||||||
new ComboItem{ID = (int)Global.StatisticsFreshRate.slow, Text = UIRes.I18N("SlowFresh")},
|
new ComboItem{ID = (int)Global.StatisticsFreshRate.slow, Text = ResUI.SlowFresh},
|
||||||
};
|
};
|
||||||
cbFreshrate.DataSource = cbSource;
|
cbFreshrate.DataSource = cbSource;
|
||||||
|
|
||||||
@@ -123,11 +115,43 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
||||||
cmbCoreType.SelectedIndex = (int)config.coreType;
|
|
||||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
|
||||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
||||||
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
||||||
|
|
||||||
|
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
||||||
|
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
||||||
|
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitCoreType()
|
||||||
|
{
|
||||||
|
if (config.coreTypeItem == null)
|
||||||
|
{
|
||||||
|
config.coreTypeItem = new List<CoreTypeItem>();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (EConfigType it in Enum.GetValues(typeof(EConfigType)))
|
||||||
|
{
|
||||||
|
if (config.coreTypeItem.FindIndex(t => t.configType == it) >= 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
config.coreTypeItem.Add(new CoreTypeItem()
|
||||||
|
{
|
||||||
|
configType = it,
|
||||||
|
coreType = ECoreType.Xray
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for (int k = 1; k <= config.coreTypeItem.Count; k++)
|
||||||
|
{
|
||||||
|
var item = config.coreTypeItem[k - 1];
|
||||||
|
((ComboBox)tabPageCoreType.Controls[$"cmbCoreType{k}"]).Items.AddRange(Global.coreTypes.ToArray());
|
||||||
|
tabPageCoreType.Controls[$"labCoreType{k}"].Text = item.configType.ToString();
|
||||||
|
tabPageCoreType.Controls[$"cmbCoreType{k}"].Text = item.coreType.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (SaveBase() != 0)
|
if (SaveBase() != 0)
|
||||||
@@ -146,13 +170,18 @@ namespace v2rayN.Forms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SaveCoreType() != 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.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,14 +203,15 @@ namespace v2rayN.Forms
|
|||||||
string protocol = cmbprotocol.Text.TrimEx();
|
string protocol = cmbprotocol.Text.TrimEx();
|
||||||
bool udpEnabled = chkudpEnabled.Checked;
|
bool udpEnabled = chkudpEnabled.Checked;
|
||||||
bool sniffingEnabled = chksniffingEnabled.Checked;
|
bool sniffingEnabled = chksniffingEnabled.Checked;
|
||||||
|
bool allowLANConn = chkAllowLANConn.Checked;
|
||||||
if (Utils.IsNullOrEmpty(localPort) || !Utils.IsNumberic(localPort))
|
if (Utils.IsNullOrEmpty(localPort) || !Utils.IsNumberic(localPort))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FillLocalListeningPort"));
|
UI.Show(ResUI.FillLocalListeningPort);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(protocol))
|
if (Utils.IsNullOrEmpty(protocol))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseSelectProtocol"));
|
UI.Show(ResUI.PleaseSelectProtocol);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +224,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (remoteDNS.Contains("{") || remoteDNS.Contains("}"))
|
if (remoteDNS.Contains("{") || remoteDNS.Contains("}"))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FillCorrectDNSText"));
|
UI.Show(ResUI.FillCorrectDNSText);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -203,41 +233,16 @@ namespace v2rayN.Forms
|
|||||||
config.inbound[0].protocol = protocol;
|
config.inbound[0].protocol = protocol;
|
||||||
config.inbound[0].udpEnabled = udpEnabled;
|
config.inbound[0].udpEnabled = udpEnabled;
|
||||||
config.inbound[0].sniffingEnabled = sniffingEnabled;
|
config.inbound[0].sniffingEnabled = sniffingEnabled;
|
||||||
|
config.inbound[0].allowLANConn = allowLANConn;
|
||||||
|
config.inbound[0].user = txtuser.Text;
|
||||||
|
config.inbound[0].pass = txtpass.Text;
|
||||||
|
|
||||||
//本地监听2
|
if (config.inbound.Count > 1)
|
||||||
string localPort2 = txtlocalPort2.Text.TrimEx();
|
|
||||||
string protocol2 = cmbprotocol2.Text.TrimEx();
|
|
||||||
bool udpEnabled2 = chkudpEnabled2.Checked;
|
|
||||||
bool sniffingEnabled2 = chksniffingEnabled2.Checked;
|
|
||||||
if (chkAllowIn2.Checked)
|
|
||||||
{
|
{
|
||||||
if (Utils.IsNullOrEmpty(localPort2) || !Utils.IsNumberic(localPort2))
|
config.inbound.RemoveAt(1);
|
||||||
{
|
|
||||||
UI.Show(UIRes.I18N("FillLocalListeningPort"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(protocol2))
|
|
||||||
{
|
|
||||||
UI.Show(UIRes.I18N("PleaseSelectProtocol"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (config.inbound.Count < 2)
|
|
||||||
{
|
|
||||||
config.inbound.Add(new Mode.InItem());
|
|
||||||
}
|
|
||||||
config.inbound[1].localPort = Utils.ToInt(localPort2);
|
|
||||||
config.inbound[1].protocol = protocol2;
|
|
||||||
config.inbound[1].udpEnabled = udpEnabled2;
|
|
||||||
config.inbound[1].sniffingEnabled = sniffingEnabled2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (config.inbound.Count > 1)
|
|
||||||
{
|
|
||||||
config.inbound.RemoveAt(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//日志
|
//日志
|
||||||
config.logEnabled = logEnabled;
|
config.logEnabled = logEnabled;
|
||||||
config.loglevel = loglevel;
|
config.loglevel = loglevel;
|
||||||
@@ -252,6 +257,8 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
||||||
|
|
||||||
|
config.systemProxyAdvancedProtocol = cmbSystemProxyAdvancedProtocol.Text.TrimEx();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,7 +284,7 @@ namespace v2rayN.Forms
|
|||||||
|| Utils.IsNullOrEmpty(readBufferSize) || !Utils.IsNumberic(readBufferSize)
|
|| Utils.IsNullOrEmpty(readBufferSize) || !Utils.IsNumberic(readBufferSize)
|
||||||
|| Utils.IsNullOrEmpty(writeBufferSize) || !Utils.IsNumberic(writeBufferSize))
|
|| Utils.IsNullOrEmpty(writeBufferSize) || !Utils.IsNumberic(writeBufferSize))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("FillKcpParameters"));
|
UI.Show(ResUI.FillKcpParameters);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
config.kcpItem.mtu = Utils.ToInt(mtu);
|
config.kcpItem.mtu = Utils.ToInt(mtu);
|
||||||
@@ -300,19 +307,29 @@ namespace v2rayN.Forms
|
|||||||
//开机自动启动
|
//开机自动启动
|
||||||
Utils.SetAutoRun(chkAutoRun.Checked);
|
Utils.SetAutoRun(chkAutoRun.Checked);
|
||||||
|
|
||||||
config.allowLANConn = chkAllowLANConn.Checked;
|
|
||||||
|
|
||||||
bool 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;
|
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
||||||
|
|
||||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
||||||
config.coreType = (ECoreType)cmbCoreType.SelectedIndex;
|
|
||||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
|
||||||
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
||||||
config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.Checked;
|
config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.Checked;
|
||||||
|
|
||||||
|
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
||||||
|
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
||||||
|
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int SaveCoreType()
|
||||||
|
{
|
||||||
|
for (int k = 1; k <= config.coreTypeItem.Count; k++)
|
||||||
|
{
|
||||||
|
var item = config.coreTypeItem[k - 1];
|
||||||
|
item.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), tabPageCoreType.Controls[$"cmbCoreType{k}"].Text);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,17 +338,6 @@ namespace v2rayN.Forms
|
|||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void chkAllowIn2_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
chkAllowIn2State();
|
|
||||||
}
|
|
||||||
private void chkAllowIn2State()
|
|
||||||
{
|
|
||||||
bool blAllow2 = chkAllowIn2.Checked;
|
|
||||||
txtlocalPort2.Enabled =
|
|
||||||
cmbprotocol2.Enabled =
|
|
||||||
chkudpEnabled2.Enabled = blAllow2;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -342,5 +348,6 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -121,99 +121,12 @@
|
|||||||
<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="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>324, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
|
||||||
<value>传输层安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled2.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>114, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启Mux多路复用</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowIn2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>102, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowIn2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口2</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled2.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Text" xml:space="preserve">
|
|
||||||
<value>记录本地日志(默认关闭)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>日志等级</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>648, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
<data name="tabPage1.Text" xml:space="preserve">
|
||||||
<value> Core:基础设置 </value>
|
<value> Core:基础设置 </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>161, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>支持填写DnsObject,JSON格式</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Text" xml:space="preserve">
|
|
||||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>654, 443</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -226,6 +139,24 @@
|
|||||||
<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="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>248, 211</value>
|
||||||
|
</data>
|
||||||
|
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>185, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label17.Text" xml:space="preserve">
|
||||||
|
<value>托盘右键菜单服务器展示数量限制</value>
|
||||||
|
</data>
|
||||||
|
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>248, 184</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>173, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label3.Text" xml:space="preserve">
|
||||||
|
<value>自动更新订阅的间隔(单位小时)</value>
|
||||||
|
</data>
|
||||||
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
||||||
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -239,7 +170,7 @@
|
|||||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
<value>解除Windows10 UWP应用回环代理限制</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>255, 156</value>
|
<value>248, 157</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>191, 12</value>
|
<value>191, 12</value>
|
||||||
@@ -253,18 +184,18 @@
|
|||||||
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
||||||
<value>更新Core时忽略Geo文件</value>
|
<value>更新Core时忽略Geo文件</value>
|
||||||
</data>
|
</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">
|
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>156, 16</value>
|
<value>156, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
||||||
<value>去重时保留序号较小的项</value>
|
<value>去重时保留序号较小的项</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="cbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>431, 37</value>
|
||||||
|
</data>
|
||||||
|
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>339, 41</value>
|
||||||
|
</data>
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>77, 12</value>
|
<value>77, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -272,16 +203,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>372, 16</value>
|
<value>300, 16</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启v2rayN客户端)</value>
|
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>144, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
|
||||||
<value>允许来自局域网的连接</value>
|
|
||||||
</data>
|
</data>
|
||||||
<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>
|
||||||
@@ -295,6 +220,129 @@
|
|||||||
<data name="tabPage7.Text" xml:space="preserve">
|
<data name="tabPage7.Text" xml:space="preserve">
|
||||||
<value> v2rayN设置 </value>
|
<value> v2rayN设置 </value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPageCoreType.Text" xml:space="preserve">
|
||||||
|
<value> Core类型设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="tabPage3.Text" xml:space="preserve">
|
||||||
|
<value> 系统代理设置 </value>
|
||||||
|
</data>
|
||||||
|
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>662, 469</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>648, 437</value>
|
||||||
|
</data>
|
||||||
|
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label16.Text" xml:space="preserve">
|
||||||
|
<value>认证密码</value>
|
||||||
|
</data>
|
||||||
|
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>219, 65</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>认证用户名</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkdefAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>15, 208</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>324, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
||||||
|
<value>传输层安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>144, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
||||||
|
<value>允许来自局域网的连接</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>96, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启流量探测</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkmuxEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>15, 145</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkmuxEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>114, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启Mux多路复用</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>219, 29</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>29, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label1.Text" xml:space="preserve">
|
||||||
|
<value>协议</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>66, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chkudpEnabled.Text" xml:space="preserve">
|
||||||
|
<value>开启UDP</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>15, 176</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>156, 16</value>
|
||||||
|
</data>
|
||||||
|
<data name="chklogEnabled.Text" xml:space="preserve">
|
||||||
|
<value>记录本地日志(默认关闭)</value>
|
||||||
|
</data>
|
||||||
|
<data name="cmbloglevel.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>257, 174</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
|
<value>193, 178</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>53, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label5.Text" xml:space="preserve">
|
||||||
|
<value>日志等级</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>77, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label2.Text" xml:space="preserve">
|
||||||
|
<value>本地监听端口</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>161, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
||||||
|
<value>支持填写DnsObject,JSON格式</value>
|
||||||
|
</data>
|
||||||
|
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>191, 12</value>
|
||||||
|
</data>
|
||||||
|
<data name="label14.Text" xml:space="preserve">
|
||||||
|
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>654, 443</value>
|
||||||
|
</data>
|
||||||
|
<data name="groupBox2.Text" xml:space="preserve">
|
||||||
|
<value>例外</value>
|
||||||
|
</data>
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>95, 12</value>
|
<value>95, 12</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -307,26 +355,17 @@
|
|||||||
<data name="label12.Text" xml:space="preserve">
|
<data name="label12.Text" xml:space="preserve">
|
||||||
<value>对于下列字符开头的地址不使用代理服务器:</value>
|
<value>对于下列字符开头的地址不使用代理服务器:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>654, 443</value>
|
<value>0, 479</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>例外</value>
|
<value>662, 60</value>
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
|
||||||
<value> 系统代理设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 469</value>
|
|
||||||
</data>
|
</data>
|
||||||
<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">
|
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>0, 479</value>
|
<value>662, 10</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>662, 539</value>
|
<value>662, 539</value>
|
||||||
@@ -334,4 +373,7 @@
|
|||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>参数设置</value>
|
<value>参数设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="label18.Text" xml:space="preserve">
|
||||||
|
<value>高级代理设置, 协议选择(可选)</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
this.label4 = new System.Windows.Forms.Label();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
|
this.chkAutoSort = new System.Windows.Forms.CheckBox();
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
this.btnClose = new System.Windows.Forms.Button();
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
this.btnOK = new System.Windows.Forms.Button();
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
@@ -63,7 +64,6 @@
|
|||||||
//
|
//
|
||||||
// panel3
|
// panel3
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Controls.Add(this.chkEnabled);
|
this.panel3.Controls.Add(this.chkEnabled);
|
||||||
this.panel3.Controls.Add(this.clbInboundTag);
|
this.panel3.Controls.Add(this.clbInboundTag);
|
||||||
this.panel3.Controls.Add(this.label2);
|
this.panel3.Controls.Add(this.label2);
|
||||||
@@ -74,6 +74,7 @@
|
|||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
this.panel3.Controls.Add(this.labRoutingTips);
|
||||||
this.panel3.Controls.Add(this.label4);
|
this.panel3.Controls.Add(this.label4);
|
||||||
this.panel3.Controls.Add(this.cmbOutboundTag);
|
this.panel3.Controls.Add(this.cmbOutboundTag);
|
||||||
|
resources.ApplyResources(this.panel3, "panel3");
|
||||||
this.panel3.Name = "panel3";
|
this.panel3.Name = "panel3";
|
||||||
//
|
//
|
||||||
// chkEnabled
|
// chkEnabled
|
||||||
@@ -84,8 +85,8 @@
|
|||||||
//
|
//
|
||||||
// clbInboundTag
|
// clbInboundTag
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
|
||||||
this.clbInboundTag.CheckOnClick = true;
|
this.clbInboundTag.CheckOnClick = true;
|
||||||
|
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
||||||
this.clbInboundTag.FormattingEnabled = true;
|
this.clbInboundTag.FormattingEnabled = true;
|
||||||
this.clbInboundTag.Items.AddRange(new object[] {
|
this.clbInboundTag.Items.AddRange(new object[] {
|
||||||
resources.GetString("clbInboundTag.Items"),
|
resources.GetString("clbInboundTag.Items"),
|
||||||
@@ -100,8 +101,8 @@
|
|||||||
//
|
//
|
||||||
// clbProtocol
|
// clbProtocol
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
|
||||||
this.clbProtocol.CheckOnClick = true;
|
this.clbProtocol.CheckOnClick = true;
|
||||||
|
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
||||||
this.clbProtocol.FormattingEnabled = true;
|
this.clbProtocol.FormattingEnabled = true;
|
||||||
this.clbProtocol.Items.AddRange(new object[] {
|
this.clbProtocol.Items.AddRange(new object[] {
|
||||||
resources.GetString("clbProtocol.Items"),
|
resources.GetString("clbProtocol.Items"),
|
||||||
@@ -127,8 +128,8 @@
|
|||||||
//
|
//
|
||||||
// labRoutingTips
|
// labRoutingTips
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
||||||
|
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
this.labRoutingTips.Name = "labRoutingTips";
|
||||||
//
|
//
|
||||||
// label4
|
// label4
|
||||||
@@ -138,26 +139,33 @@
|
|||||||
//
|
//
|
||||||
// cmbOutboundTag
|
// cmbOutboundTag
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
|
||||||
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.cmbOutboundTag.FormattingEnabled = true;
|
this.cmbOutboundTag.FormattingEnabled = true;
|
||||||
this.cmbOutboundTag.Items.AddRange(new object[] {
|
this.cmbOutboundTag.Items.AddRange(new object[] {
|
||||||
resources.GetString("cmbOutboundTag.Items"),
|
resources.GetString("cmbOutboundTag.Items"),
|
||||||
resources.GetString("cmbOutboundTag.Items1"),
|
resources.GetString("cmbOutboundTag.Items1"),
|
||||||
resources.GetString("cmbOutboundTag.Items2")});
|
resources.GetString("cmbOutboundTag.Items2")});
|
||||||
|
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
||||||
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
||||||
//
|
//
|
||||||
// panel4
|
// panel4
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
this.panel4.Controls.Add(this.chkAutoSort);
|
||||||
this.panel4.Controls.Add(this.btnClose);
|
this.panel4.Controls.Add(this.btnClose);
|
||||||
this.panel4.Controls.Add(this.btnOK);
|
this.panel4.Controls.Add(this.btnOK);
|
||||||
|
resources.ApplyResources(this.panel4, "panel4");
|
||||||
this.panel4.Name = "panel4";
|
this.panel4.Name = "panel4";
|
||||||
//
|
//
|
||||||
|
// chkAutoSort
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.chkAutoSort, "chkAutoSort");
|
||||||
|
this.chkAutoSort.Name = "chkAutoSort";
|
||||||
|
this.chkAutoSort.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
// btnClose
|
// btnClose
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
resources.ApplyResources(this.btnClose, "btnClose");
|
||||||
this.btnClose.Name = "btnClose";
|
this.btnClose.Name = "btnClose";
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
this.btnClose.UseVisualStyleBackColor = true;
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||||
@@ -171,15 +179,15 @@
|
|||||||
//
|
//
|
||||||
// panel2
|
// panel2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.groupBox2);
|
this.panel2.Controls.Add(this.groupBox2);
|
||||||
this.panel2.Controls.Add(this.groupBox1);
|
this.panel2.Controls.Add(this.groupBox1);
|
||||||
|
resources.ApplyResources(this.panel2, "panel2");
|
||||||
this.panel2.Name = "panel2";
|
this.panel2.Name = "panel2";
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Controls.Add(this.txtIP);
|
this.groupBox2.Controls.Add(this.txtIP);
|
||||||
|
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -190,8 +198,8 @@
|
|||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Controls.Add(this.txtDomain);
|
this.groupBox1.Controls.Add(this.txtDomain);
|
||||||
|
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
@@ -214,6 +222,7 @@
|
|||||||
this.panel3.ResumeLayout(false);
|
this.panel3.ResumeLayout(false);
|
||||||
this.panel3.PerformLayout();
|
this.panel3.PerformLayout();
|
||||||
this.panel4.ResumeLayout(false);
|
this.panel4.ResumeLayout(false);
|
||||||
|
this.panel4.PerformLayout();
|
||||||
this.panel2.ResumeLayout(false);
|
this.panel2.ResumeLayout(false);
|
||||||
this.groupBox2.ResumeLayout(false);
|
this.groupBox2.ResumeLayout(false);
|
||||||
this.groupBox2.PerformLayout();
|
this.groupBox2.PerformLayout();
|
||||||
@@ -245,5 +254,6 @@
|
|||||||
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
private System.Windows.Forms.CheckBox chkEnabled;
|
private System.Windows.Forms.CheckBox chkEnabled;
|
||||||
|
private System.Windows.Forms.CheckBox chkAutoSort;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ using System.Windows.Forms;
|
|||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -47,8 +48,16 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
rulesItem.inboundTag = inboundTag;
|
rulesItem.inboundTag = inboundTag;
|
||||||
rulesItem.outboundTag = cmbOutboundTag.Text;
|
rulesItem.outboundTag = cmbOutboundTag.Text;
|
||||||
rulesItem.domain = Utils.String2List(txtDomain.Text);
|
if (chkAutoSort.Checked)
|
||||||
rulesItem.ip = Utils.String2List(txtIP.Text);
|
{
|
||||||
|
rulesItem.domain = Utils.String2ListSorted(txtDomain.Text);
|
||||||
|
rulesItem.ip = Utils.String2ListSorted(txtIP.Text);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rulesItem.domain = Utils.String2List(txtDomain.Text);
|
||||||
|
rulesItem.ip = Utils.String2List(txtIP.Text);
|
||||||
|
}
|
||||||
|
|
||||||
var protocol = new List<string>();
|
var protocol = new List<string>();
|
||||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
||||||
@@ -125,7 +134,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
if (!hasRule)
|
if (!hasRule)
|
||||||
{
|
{
|
||||||
UI.ShowWarning(string.Format(UIRes.I18N("RoutingRuleDetailRequiredTips"), "Port/Protocol/Domain/IP"));
|
UI.ShowWarning(string.Format(ResUI.RoutingRuleDetailRequiredTips, "Port/Protocol/Domain/IP"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -170,4 +170,7 @@
|
|||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>路由规则详情设置</value>
|
<value>路由规则详情设置</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="chkAutoSort.Text" xml:space="preserve">
|
||||||
|
<value>保存时Domain和IP自动排序</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -54,6 +56,7 @@ namespace v2rayN.Forms
|
|||||||
lvRoutings.View = View.Details;
|
lvRoutings.View = View.Details;
|
||||||
lvRoutings.MultiSelect = true;
|
lvRoutings.MultiSelect = true;
|
||||||
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||||
|
lvRoutings.RegisterDragEvent(UpdateDragEventHandler);
|
||||||
|
|
||||||
lvRoutings.Columns.Add("", 30);
|
lvRoutings.Columns.Add("", 30);
|
||||||
lvRoutings.Columns.Add("outboundTag", 80);
|
lvRoutings.Columns.Add("outboundTag", 80);
|
||||||
@@ -61,11 +64,22 @@ namespace v2rayN.Forms
|
|||||||
lvRoutings.Columns.Add("protocol", 80);
|
lvRoutings.Columns.Add("protocol", 80);
|
||||||
lvRoutings.Columns.Add("inboundTag", 80);
|
lvRoutings.Columns.Add("inboundTag", 80);
|
||||||
lvRoutings.Columns.Add("domain", 160);
|
lvRoutings.Columns.Add("domain", 160);
|
||||||
lvRoutings.Columns.Add("ip", 160);
|
lvRoutings.Columns.Add("ip", 160);
|
||||||
lvRoutings.Columns.Add("enable", 60);
|
lvRoutings.Columns.Add("enable", 60);
|
||||||
|
|
||||||
lvRoutings.EndUpdate();
|
lvRoutings.EndUpdate();
|
||||||
}
|
}
|
||||||
|
private void UpdateDragEventHandler(int index, int targetIndex)
|
||||||
|
{
|
||||||
|
if (index < 0 || targetIndex < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, EMove.Position, targetIndex) == 0)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void RefreshRoutingsView()
|
private void RefreshRoutingsView()
|
||||||
{
|
{
|
||||||
@@ -102,7 +116,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +156,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (lvRoutings.SelectedIndices.Count <= 0)
|
if (lvRoutings.SelectedIndices.Count <= 0)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseSelectRules"));
|
UI.Show(ResUI.PleaseSelectRules);
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +200,7 @@ namespace v2rayN.Forms
|
|||||||
int index = GetLvSelectedIndex();
|
int index = GetLvSelectedIndex();
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseSelectRules"));
|
UI.Show(ResUI.PleaseSelectRules);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, eMove) == 0)
|
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, eMove) == 0)
|
||||||
@@ -220,7 +234,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (UI.ShowYesNo(UIRes.I18N("RemoveRules")) == DialogResult.No)
|
if (UI.ShowYesNo(ResUI.RemoveRules) == DialogResult.No)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -241,7 +255,7 @@ namespace v2rayN.Forms
|
|||||||
if (lst.Count > 0)
|
if (lst.Count > 0)
|
||||||
{
|
{
|
||||||
Utils.SetClipboardData(Utils.ToJson(lst));
|
Utils.SetClipboardData(Utils.ToJson(lst));
|
||||||
//UI.Show(UIRes.I18N("OperationSuccess"));
|
//UI.Show(ResUI.OperationSuccess"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -311,7 +325,7 @@ namespace v2rayN.Forms
|
|||||||
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
||||||
{
|
{
|
||||||
RefreshRoutingsView();
|
RefreshRoutingsView();
|
||||||
UI.Show(UIRes.I18N("OperationSuccess"));
|
UI.Show(ResUI.OperationSuccess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +335,7 @@ namespace v2rayN.Forms
|
|||||||
if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0)
|
if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0)
|
||||||
{
|
{
|
||||||
RefreshRoutingsView();
|
RefreshRoutingsView();
|
||||||
UI.Show(UIRes.I18N("OperationSuccess"));
|
UI.Show(ResUI.OperationSuccess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void menuImportRulesFromUrl_Click(object sender, EventArgs e)
|
private void menuImportRulesFromUrl_Click(object sender, EventArgs e)
|
||||||
@@ -329,30 +343,32 @@ namespace v2rayN.Forms
|
|||||||
var url = txtUrl.Text.Trim();
|
var url = txtUrl.Text.Trim();
|
||||||
if (Utils.IsNullOrEmpty(url))
|
if (Utils.IsNullOrEmpty(url))
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("MsgNeedUrl"));
|
UI.Show(ResUI.MsgNeedUrl);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DownloadHandle downloadHandle = new DownloadHandle();
|
|
||||||
string clipboardData = downloadHandle.WebDownloadStringSync(url);
|
Task.Run(async () =>
|
||||||
if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0)
|
|
||||||
{
|
{
|
||||||
RefreshRoutingsView();
|
DownloadHandle downloadHandle = new DownloadHandle();
|
||||||
UI.Show(UIRes.I18N("OperationSuccess"));
|
string result = await downloadHandle.DownloadStringAsync(url, false, "");
|
||||||
}
|
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
||||||
|
{
|
||||||
|
RefreshRoutingsView();
|
||||||
|
UI.Show(ResUI.OperationSuccess);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
private int AddBatchRoutingRules(ref RoutingItem routingItem, string clipboardData)
|
private int AddBatchRoutingRules(ref RoutingItem routingItem, string clipboardData)
|
||||||
{
|
{
|
||||||
bool blReplace = false;
|
bool blReplace = false;
|
||||||
if (UI.ShowYesNo(UIRes.I18N("AddBatchRoutingRulesYesNo")) == DialogResult.No)
|
if (UI.ShowYesNo(ResUI.AddBatchRoutingRulesYesNo) == DialogResult.No)
|
||||||
{
|
{
|
||||||
blReplace = true;
|
blReplace = true;
|
||||||
}
|
}
|
||||||
return ConfigHandler.AddBatchRoutingRules(ref routingItem, clipboardData, blReplace);
|
return ConfigHandler.AddBatchRoutingRules(ref routingItem, clipboardData, blReplace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Windows.Forms;
|
|||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -61,7 +62,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,10 +145,10 @@ namespace v2rayN.Forms
|
|||||||
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
||||||
|
|
||||||
lvRoutings.Columns.Add("", 30);
|
lvRoutings.Columns.Add("", 30);
|
||||||
lvRoutings.Columns.Add(UIRes.I18N("LvAlias"), 200);
|
lvRoutings.Columns.Add(ResUI.LvAlias, 200);
|
||||||
lvRoutings.Columns.Add(UIRes.I18N("LvCount"), 60);
|
lvRoutings.Columns.Add(ResUI.LvCount, 60);
|
||||||
lvRoutings.Columns.Add(UIRes.I18N("LvUrl"), 240);
|
lvRoutings.Columns.Add(ResUI.LvUrl, 240);
|
||||||
lvRoutings.Columns.Add(UIRes.I18N("LvCustomIcon"), 240);
|
lvRoutings.Columns.Add(ResUI.LvCustomIcon, 240);
|
||||||
|
|
||||||
lvRoutings.EndUpdate();
|
lvRoutings.EndUpdate();
|
||||||
}
|
}
|
||||||
@@ -211,7 +212,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (lvRoutings.SelectedIndices.Count <= 0)
|
if (lvRoutings.SelectedIndices.Count <= 0)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseSelectRules"));
|
UI.Show(ResUI.PleaseSelectRules);
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,7 +260,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (UI.ShowYesNo(UIRes.I18N("RemoveRules")) == DialogResult.No)
|
if (UI.ShowYesNo(ResUI.RemoveRules) == DialogResult.No)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -282,7 +283,7 @@ namespace v2rayN.Forms
|
|||||||
{
|
{
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("PleaseSelectServer"));
|
UI.Show(ResUI.PleaseSelectServer);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (ConfigHandler.SetDefaultRouting(ref config, index) == 0)
|
if (ConfigHandler.SetDefaultRouting(ref config, index) == 0)
|
||||||
@@ -301,7 +302,7 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
txtBlockDomain.Text = "geosite:category-ads-all";
|
txtBlockDomain.Text = "geosite:category-ads-all";
|
||||||
|
|
||||||
UI.Show(UIRes.I18N("OperationSuccess"));
|
UI.Show(ResUI.OperationSuccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void menuImportAdvancedRules_Click(object sender, EventArgs e)
|
private void menuImportAdvancedRules_Click(object sender, EventArgs e)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -156,34 +157,34 @@ namespace v2rayN.Forms
|
|||||||
|
|
||||||
if (network.Equals(Global.DefaultNetwork))
|
if (network.Equals(Global.DefaultNetwork))
|
||||||
{
|
{
|
||||||
tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip1");
|
tipRequestHost.Text = ResUI.TransportRequestHostTip1;
|
||||||
tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip1");
|
tipHeaderType.Text = ResUI.TransportHeaderTypeTip1;
|
||||||
}
|
}
|
||||||
else if (network.Equals("kcp"))
|
else if (network.Equals("kcp"))
|
||||||
{
|
{
|
||||||
tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip2");
|
tipHeaderType.Text = ResUI.TransportHeaderTypeTip2;
|
||||||
tipPath.Text = UIRes.I18N("TransportPathTip5");
|
tipPath.Text = ResUI.TransportPathTip5;
|
||||||
}
|
}
|
||||||
else if (network.Equals("ws"))
|
else if (network.Equals("ws"))
|
||||||
{
|
{
|
||||||
tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip2");
|
tipRequestHost.Text = ResUI.TransportRequestHostTip2;
|
||||||
tipPath.Text = UIRes.I18N("TransportPathTip1");
|
tipPath.Text = ResUI.TransportPathTip1;
|
||||||
}
|
}
|
||||||
else if (network.Equals("h2"))
|
else if (network.Equals("h2"))
|
||||||
{
|
{
|
||||||
tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip3");
|
tipRequestHost.Text = ResUI.TransportRequestHostTip3;
|
||||||
tipPath.Text = UIRes.I18N("TransportPathTip2");
|
tipPath.Text = ResUI.TransportPathTip2;
|
||||||
}
|
}
|
||||||
else if (network.Equals("quic"))
|
else if (network.Equals("quic"))
|
||||||
{
|
{
|
||||||
tipRequestHost.Text = UIRes.I18N("TransportRequestHostTip4");
|
tipRequestHost.Text = ResUI.TransportRequestHostTip4;
|
||||||
tipPath.Text = UIRes.I18N("TransportPathTip3");
|
tipPath.Text = ResUI.TransportPathTip3;
|
||||||
tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip3");
|
tipHeaderType.Text = ResUI.TransportHeaderTypeTip3;
|
||||||
}
|
}
|
||||||
else if (network.Equals("grpc"))
|
else if (network.Equals("grpc"))
|
||||||
{
|
{
|
||||||
tipPath.Text = UIRes.I18N("TransportPathTip4");
|
tipPath.Text = ResUI.TransportPathTip4;
|
||||||
tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip4");
|
tipHeaderType.Text = ResUI.TransportHeaderTypeTip4;
|
||||||
labHeaderType.Visible = false;
|
labHeaderType.Visible = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Handler;
|
using v2rayN.Handler;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
{
|
{
|
||||||
@@ -74,7 +75,7 @@ namespace v2rayN.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ namespace v2rayN
|
|||||||
public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/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 xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
|
||||||
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
|
||||||
|
public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases";
|
||||||
|
public const string clashMetaCoreUrl = "https://github.com/MetaCubeX/Clash.Meta/releases";
|
||||||
|
public const string hysteriaCoreUrl = "https://github.com/HyNetwork/hysteria/releases";
|
||||||
|
public const string naiveproxyCoreUrl = "https://github.com/klzgrad/naiveproxy/releases";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -60,9 +66,10 @@ namespace v2rayN
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
||||||
|
|
||||||
|
|
||||||
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
||||||
|
|
||||||
|
public const string v2raySampleInbound = "v2rayN.Sample.SampleInbound.txt";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 默认加密方式
|
/// 默认加密方式
|
||||||
@@ -107,6 +114,8 @@ namespace v2rayN
|
|||||||
|
|
||||||
public const string InboundSocks = "socks";
|
public const string InboundSocks = "socks";
|
||||||
public const string InboundHttp = "http";
|
public const string InboundHttp = "http";
|
||||||
|
public const string InboundSocks2 = "socks2";
|
||||||
|
public const string InboundHttp2 = "http2";
|
||||||
public const string Loopback = "127.0.0.1";
|
public const string Loopback = "127.0.0.1";
|
||||||
public const string InboundAPITagName = "api";
|
public const string InboundAPITagName = "api";
|
||||||
public const string InboundAPIProtocal = "dokodemo-door";
|
public const string InboundAPIProtocal = "dokodemo-door";
|
||||||
@@ -190,6 +199,13 @@ namespace v2rayN
|
|||||||
public const string StatisticLogOverall = "StatisticLogOverall.json";
|
public const string StatisticLogOverall = "StatisticLogOverall.json";
|
||||||
|
|
||||||
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
|
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
|
||||||
|
public static readonly List<string> IEProxyProtocols = new List<string> {
|
||||||
|
"{ip}:{http_port}",
|
||||||
|
"socks={ip}:{socks_port}",
|
||||||
|
"http={ip}:{http_port};https={ip}:{http_port};ftp={ip}:{http_port};socks={ip}:{socks_port}",
|
||||||
|
"http=http://{ip}:{http_port};https=http://{ip}:{http_port}",
|
||||||
|
""
|
||||||
|
};
|
||||||
|
|
||||||
public const string RoutingRuleComma = "<COMMA>";
|
public const string RoutingRuleComma = "<COMMA>";
|
||||||
|
|
||||||
@@ -199,8 +215,7 @@ namespace v2rayN
|
|||||||
public static readonly List<string> xtlsFlows = new List<string> { "", "xtls-rprx-origin", "xtls-rprx-origin-udp443", "xtls-rprx-direct", "xtls-rprx-direct-udp443" };
|
public static readonly List<string> xtlsFlows = new List<string> { "", "xtls-rprx-origin", "xtls-rprx-origin-udp443", "xtls-rprx-direct", "xtls-rprx-direct-udp443" };
|
||||||
public static readonly List<string> networks = new List<string> { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
public static readonly List<string> networks = new List<string> { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
||||||
public static readonly List<string> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
public static readonly List<string> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
||||||
public static readonly List<string> coreTypes = new List<string> { "v2fly_core", "Xray_core" };
|
public static readonly List<string> coreTypes = new List<string> { "v2fly", "Xray" };
|
||||||
|
|
||||||
public const string GrpcgunMode = "gun";
|
public const string GrpcgunMode = "gun";
|
||||||
public const string GrpcmultiMode = "multi";
|
public const string GrpcmultiMode = "multi";
|
||||||
|
|
||||||
@@ -216,31 +231,6 @@ namespace v2rayN
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 是否开启全局代理(http)
|
|
||||||
/// </summary>
|
|
||||||
public static bool sysAgent
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// socks端口
|
|
||||||
/// </summary>
|
|
||||||
public static int socksPort
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// http端口
|
|
||||||
/// </summary>
|
|
||||||
public static int httpPort
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using v2rayN.Mode;
|
|||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using v2rayN.Tool;
|
using v2rayN.Tool;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -15,6 +16,7 @@ namespace v2rayN.Handler
|
|||||||
class ConfigHandler
|
class ConfigHandler
|
||||||
{
|
{
|
||||||
private static string configRes = Global.ConfigFileName;
|
private static string configRes = Global.ConfigFileName;
|
||||||
|
private static readonly object objLock = new object();
|
||||||
|
|
||||||
#region ConfigHandler
|
#region ConfigHandler
|
||||||
|
|
||||||
@@ -184,6 +186,52 @@ namespace v2rayN.Handler
|
|||||||
LazyConfig.Instance.SetConfig(ref config);
|
LazyConfig.Instance.SetConfig(ref config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 保参数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int SaveConfig(ref Config config, bool reload = true)
|
||||||
|
{
|
||||||
|
Global.reloadV2ray = reload;
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 存储文件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
private static void ToJsonFile(Config config)
|
||||||
|
{
|
||||||
|
lock (objLock)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
//save temp file
|
||||||
|
var resPath = Utils.GetPath(configRes);
|
||||||
|
var tempPath = $"{resPath}_temp";
|
||||||
|
if (Utils.ToJsonFile(config, tempPath) != 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(resPath))
|
||||||
|
{
|
||||||
|
File.Delete(resPath);
|
||||||
|
}
|
||||||
|
//rename
|
||||||
|
File.Move(tempPath, resPath);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("ToJsonFile", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -197,7 +245,7 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
public static int AddServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
||||||
{
|
{
|
||||||
vmessItem.configType = (int)EConfigType.Vmess;
|
vmessItem.configType = EConfigType.Vmess;
|
||||||
|
|
||||||
vmessItem.address = vmessItem.address.TrimEx();
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
vmessItem.id = vmessItem.id.TrimEx();
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
@@ -235,7 +283,7 @@ namespace v2rayN.Handler
|
|||||||
var index = config.FindIndexId(item.indexId);
|
var index = config.FindIndexId(item.indexId);
|
||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
{
|
{
|
||||||
config.vmess.RemoveAt(index);
|
RemoveVmessItem(config, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,35 +298,27 @@ namespace v2rayN.Handler
|
|||||||
/// <param name="config"></param>
|
/// <param name="config"></param>
|
||||||
/// <param name="index"></param>
|
/// <param name="index"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int CopyServer(ref Config config, VmessItem item)
|
public static int CopyServer(ref Config config, List<VmessItem> indexs)
|
||||||
{
|
{
|
||||||
if (item == null)
|
foreach (var item in indexs)
|
||||||
{
|
{
|
||||||
return -1;
|
VmessItem vmessItem = Utils.DeepCopy(item);
|
||||||
|
vmessItem.indexId = string.Empty;
|
||||||
|
vmessItem.remarks = string.Format("{0}-clone", item.remarks);
|
||||||
|
|
||||||
|
if (vmessItem.configType == EConfigType.Custom)
|
||||||
|
{
|
||||||
|
vmessItem.address = Utils.GetConfigPath(vmessItem.address);
|
||||||
|
if (AddCustomServer(ref config, vmessItem, false) == 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddServerCommon(ref config, vmessItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VmessItem vmessItem = new VmessItem
|
|
||||||
{
|
|
||||||
configVersion = item.configVersion,
|
|
||||||
address = item.address,
|
|
||||||
port = item.port,
|
|
||||||
id = item.id,
|
|
||||||
alterId = item.alterId,
|
|
||||||
security = item.security,
|
|
||||||
network = item.network,
|
|
||||||
remarks = string.Format("{0}-clone", item.remarks),
|
|
||||||
headerType = item.headerType,
|
|
||||||
requestHost = item.requestHost,
|
|
||||||
path = item.path,
|
|
||||||
streamSecurity = item.streamSecurity,
|
|
||||||
allowInsecure = item.allowInsecure,
|
|
||||||
configType = item.configType,
|
|
||||||
flow = item.flow,
|
|
||||||
sni = item.sni
|
|
||||||
};
|
|
||||||
|
|
||||||
AddServerCommon(ref config, vmessItem);
|
|
||||||
|
|
||||||
ToJsonFile(config);
|
ToJsonFile(config);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -341,29 +381,6 @@ namespace v2rayN.Handler
|
|||||||
return config.vmess[index];
|
return config.vmess[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static int SaveConfig(ref Config config, bool reload = true)
|
|
||||||
{
|
|
||||||
Global.reloadV2ray = reload;
|
|
||||||
|
|
||||||
ToJsonFile(config);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 存储文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
private static void ToJsonFile(Config config)
|
|
||||||
{
|
|
||||||
Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 移动服务器
|
/// 移动服务器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -372,7 +389,7 @@ namespace v2rayN.Handler
|
|||||||
/// <param name="index"></param>
|
/// <param name="index"></param>
|
||||||
/// <param name="eMove"></param>
|
/// <param name="eMove"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int MoveServer(ref Config config, ref List<VmessItem> lstVmess, int index, EMove eMove)
|
public static int MoveServer(ref Config config, ref List<VmessItem> lstVmess, int index, EMove eMove, int pos = -1)
|
||||||
{
|
{
|
||||||
int count = lstVmess.Count;
|
int count = lstVmess.Count;
|
||||||
if (index < 0 || index > lstVmess.Count - 1)
|
if (index < 0 || index > lstVmess.Count - 1)
|
||||||
@@ -428,6 +445,9 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EMove.Position:
|
||||||
|
lstVmess[index].sort = pos * 10 + 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ToJsonFile(config);
|
ToJsonFile(config);
|
||||||
@@ -441,15 +461,24 @@ namespace v2rayN.Handler
|
|||||||
/// <param name="config"></param>
|
/// <param name="config"></param>
|
||||||
/// <param name="vmessItem"></param>
|
/// <param name="vmessItem"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddCustomServer(ref Config config, VmessItem vmessItem)
|
public static int AddCustomServer(ref Config config, VmessItem vmessItem, bool blDelete)
|
||||||
{
|
{
|
||||||
var fileName = vmessItem.address;
|
var fileName = vmessItem.address;
|
||||||
string newFileName = string.Format("{0}.json", Utils.GetGUID());
|
if (!File.Exists(fileName))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
var ext = Path.GetExtension(fileName);
|
||||||
|
string newFileName = string.Format("{0}{1}", Utils.GetGUID(), ext);
|
||||||
//newFileName = Path.Combine(Utils.GetTempPath(), newFileName);
|
//newFileName = Path.Combine(Utils.GetTempPath(), newFileName);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File.Copy(fileName, Path.Combine(Utils.GetTempPath(), newFileName));
|
File.Copy(fileName, Utils.GetConfigPath(newFileName));
|
||||||
|
if (blDelete)
|
||||||
|
{
|
||||||
|
File.Delete(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -457,7 +486,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.address = newFileName;
|
vmessItem.address = newFileName;
|
||||||
vmessItem.configType = (int)EConfigType.Custom;
|
vmessItem.configType = EConfigType.Custom;
|
||||||
if (Utils.IsNullOrEmpty(vmessItem.remarks))
|
if (Utils.IsNullOrEmpty(vmessItem.remarks))
|
||||||
{
|
{
|
||||||
vmessItem.remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString());
|
vmessItem.remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString());
|
||||||
@@ -492,13 +521,13 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddShadowsocksServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
public static int AddShadowsocksServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
||||||
{
|
{
|
||||||
vmessItem.configType = (int)EConfigType.Shadowsocks;
|
vmessItem.configType = EConfigType.Shadowsocks;
|
||||||
|
|
||||||
vmessItem.address = vmessItem.address.TrimEx();
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
vmessItem.id = vmessItem.id.TrimEx();
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
vmessItem.security = vmessItem.security.TrimEx();
|
vmessItem.security = vmessItem.security.TrimEx();
|
||||||
|
|
||||||
if (!config.GetShadowsocksSecuritys().Contains(vmessItem.security))
|
if (!LazyConfig.Instance.GetShadowsocksSecuritys().Contains(vmessItem.security))
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -521,7 +550,7 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddSocksServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
public static int AddSocksServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
||||||
{
|
{
|
||||||
vmessItem.configType = (int)EConfigType.Socks;
|
vmessItem.configType = EConfigType.Socks;
|
||||||
|
|
||||||
vmessItem.address = vmessItem.address.TrimEx();
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
|
|
||||||
@@ -535,7 +564,6 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加服务器或编辑
|
/// 添加服务器或编辑
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -544,7 +572,7 @@ namespace v2rayN.Handler
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int AddTrojanServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
public static int AddTrojanServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
||||||
{
|
{
|
||||||
vmessItem.configType = (int)EConfigType.Trojan;
|
vmessItem.configType = EConfigType.Trojan;
|
||||||
|
|
||||||
vmessItem.address = vmessItem.address.TrimEx();
|
vmessItem.address = vmessItem.address.TrimEx();
|
||||||
vmessItem.id = vmessItem.id.TrimEx();
|
vmessItem.id = vmessItem.id.TrimEx();
|
||||||
@@ -581,7 +609,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (vmessItem.configType == (int)EConfigType.Vmess)
|
if (vmessItem.configType == EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
string path = "";
|
string path = "";
|
||||||
string host = "";
|
string host = "";
|
||||||
@@ -632,6 +660,184 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int SortServers(ref Config config, ref List<VmessItem> lstVmess, EServerColName name, bool asc)
|
||||||
|
{
|
||||||
|
if (lstVmess.Count <= 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
var propertyName = string.Empty;
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case EServerColName.configType:
|
||||||
|
case EServerColName.remarks:
|
||||||
|
case EServerColName.address:
|
||||||
|
case EServerColName.port:
|
||||||
|
case EServerColName.security:
|
||||||
|
case EServerColName.network:
|
||||||
|
case EServerColName.streamSecurity:
|
||||||
|
case EServerColName.testResult:
|
||||||
|
propertyName = name.ToString();
|
||||||
|
break;
|
||||||
|
case EServerColName.subRemarks:
|
||||||
|
propertyName = "subid";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = lstVmess.AsQueryable();
|
||||||
|
|
||||||
|
if (asc)
|
||||||
|
{
|
||||||
|
lstVmess = items.OrderBy(propertyName).ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lstVmess = items.OrderByDescending(propertyName).ToList();
|
||||||
|
}
|
||||||
|
for (int i = 0; i < lstVmess.Count; i++)
|
||||||
|
{
|
||||||
|
lstVmess[i].sort = (i + 1) * 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加服务器或编辑
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="config"></param>
|
||||||
|
/// <param name="vmessItem"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int AddVlessServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
||||||
|
{
|
||||||
|
vmessItem.configType = 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();
|
||||||
|
|
||||||
|
AddServerCommon(ref config, vmessItem);
|
||||||
|
|
||||||
|
if (toFile)
|
||||||
|
{
|
||||||
|
ToJsonFile(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int DedupServerList(ref Config config, ref List<VmessItem> lstVmess)
|
||||||
|
{
|
||||||
|
List<VmessItem> source = lstVmess;
|
||||||
|
bool keepOlder = config.keepOlderDedupl;
|
||||||
|
|
||||||
|
List<VmessItem> list = new List<VmessItem>();
|
||||||
|
if (!keepOlder) source.Reverse(); // Remove the early items first
|
||||||
|
|
||||||
|
foreach (VmessItem item in source)
|
||||||
|
{
|
||||||
|
if (!list.Exists(i => CompareVmessItem(i, item, false)))
|
||||||
|
{
|
||||||
|
list.Add(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var index = config.FindIndexId(item.indexId);
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
RemoveVmessItem(config, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if (!keepOlder) list.Reverse();
|
||||||
|
//config.vmess = list;
|
||||||
|
|
||||||
|
return list.Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int AddServerCommon(ref Config config, VmessItem vmessItem)
|
||||||
|
{
|
||||||
|
vmessItem.configVersion = 2;
|
||||||
|
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
||||||
|
{
|
||||||
|
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(vmessItem.network) && !Global.networks.Contains(vmessItem.network))
|
||||||
|
{
|
||||||
|
vmessItem.network = Global.DefaultNetwork;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Utils.IsNullOrEmpty(vmessItem.indexId))
|
||||||
|
{
|
||||||
|
vmessItem.indexId = Utils.GetGUID(false);
|
||||||
|
}
|
||||||
|
else if (vmessItem.indexId == config.indexId)
|
||||||
|
{
|
||||||
|
Global.reloadV2ray = true;
|
||||||
|
}
|
||||||
|
if (!config.vmess.Exists(it => it.indexId == vmessItem.indexId))
|
||||||
|
{
|
||||||
|
var maxSort = config.vmess.Any() ? config.vmess.Max(t => t.sort) : 0;
|
||||||
|
vmessItem.sort = maxSort++;
|
||||||
|
|
||||||
|
config.vmess.Add(vmessItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool CompareVmessItem(VmessItem o, VmessItem n, bool remarks)
|
||||||
|
{
|
||||||
|
if (o == null || n == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return o.configVersion == n.configVersion
|
||||||
|
&& o.configType == n.configType
|
||||||
|
&& o.address == n.address
|
||||||
|
&& o.port == n.port
|
||||||
|
&& o.id == n.id
|
||||||
|
&& o.alterId == n.alterId
|
||||||
|
&& o.security == n.security
|
||||||
|
&& o.network == n.network
|
||||||
|
&& o.headerType == n.headerType
|
||||||
|
&& o.requestHost == n.requestHost
|
||||||
|
&& o.path == n.path
|
||||||
|
&& o.streamSecurity == n.streamSecurity
|
||||||
|
&& o.flow == n.flow
|
||||||
|
&& (remarks ? o.remarks == n.remarks : true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int RemoveVmessItem(Config config, int index)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (config.vmess[index].configType == EConfigType.Custom)
|
||||||
|
{
|
||||||
|
File.Delete(Utils.GetConfigPath(config.vmess[index].address));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("RemoveVmessItem", ex);
|
||||||
|
}
|
||||||
|
config.vmess.RemoveAt(index);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Batch add servers
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 批量添加服务器
|
/// 批量添加服务器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -639,7 +845,7 @@ namespace v2rayN.Handler
|
|||||||
/// <param name="clipboardData"></param>
|
/// <param name="clipboardData"></param>
|
||||||
/// <param name="subid"></param>
|
/// <param name="subid"></param>
|
||||||
/// <returns>成功导入的数量</returns>
|
/// <returns>成功导入的数量</returns>
|
||||||
public static int AddBatchServers(ref Config config, string clipboardData, string subid, string groupId)
|
private static int AddBatchServers(ref Config config, string clipboardData, string subid, List<VmessItem> lstOriSub, string groupId)
|
||||||
{
|
{
|
||||||
if (Utils.IsNullOrEmpty(clipboardData))
|
if (Utils.IsNullOrEmpty(clipboardData))
|
||||||
{
|
{
|
||||||
@@ -647,10 +853,8 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
|
|
||||||
//copy sub items
|
//copy sub items
|
||||||
List<VmessItem> lstOriSub = null;
|
|
||||||
if (!Utils.IsNullOrEmpty(subid))
|
if (!Utils.IsNullOrEmpty(subid))
|
||||||
{
|
{
|
||||||
lstOriSub = config.vmess.Where(it => it.subid == subid).ToList();
|
|
||||||
RemoveServerViaSubid(ref config, subid);
|
RemoveServerViaSubid(ref config, subid);
|
||||||
}
|
}
|
||||||
//if (clipboardData.IndexOf("vmess") >= 0 && clipboardData.IndexOf("vmess") == clipboardData.LastIndexOf("vmess"))
|
//if (clipboardData.IndexOf("vmess") >= 0 && clipboardData.IndexOf("vmess") == clipboardData.LastIndexOf("vmess"))
|
||||||
@@ -692,35 +896,35 @@ namespace v2rayN.Handler
|
|||||||
//groupId
|
//groupId
|
||||||
vmessItem.groupId = groupId;
|
vmessItem.groupId = groupId;
|
||||||
|
|
||||||
if (vmessItem.configType == (int)EConfigType.Vmess)
|
if (vmessItem.configType == EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
if (AddServer(ref config, vmessItem, false) == 0)
|
if (AddServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
countServers++;
|
countServers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (vmessItem.configType == (int)EConfigType.Shadowsocks)
|
else if (vmessItem.configType == EConfigType.Shadowsocks)
|
||||||
{
|
{
|
||||||
if (AddShadowsocksServer(ref config, vmessItem, false) == 0)
|
if (AddShadowsocksServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
countServers++;
|
countServers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (vmessItem.configType == (int)EConfigType.Socks)
|
else if (vmessItem.configType == EConfigType.Socks)
|
||||||
{
|
{
|
||||||
if (AddSocksServer(ref config, vmessItem, false) == 0)
|
if (AddSocksServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
countServers++;
|
countServers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (vmessItem.configType == (int)EConfigType.Trojan)
|
else if (vmessItem.configType == EConfigType.Trojan)
|
||||||
{
|
{
|
||||||
if (AddTrojanServer(ref config, vmessItem, false) == 0)
|
if (AddTrojanServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
countServers++;
|
countServers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (vmessItem.configType == (int)EConfigType.VLESS)
|
else if (vmessItem.configType == EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
if (AddVlessServer(ref config, vmessItem, false) == 0)
|
if (AddVlessServer(ref config, vmessItem, false) == 0)
|
||||||
{
|
{
|
||||||
@@ -733,6 +937,186 @@ namespace v2rayN.Handler
|
|||||||
return countServers;
|
return countServers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int AddBatchServers4Custom(ref Config config, string clipboardData, string subid, List<VmessItem> lstOriSub, string groupId)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(clipboardData))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
VmessItem vmessItem = new VmessItem();
|
||||||
|
//Is v2ray configuration
|
||||||
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(clipboardData);
|
||||||
|
if (v2rayConfig != null
|
||||||
|
&& v2rayConfig.inbounds != null
|
||||||
|
&& v2rayConfig.inbounds.Count > 0
|
||||||
|
&& v2rayConfig.outbounds != null
|
||||||
|
&& v2rayConfig.outbounds.Count > 0)
|
||||||
|
{
|
||||||
|
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||||
|
File.WriteAllText(fileName, clipboardData);
|
||||||
|
|
||||||
|
vmessItem.coreType = ECoreType.Xray;
|
||||||
|
vmessItem.address = fileName;
|
||||||
|
vmessItem.remarks = "v2ray_custom";
|
||||||
|
}
|
||||||
|
//Is Clash configuration
|
||||||
|
else if (clipboardData.IndexOf("port") >= 0
|
||||||
|
&& clipboardData.IndexOf("socks-port") >= 0
|
||||||
|
&& clipboardData.IndexOf("proxies") >= 0)
|
||||||
|
{
|
||||||
|
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.yaml");
|
||||||
|
File.WriteAllText(fileName, clipboardData);
|
||||||
|
|
||||||
|
vmessItem.coreType = ECoreType.clash;
|
||||||
|
vmessItem.address = fileName;
|
||||||
|
vmessItem.remarks = "clash_custom";
|
||||||
|
}
|
||||||
|
//Is hysteria configuration
|
||||||
|
else if (clipboardData.IndexOf("server") >= 0
|
||||||
|
&& clipboardData.IndexOf("up") >= 0
|
||||||
|
&& clipboardData.IndexOf("down") >= 0
|
||||||
|
&& clipboardData.IndexOf("listen") >= 0)
|
||||||
|
{
|
||||||
|
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||||
|
File.WriteAllText(fileName, clipboardData);
|
||||||
|
|
||||||
|
vmessItem.coreType = ECoreType.hysteria;
|
||||||
|
vmessItem.address = fileName;
|
||||||
|
vmessItem.remarks = "hysteria_custom";
|
||||||
|
}
|
||||||
|
//Is naiveproxy configuration
|
||||||
|
else if (clipboardData.IndexOf("listen") >= 0
|
||||||
|
&& clipboardData.IndexOf("proxy") >= 0)
|
||||||
|
{
|
||||||
|
var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.json");
|
||||||
|
File.WriteAllText(fileName, clipboardData);
|
||||||
|
|
||||||
|
vmessItem.coreType = ECoreType.naiveproxy;
|
||||||
|
vmessItem.address = fileName;
|
||||||
|
vmessItem.remarks = "naiveproxy_custom";
|
||||||
|
}
|
||||||
|
//Is Other configuration
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
//var fileName = Utils.GetTempPath($"{Utils.GetGUID(false)}.txt");
|
||||||
|
//File.WriteAllText(fileName, clipboardData);
|
||||||
|
|
||||||
|
//vmessItem.address = fileName;
|
||||||
|
//vmessItem.remarks = "other_custom";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Utils.IsNullOrEmpty(subid))
|
||||||
|
{
|
||||||
|
RemoveServerViaSubid(ref config, subid);
|
||||||
|
}
|
||||||
|
if (lstOriSub != null && lstOriSub.Count == 1)
|
||||||
|
{
|
||||||
|
vmessItem.indexId = lstOriSub[0].indexId;
|
||||||
|
}
|
||||||
|
vmessItem.subid = subid;
|
||||||
|
vmessItem.groupId = groupId;
|
||||||
|
|
||||||
|
if (Utils.IsNullOrEmpty(vmessItem.address))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AddCustomServer(ref config, vmessItem, true) == 0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int AddBatchServers4SsSIP008(ref Config config, string clipboardData, string subid, List<VmessItem> lstOriSub, string groupId)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(clipboardData))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Utils.IsNullOrEmpty(subid))
|
||||||
|
{
|
||||||
|
RemoveServerViaSubid(ref config, subid);
|
||||||
|
}
|
||||||
|
|
||||||
|
//SsSIP008
|
||||||
|
var lstSsServer = Utils.FromJson<List<SsServer>>(clipboardData);
|
||||||
|
if (lstSsServer == null || lstSsServer.Count <= 0)
|
||||||
|
{
|
||||||
|
var ssSIP008 = Utils.FromJson<SsSIP008>(clipboardData);
|
||||||
|
if (ssSIP008 != null && ssSIP008.servers != null && ssSIP008.servers.Count > 0)
|
||||||
|
{
|
||||||
|
lstSsServer = ssSIP008.servers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lstSsServer != null && lstSsServer.Count > 0)
|
||||||
|
{
|
||||||
|
int counter = 0;
|
||||||
|
foreach (var it in lstSsServer)
|
||||||
|
{
|
||||||
|
var ssItem = new VmessItem()
|
||||||
|
{
|
||||||
|
subid = subid,
|
||||||
|
groupId = groupId,
|
||||||
|
remarks = it.remarks,
|
||||||
|
security = it.method,
|
||||||
|
id = it.password,
|
||||||
|
address = it.server,
|
||||||
|
port = Utils.ToInt(it.server_port)
|
||||||
|
};
|
||||||
|
if (AddShadowsocksServer(ref config, ssItem, false) == 0)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ToJsonFile(config);
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int AddBatchServers(ref Config config, string clipboardData, string subid, string groupId)
|
||||||
|
{
|
||||||
|
List<VmessItem> lstOriSub = null;
|
||||||
|
if (!Utils.IsNullOrEmpty(subid))
|
||||||
|
{
|
||||||
|
lstOriSub = config.vmess.Where(it => it.subid == subid).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
int counter = AddBatchServers(ref config, clipboardData, subid, lstOriSub, groupId);
|
||||||
|
if (counter < 1)
|
||||||
|
{
|
||||||
|
counter = AddBatchServers(ref config, Utils.Base64Decode(clipboardData), subid, lstOriSub, groupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (counter < 1)
|
||||||
|
{
|
||||||
|
counter = AddBatchServers4SsSIP008(ref config, clipboardData, subid, lstOriSub, groupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
//maybe other sub
|
||||||
|
if (counter < 1)
|
||||||
|
{
|
||||||
|
counter = AddBatchServers4Custom(ref config, clipboardData, subid, lstOriSub, groupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Sub & Group
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// add sub
|
/// add sub
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -798,7 +1182,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (config.vmess[k].subid.Equals(subid))
|
if (config.vmess[k].subid.Equals(subid))
|
||||||
{
|
{
|
||||||
config.vmess.RemoveAt(k);
|
RemoveVmessItem(config, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -806,163 +1190,6 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int SortServers(ref Config config, ref List<VmessItem> lstVmess, EServerColName name, bool asc)
|
|
||||||
{
|
|
||||||
if (lstVmess.Count <= 0)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
var propertyName = string.Empty;
|
|
||||||
switch (name)
|
|
||||||
{
|
|
||||||
case EServerColName.configType:
|
|
||||||
case EServerColName.remarks:
|
|
||||||
case EServerColName.address:
|
|
||||||
case EServerColName.port:
|
|
||||||
case EServerColName.security:
|
|
||||||
case EServerColName.network:
|
|
||||||
case EServerColName.streamSecurity:
|
|
||||||
case EServerColName.testResult:
|
|
||||||
propertyName = name.ToString();
|
|
||||||
break;
|
|
||||||
case EServerColName.subRemarks:
|
|
||||||
propertyName = "subid";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var items = lstVmess.AsQueryable();
|
|
||||||
|
|
||||||
if (asc)
|
|
||||||
{
|
|
||||||
lstVmess = items.OrderBy(propertyName).ToList();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lstVmess = items.OrderByDescending(propertyName).ToList();
|
|
||||||
}
|
|
||||||
for (int i = 0; i < lstVmess.Count; i++)
|
|
||||||
{
|
|
||||||
lstVmess[i].sort = (i + 1) * 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
ToJsonFile(config);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 添加服务器或编辑
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <param name="vmessItem"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static int AddVlessServer(ref Config config, VmessItem vmessItem, bool toFile = true)
|
|
||||||
{
|
|
||||||
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();
|
|
||||||
|
|
||||||
AddServerCommon(ref config, vmessItem);
|
|
||||||
|
|
||||||
if (toFile)
|
|
||||||
{
|
|
||||||
ToJsonFile(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int DedupServerList(ref Config config, ref List<VmessItem> lstVmess)
|
|
||||||
{
|
|
||||||
List<VmessItem> source = lstVmess;
|
|
||||||
bool keepOlder = config.keepOlderDedupl;
|
|
||||||
|
|
||||||
List<VmessItem> list = new List<VmessItem>();
|
|
||||||
if (!keepOlder) source.Reverse(); // Remove the early items first
|
|
||||||
|
|
||||||
foreach (VmessItem item in source)
|
|
||||||
{
|
|
||||||
if (!list.Exists(i => CompareVmessItem(i, item, false)))
|
|
||||||
{
|
|
||||||
list.Add(item);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var index = config.FindIndexId(item.indexId);
|
|
||||||
if (index >= 0)
|
|
||||||
{
|
|
||||||
config.vmess.RemoveAt(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//if (!keepOlder) list.Reverse();
|
|
||||||
//config.vmess = list;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int AddServerCommon(ref Config config, VmessItem vmessItem)
|
|
||||||
{
|
|
||||||
vmessItem.configVersion = 2;
|
|
||||||
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
|
||||||
{
|
|
||||||
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
|
||||||
}
|
|
||||||
if (!Utils.IsNullOrEmpty(vmessItem.network) && !Global.networks.Contains(vmessItem.network))
|
|
||||||
{
|
|
||||||
vmessItem.network = Global.DefaultNetwork;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(vmessItem.indexId))
|
|
||||||
{
|
|
||||||
vmessItem.indexId = Utils.GetGUID(false);
|
|
||||||
}
|
|
||||||
if (!config.vmess.Exists(it => it.indexId == vmessItem.indexId))
|
|
||||||
{
|
|
||||||
var maxSort = config.vmess.Any() ? config.vmess.Max(t => t.sort) : 0;
|
|
||||||
vmessItem.sort = maxSort++;
|
|
||||||
|
|
||||||
config.vmess.Add(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
//if (config.vmess.Count == 1)
|
|
||||||
//{
|
|
||||||
// config.indexId = config.vmess[0].indexId;
|
|
||||||
// Global.reloadV2ray = true;
|
|
||||||
//}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool CompareVmessItem(VmessItem o, VmessItem n, bool remarks)
|
|
||||||
{
|
|
||||||
if (o == null || n == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return o.configVersion == n.configVersion
|
|
||||||
&& o.configType == n.configType
|
|
||||||
&& o.address == n.address
|
|
||||||
&& o.port == n.port
|
|
||||||
&& o.id == n.id
|
|
||||||
&& o.alterId == n.alterId
|
|
||||||
&& o.security == n.security
|
|
||||||
&& o.network == n.network
|
|
||||||
&& o.headerType == n.headerType
|
|
||||||
&& o.requestHost == n.requestHost
|
|
||||||
&& o.path == n.path
|
|
||||||
&& o.streamSecurity == n.streamSecurity
|
|
||||||
&& o.flow == n.flow
|
|
||||||
&& (remarks ? o.remarks == n.remarks : true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// save Group
|
/// save Group
|
||||||
@@ -1014,6 +1241,18 @@ namespace v2rayN.Handler
|
|||||||
ToJsonFile(config);
|
ToJsonFile(config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int MoveServerToGroup(Config config, List<VmessItem> indexs, string groupId)
|
||||||
|
{
|
||||||
|
foreach (var item in indexs)
|
||||||
|
{
|
||||||
|
item.groupId = groupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region UI
|
#region UI
|
||||||
@@ -1032,6 +1271,8 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.uiItem.mainLvColWidth.Add(name, width);
|
config.uiItem.mainLvColWidth.Add(name, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ToJsonFile(config);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
public static int GetformMainLvColWidth(ref Config config, string name, int width)
|
public static int GetformMainLvColWidth(ref Config config, string name, int width)
|
||||||
@@ -1077,6 +1318,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
config.routingIndex = 0;
|
config.routingIndex = 0;
|
||||||
}
|
}
|
||||||
|
if (config.trayMenuServersLimit <= 0)
|
||||||
|
{
|
||||||
|
config.trayMenuServersLimit = 30;
|
||||||
|
}
|
||||||
|
|
||||||
Global.reloadV2ray = true;
|
Global.reloadV2ray = true;
|
||||||
|
|
||||||
@@ -1146,7 +1391,7 @@ namespace v2rayN.Handler
|
|||||||
/// <param name="index"></param>
|
/// <param name="index"></param>
|
||||||
/// <param name="eMove"></param>
|
/// <param name="eMove"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int MoveRoutingRule(ref RoutingItem routingItem, int index, EMove eMove)
|
public static int MoveRoutingRule(ref RoutingItem routingItem, int index, EMove eMove, int pos = -1)
|
||||||
{
|
{
|
||||||
int count = routingItem.rules.Count;
|
int count = routingItem.rules.Count;
|
||||||
if (index < 0 || index > routingItem.rules.Count - 1)
|
if (index < 0 || index > routingItem.rules.Count - 1)
|
||||||
@@ -1204,6 +1449,14 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EMove.Position:
|
||||||
|
{
|
||||||
|
var removeItem = routingItem.rules[index];
|
||||||
|
var item = Utils.DeepCopy(routingItem.rules[index]);
|
||||||
|
routingItem.rules.Insert(pos, item);
|
||||||
|
routingItem.rules.Remove(removeItem);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -27,97 +34,71 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int progressPercentage = -1;
|
public async Task<int> DownloadDataAsync(string url, WebProxy webProxy, int downloadTimeout)
|
||||||
private long totalBytesToReceive = 0;
|
|
||||||
private DateTime totalDatetime = new DateTime();
|
|
||||||
private int DownloadTimeout = -1;
|
|
||||||
|
|
||||||
public WebClientEx DownloadFileAsync(string url, WebProxy webProxy, int downloadTimeout)
|
|
||||||
{
|
{
|
||||||
WebClientEx ws = new WebClientEx();
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, UIRes.I18N("Downloading")));
|
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Speedtesting));
|
||||||
|
|
||||||
progressPercentage = -1;
|
var client = new HttpClient(new WebRequestHandler()
|
||||||
totalBytesToReceive = 0;
|
|
||||||
|
|
||||||
//WebClientEx ws = new WebClientEx();
|
|
||||||
DownloadTimeout = downloadTimeout;
|
|
||||||
if (webProxy != null)
|
|
||||||
{
|
{
|
||||||
ws.Proxy = webProxy;// new WebProxy(Global.Loopback, Global.httpPort);
|
Proxy = webProxy
|
||||||
}
|
});
|
||||||
|
|
||||||
ws.DownloadFileCompleted += ws_DownloadFileCompleted;
|
var progress = new Progress<string>();
|
||||||
ws.DownloadProgressChanged += ws_DownloadProgressChanged;
|
progress.ProgressChanged += (sender, value) =>
|
||||||
ws.DownloadFileAsync(new Uri(url), Utils.GetPath(Utils.GetDownloadFileName(url)));
|
{
|
||||||
|
if (UpdateCompleted != null)
|
||||||
|
{
|
||||||
|
string msg = string.Format("{0} M/s", value).PadLeft(9, ' ');
|
||||||
|
UpdateCompleted(this, new ResultEventArgs(false, msg));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var cancellationToken = new CancellationTokenSource();
|
||||||
|
cancellationToken.CancelAfter(downloadTimeout * 1000);
|
||||||
|
await HttpClientHelper.GetInstance().DownloadDataAsync4Speed(client,
|
||||||
|
url,
|
||||||
|
progress,
|
||||||
|
cancellationToken.Token);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
//Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
}
|
}
|
||||||
return ws;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ws_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
|
public void DownloadFileAsync(string url, bool blProxy, int downloadTimeout)
|
||||||
{
|
|
||||||
if (UpdateCompleted != null)
|
|
||||||
{
|
|
||||||
if (totalBytesToReceive == 0)
|
|
||||||
{
|
|
||||||
totalDatetime = DateTime.Now;
|
|
||||||
totalBytesToReceive = e.BytesReceived;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
totalBytesToReceive = e.BytesReceived;
|
|
||||||
|
|
||||||
if (DownloadTimeout != -1)
|
|
||||||
{
|
|
||||||
if ((DateTime.Now - totalDatetime).TotalSeconds > DownloadTimeout)
|
|
||||||
{
|
|
||||||
((WebClientEx)sender).CancelAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (progressPercentage != e.ProgressPercentage && e.ProgressPercentage % 10 == 0)
|
|
||||||
{
|
|
||||||
progressPercentage = e.ProgressPercentage;
|
|
||||||
string msg = string.Format("...{0}%", e.ProgressPercentage);
|
|
||||||
UpdateCompleted(this, new ResultEventArgs(false, msg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void ws_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (UpdateCompleted != null)
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
{
|
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Downloading));
|
||||||
if (e.Cancelled)
|
|
||||||
{
|
|
||||||
((WebClientEx)sender).Dispose();
|
|
||||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
|
||||||
string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.0"));
|
|
||||||
UpdateCompleted(this, new ResultEventArgs(true, speed.PadLeft(8, ' ')));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e.Error == null
|
var client = new HttpClient(new WebRequestHandler()
|
||||||
|| Utils.IsNullOrEmpty(e.Error.ToString()))
|
{
|
||||||
|
Proxy = GetWebProxy(blProxy)
|
||||||
|
});
|
||||||
|
|
||||||
|
var progress = new Progress<double>();
|
||||||
|
progress.ProgressChanged += (sender, value) =>
|
||||||
|
{
|
||||||
|
if (UpdateCompleted != null)
|
||||||
{
|
{
|
||||||
((WebClientEx)sender).Dispose();
|
string msg = string.Format("...{0}%", value);
|
||||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
UpdateCompleted(this, new ResultEventArgs(value > 100 ? true : false, msg));
|
||||||
string speed = string.Format("{0} M/s", (totalBytesToReceive / ts.TotalMilliseconds / 1000).ToString("#0.0"));
|
|
||||||
UpdateCompleted(this, new ResultEventArgs(true, speed.PadLeft(8, ' ')));
|
|
||||||
}
|
}
|
||||||
else
|
};
|
||||||
{
|
|
||||||
throw e.Error;
|
var cancellationToken = new CancellationTokenSource();
|
||||||
}
|
_ = HttpClientHelper.GetInstance().DownloadFileAsync(client,
|
||||||
}
|
url,
|
||||||
|
Utils.GetPath(Utils.GetDownloadFileName(url)),
|
||||||
|
progress,
|
||||||
|
cancellationToken.Token);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -127,114 +108,143 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<string> UrlRedirectAsync(string url, bool blProxy)
|
||||||
|
{
|
||||||
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
|
WebRequestHandler webRequestHandler = new WebRequestHandler
|
||||||
|
{
|
||||||
|
AllowAutoRedirect = false,
|
||||||
|
Proxy = GetWebProxy(blProxy)
|
||||||
|
};
|
||||||
|
HttpClient client = new HttpClient(webRequestHandler);
|
||||||
|
|
||||||
|
HttpResponseMessage response = await client.GetAsync(url);
|
||||||
|
if (response.StatusCode.ToString() == "Redirect")
|
||||||
|
{
|
||||||
|
return response.Headers.Location.ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Utils.SaveLog("StatusCode error: " + url);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DownloadString
|
/// DownloadString
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="url"></param>
|
/// <param name="url"></param>
|
||||||
public void WebDownloadString(string url, WebProxy webProxy, string userAgent)
|
public async Task<string> DownloadStringAsync(string url, bool blProxy, string userAgent)
|
||||||
{
|
{
|
||||||
string source = string.Empty;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
|
var client = new HttpClient(new WebRequestHandler()
|
||||||
WebClientEx ws = new WebClientEx();
|
|
||||||
if (webProxy != null)
|
|
||||||
{
|
{
|
||||||
ws.Proxy = webProxy;
|
Proxy = GetWebProxy(blProxy)
|
||||||
}
|
});
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(userAgent))
|
if (Utils.IsNullOrEmpty(userAgent))
|
||||||
{
|
{
|
||||||
userAgent = $"{Utils.GetVersion(false)}";
|
userAgent = $"{Utils.GetVersion(false)}";
|
||||||
}
|
}
|
||||||
ws.Headers.Add("user-agent", userAgent);
|
client.DefaultRequestHeaders.UserAgent.TryParseAdd(userAgent);
|
||||||
|
|
||||||
Uri uri = new Uri(url);
|
Uri uri = new Uri(url);
|
||||||
//Authorization Header
|
//Authorization Header
|
||||||
if (!Utils.IsNullOrEmpty(uri.UserInfo))
|
if (!Utils.IsNullOrEmpty(uri.UserInfo))
|
||||||
{
|
{
|
||||||
ws.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Utils.Base64Encode(uri.UserInfo));
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Utils.Base64Encode(uri.UserInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
ws.DownloadStringCompleted += Ws_DownloadStringCompleted;
|
var cts = new CancellationTokenSource();
|
||||||
ws.DownloadStringAsync(uri);
|
cts.CancelAfter(1000 * 30);
|
||||||
|
|
||||||
|
var result = await HttpClientHelper.GetInstance().GetAsync(client, url, cts.Token);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Ws_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
|
public int RunAvailabilityCheck(WebProxy webProxy)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (e.Error == null
|
if (webProxy == null)
|
||||||
|| Utils.IsNullOrEmpty(e.Error.ToString()))
|
|
||||||
{
|
{
|
||||||
string source = e.Result;
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
UpdateCompleted?.Invoke(this, new ResultEventArgs(true, source));
|
webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
throw e.Error;
|
string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out int responseTime);
|
||||||
|
bool noError = Utils.IsNullOrEmpty(status);
|
||||||
|
return noError ? responseTime : -1;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return -1;
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string WebDownloadStringSync(string url)
|
public string GetRealPingTime(string url, WebProxy webProxy, out int responseTime)
|
||||||
{
|
{
|
||||||
string source = string.Empty;
|
string msg = string.Empty;
|
||||||
|
responseTime = -1;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
|
||||||
|
myHttpWebRequest.Timeout = 5000;
|
||||||
|
myHttpWebRequest.Proxy = webProxy;
|
||||||
|
|
||||||
WebClientEx ws = new WebClientEx();
|
Stopwatch timer = new Stopwatch();
|
||||||
|
timer.Start();
|
||||||
|
|
||||||
return ws.DownloadString(new Uri(url));
|
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
|
||||||
|
if (myHttpWebResponse.StatusCode != HttpStatusCode.OK
|
||||||
|
&& myHttpWebResponse.StatusCode != HttpStatusCode.NoContent)
|
||||||
|
{
|
||||||
|
msg = myHttpWebResponse.StatusDescription;
|
||||||
|
}
|
||||||
|
timer.Stop();
|
||||||
|
responseTime = timer.Elapsed.Milliseconds;
|
||||||
|
|
||||||
|
myHttpWebResponse.Close();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return string.Empty;
|
msg = ex.Message;
|
||||||
}
|
}
|
||||||
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WebClientEx DownloadDataAsync(string url, WebProxy webProxy, int downloadTimeout)
|
private WebProxy GetWebProxy(bool blProxy)
|
||||||
{
|
{
|
||||||
WebClientEx ws = new WebClientEx();
|
if (!blProxy)
|
||||||
try
|
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
return null;
|
||||||
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, UIRes.I18N("Downloading")));
|
|
||||||
|
|
||||||
progressPercentage = -1;
|
|
||||||
totalBytesToReceive = 0;
|
|
||||||
|
|
||||||
DownloadTimeout = downloadTimeout;
|
|
||||||
if (webProxy != null)
|
|
||||||
{
|
|
||||||
ws.Proxy = webProxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
ws.DownloadProgressChanged += ws_DownloadProgressChanged;
|
|
||||||
ws.DownloadDataCompleted += ws_DownloadFileCompleted;
|
|
||||||
ws.DownloadDataAsync(new Uri(url));
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
|
var webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
|
if (RunAvailabilityCheck(webProxy) > 0)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
return webProxy;
|
||||||
|
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
}
|
||||||
return ws;
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -7,6 +9,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
private static readonly Lazy<LazyConfig> _instance = new Lazy<LazyConfig>(() => new LazyConfig());
|
private static readonly Lazy<LazyConfig> _instance = new Lazy<LazyConfig>(() => new LazyConfig());
|
||||||
private Config _config;
|
private Config _config;
|
||||||
|
private List<CoreInfo> coreInfos;
|
||||||
|
|
||||||
public static LazyConfig Instance
|
public static LazyConfig Instance
|
||||||
{
|
{
|
||||||
@@ -20,5 +23,99 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return _config;
|
return _config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<string> GetShadowsocksSecuritys()
|
||||||
|
{
|
||||||
|
if (GetCoreType(null, EConfigType.Shadowsocks) == ECoreType.v2fly)
|
||||||
|
{
|
||||||
|
return Global.ssSecuritys;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Global.ssSecuritysInXray;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ECoreType GetCoreType(VmessItem vmessItem, EConfigType eConfigType)
|
||||||
|
{
|
||||||
|
if (vmessItem != null && vmessItem.coreType != null)
|
||||||
|
{
|
||||||
|
return (ECoreType)vmessItem.coreType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_config.coreTypeItem == null)
|
||||||
|
{
|
||||||
|
return ECoreType.Xray;
|
||||||
|
}
|
||||||
|
var item = _config.coreTypeItem.FirstOrDefault(it => it.configType == eConfigType);
|
||||||
|
if (item == null)
|
||||||
|
{
|
||||||
|
return ECoreType.Xray;
|
||||||
|
}
|
||||||
|
return item.coreType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CoreInfo GetCoreInfo(ECoreType coreType)
|
||||||
|
{
|
||||||
|
if (coreInfos == null)
|
||||||
|
{
|
||||||
|
InitCoreInfo();
|
||||||
|
}
|
||||||
|
return coreInfos.Where(t => t.coreType == coreType).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitCoreInfo()
|
||||||
|
{
|
||||||
|
coreInfos = new List<CoreInfo>();
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.v2fly,
|
||||||
|
coreExes = new List<string> { "wv2ray", "v2ray" },
|
||||||
|
arguments = "",
|
||||||
|
coreUrl = Global.v2flyCoreUrl,
|
||||||
|
match = "V2Ray"
|
||||||
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.Xray,
|
||||||
|
coreExes = new List<string> { "xray" },
|
||||||
|
arguments = "",
|
||||||
|
coreUrl = Global.xrayCoreUrl,
|
||||||
|
match = "Xray"
|
||||||
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.clash,
|
||||||
|
coreExes = new List<string> { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" },
|
||||||
|
arguments = "-f config.json",
|
||||||
|
coreUrl = Global.clashCoreUrl
|
||||||
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.clash_meta,
|
||||||
|
coreExes = new List<string> { "Clash.Meta-windows-amd64v1", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
|
||||||
|
arguments = "-f config.json",
|
||||||
|
coreUrl = Global.clashMetaCoreUrl
|
||||||
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.hysteria,
|
||||||
|
coreExes = new List<string> { "hysteria-tun-windows-6.0-amd64", "hysteria-tun-windows-6.0-386", "hysteria" },
|
||||||
|
arguments = "",
|
||||||
|
coreUrl = Global.hysteriaCoreUrl
|
||||||
|
});
|
||||||
|
|
||||||
|
coreInfos.Add(new CoreInfo
|
||||||
|
{
|
||||||
|
coreType = ECoreType.naiveproxy,
|
||||||
|
coreExes = new List<string> { "naiveproxy", "naive" },
|
||||||
|
arguments = "config.json",
|
||||||
|
coreUrl = Global.naiveproxyCoreUrl
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
using NHotkey;
|
using NHotkey;
|
||||||
using NHotkey.WindowsForms;
|
using NHotkey.WindowsForms;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using System.Linq;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -29,12 +32,59 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
int index = (int)config.sysProxyType;
|
||||||
|
|
||||||
|
//Load from routing setting
|
||||||
|
var createdIcon = GetNotifyIcon4Routing(config);
|
||||||
|
if (createdIcon != null)
|
||||||
|
{
|
||||||
|
return createdIcon;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load from local file
|
||||||
|
var fileName = Utils.GetPath($"NotifyIcon{index + 1}.ico");
|
||||||
|
if (File.Exists(fileName))
|
||||||
|
{
|
||||||
|
return new Icon(fileName);
|
||||||
|
}
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return Properties.Resources.NotifyIcon1;
|
||||||
|
case 1:
|
||||||
|
return Properties.Resources.NotifyIcon2;
|
||||||
|
case 2:
|
||||||
|
return Properties.Resources.NotifyIcon3;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Properties.Resources.NotifyIcon1;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private Icon GetNotifyIcon4Routing(Config config)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!config.enableRoutingAdvanced)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var item = config.routings[config.routingIndex];
|
||||||
|
if (Utils.IsNullOrEmpty(item.customIcon) || !File.Exists(item.customIcon))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Color color = ColorTranslator.FromHtml("#3399CC");
|
Color color = ColorTranslator.FromHtml("#3399CC");
|
||||||
int index = (int)config.sysProxyType;
|
int index = (int)config.sysProxyType;
|
||||||
if (index > 0)
|
if (index > 0)
|
||||||
{
|
{
|
||||||
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
color = (new Color[] { Color.Red, Color.Purple, Color.DarkGreen, Color.Orange, Color.DarkSlateBlue, Color.RoyalBlue })[index - 1];
|
||||||
//color = ColorTranslator.FromHtml(new string[] { "#CC0066", "#CC6600", "#99CC99", "#666699" }[index - 1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int width = 128;
|
int width = 128;
|
||||||
@@ -44,24 +94,8 @@ namespace v2rayN.Handler
|
|||||||
Graphics graphics = Graphics.FromImage(bitmap);
|
Graphics graphics = Graphics.FromImage(bitmap);
|
||||||
SolidBrush drawBrush = new SolidBrush(color);
|
SolidBrush drawBrush = new SolidBrush(color);
|
||||||
|
|
||||||
var customIcon = false;
|
graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
||||||
if (config.enableRoutingAdvanced)
|
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
|
||||||
{
|
|
||||||
var item = config.routings[config.routingIndex];
|
|
||||||
if (!Utils.IsNullOrEmpty(item.customIcon) && File.Exists(item.customIcon))
|
|
||||||
{
|
|
||||||
graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
|
|
||||||
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0);
|
|
||||||
customIcon = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!customIcon)
|
|
||||||
{
|
|
||||||
graphics.FillEllipse(drawBrush, new Rectangle(0, 0, width, height));
|
|
||||||
int zoom = 16;
|
|
||||||
graphics.DrawImage(new Bitmap(Properties.Resources.notify, width - zoom, width - zoom), zoom / 2, zoom / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
|
||||||
|
|
||||||
drawBrush.Dispose();
|
drawBrush.Dispose();
|
||||||
@@ -73,7 +107,7 @@ namespace v2rayN.Handler
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return def;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,10 +117,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (item.configType != (int)EConfigType.Vmess
|
if (item.configType != EConfigType.Vmess
|
||||||
&& item.configType != (int)EConfigType.VLESS)
|
&& item.configType != EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("NonVmessService"));
|
UI.Show(ResUI.NonVmessService);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +147,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(string.Format(UIRes.I18N("SaveClientConfigurationIn"), fileName));
|
UI.ShowWarning(string.Format(ResUI.SaveClientConfigurationIn, fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,10 +157,10 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (item.configType != (int)EConfigType.Vmess
|
if (item.configType != EConfigType.Vmess
|
||||||
&& item.configType != (int)EConfigType.VLESS)
|
&& item.configType != EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
UI.Show(UIRes.I18N("NonVmessService"));
|
UI.Show(ResUI.NonVmessService);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,33 +187,16 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(string.Format(UIRes.I18N("SaveServerConfigurationIn"), fileName));
|
UI.ShowWarning(string.Format(ResUI.SaveServerConfigurationIn, fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int AddBatchServers(Config config, string clipboardData, string subid, string groupId)
|
|
||||||
{
|
|
||||||
int counter;
|
|
||||||
int _Add()
|
|
||||||
{
|
|
||||||
return ConfigHandler.AddBatchServers(ref config, clipboardData, subid, groupId);
|
|
||||||
}
|
|
||||||
counter = _Add();
|
|
||||||
if (counter < 1)
|
|
||||||
{
|
|
||||||
clipboardData = Utils.Base64Decode(clipboardData);
|
|
||||||
counter = _Add();
|
|
||||||
}
|
|
||||||
|
|
||||||
return counter;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void BackupGuiNConfig(Config config, bool auto = false)
|
public void BackupGuiNConfig(Config config, bool auto = false)
|
||||||
{
|
{
|
||||||
string fileName = $"guiNConfig_{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff")}.json";
|
string fileName = $"guiNConfig_{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff")}.json";
|
||||||
if (auto)
|
if (auto)
|
||||||
{
|
{
|
||||||
fileName = Utils.GetTempPath(fileName);
|
fileName = Utils.GetBackupPath(fileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -206,11 +223,11 @@ namespace v2rayN.Handler
|
|||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
UI.Show(UIRes.I18N("OperationSuccess"));
|
UI.Show(ResUI.OperationSuccess);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI.ShowWarning(UIRes.I18N("OperationFailed"));
|
UI.ShowWarning(ResUI.OperationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,33 +239,54 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
private void UpdateTaskRun(Config config, Action<bool, string> update)
|
private void UpdateTaskRun(Config config, Action<bool, string> update)
|
||||||
{
|
{
|
||||||
|
var autoUpdateSubTime = DateTime.Now;
|
||||||
|
var autoUpdateGeoTime = DateTime.Now;
|
||||||
|
|
||||||
|
Thread.Sleep(60000);
|
||||||
|
Utils.SaveLog("UpdateTaskRun");
|
||||||
|
|
||||||
var updateHandle = new UpdateHandle();
|
var updateHandle = new UpdateHandle();
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
Thread.Sleep(60000);
|
var dtNow = DateTime.Now;
|
||||||
if (config.autoUpdateInterval <= 0)
|
|
||||||
|
if (config.autoUpdateSubInterval > 0)
|
||||||
{
|
{
|
||||||
continue;
|
if ((dtNow - autoUpdateSubTime).Hours % config.autoUpdateSubInterval == 0)
|
||||||
|
{
|
||||||
|
updateHandle.UpdateSubscriptionProcess(config, true, (bool success, string msg) =>
|
||||||
|
{
|
||||||
|
update(success, msg);
|
||||||
|
if (success)
|
||||||
|
Utils.SaveLog("subscription" + msg);
|
||||||
|
});
|
||||||
|
autoUpdateSubTime = dtNow;
|
||||||
|
}
|
||||||
|
Thread.Sleep(60000);
|
||||||
}
|
}
|
||||||
Utils.SaveLog("UpdateTaskRun");
|
|
||||||
|
|
||||||
updateHandle.UpdateGeoFile("geosite", config, (bool success, string msg) =>
|
if (config.autoUpdateInterval > 0)
|
||||||
{
|
{
|
||||||
update(false, msg);
|
if ((dtNow - autoUpdateGeoTime).Hours % config.autoUpdateInterval == 0)
|
||||||
if (success)
|
{
|
||||||
Utils.SaveLog("geosite" + msg);
|
updateHandle.UpdateGeoFile("geosite", config, (bool success, string msg) =>
|
||||||
});
|
{
|
||||||
|
update(false, msg);
|
||||||
|
if (success)
|
||||||
|
Utils.SaveLog("geosite" + msg);
|
||||||
|
});
|
||||||
|
|
||||||
Thread.Sleep(60000);
|
updateHandle.UpdateGeoFile("geoip", config, (bool success, string msg) =>
|
||||||
|
{
|
||||||
|
update(false, msg);
|
||||||
|
if (success)
|
||||||
|
Utils.SaveLog("geoip" + msg);
|
||||||
|
});
|
||||||
|
autoUpdateGeoTime = dtNow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
updateHandle.UpdateGeoFile("geoip", config, (bool success, string msg) =>
|
Thread.Sleep(1000 * 3600);
|
||||||
{
|
|
||||||
update(false, msg);
|
|
||||||
if (success)
|
|
||||||
Utils.SaveLog("geoip" + msg);
|
|
||||||
});
|
|
||||||
|
|
||||||
Thread.Sleep(1000 * 3600 * config.autoUpdateInterval);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,12 +321,12 @@ namespace v2rayN.Handler
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
HotkeyManager.Current.AddOrReplace(((int)item.eGlobalHotkey).ToString(), keys, handler);
|
HotkeyManager.Current.AddOrReplace(((int)item.eGlobalHotkey).ToString(), keys, handler);
|
||||||
var msg = string.Format(UIRes.I18N("RegisterGlobalHotkeySuccessfully"), $"{item.eGlobalHotkey.ToString()} = {keys}");
|
var msg = string.Format(ResUI.RegisterGlobalHotkeySuccessfully, $"{item.eGlobalHotkey.ToString()} = {keys}");
|
||||||
update(false, msg);
|
update(false, msg);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var msg = string.Format(UIRes.I18N("RegisterGlobalHotkeyFailed"), $"{item.eGlobalHotkey.ToString()} = {keys}", ex.Message);
|
var msg = string.Format(ResUI.RegisterGlobalHotkeyFailed, $"{item.eGlobalHotkey.ToString()} = {keys}", ex.Message);
|
||||||
update(false, msg);
|
update(false, msg);
|
||||||
Utils.SaveLog(msg);
|
Utils.SaveLog(msg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
|||||||
using System.Web;
|
using System.Web;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -30,19 +31,19 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
switch (item.configType)
|
switch (item.configType)
|
||||||
{
|
{
|
||||||
case (int)EConfigType.Vmess:
|
case EConfigType.Vmess:
|
||||||
url = ShareVmess(item);
|
url = ShareVmess(item);
|
||||||
break;
|
break;
|
||||||
case (int)EConfigType.Shadowsocks:
|
case EConfigType.Shadowsocks:
|
||||||
url = ShareShadowsocks(item);
|
url = ShareShadowsocks(item);
|
||||||
break;
|
break;
|
||||||
case (int)EConfigType.Socks:
|
case EConfigType.Socks:
|
||||||
url = ShareSocks(item);
|
url = ShareSocks(item);
|
||||||
break;
|
break;
|
||||||
case (int)EConfigType.Trojan:
|
case EConfigType.Trojan:
|
||||||
url = ShareTrojan(item);
|
url = ShareTrojan(item);
|
||||||
break;
|
break;
|
||||||
case (int)EConfigType.VLESS:
|
case EConfigType.VLESS:
|
||||||
url = ShareVLESS(item);
|
url = ShareVLESS(item);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -318,7 +319,7 @@ namespace v2rayN.Handler
|
|||||||
string result = clipboardData.TrimEx();// Utils.GetClipboardData();
|
string result = clipboardData.TrimEx();// Utils.GetClipboardData();
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedReadConfiguration");
|
msg = ResUI.FailedReadConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,7 +339,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.ssProtocol))
|
else if (result.StartsWith(Global.ssProtocol))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
msg = ResUI.ConfigurationFormatIncorrect;
|
||||||
|
|
||||||
vmessItem = ResolveSSLegacy(result);
|
vmessItem = ResolveSSLegacy(result);
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
@@ -354,11 +355,11 @@ namespace v2rayN.Handler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.configType = (int)EConfigType.Shadowsocks;
|
vmessItem.configType = EConfigType.Shadowsocks;
|
||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.socksProtocol))
|
else if (result.StartsWith(Global.socksProtocol))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
msg = ResUI.ConfigurationFormatIncorrect;
|
||||||
|
|
||||||
vmessItem = ResolveSocksNew(result);
|
vmessItem = ResolveSocksNew(result);
|
||||||
if (vmessItem == null)
|
if (vmessItem == null)
|
||||||
@@ -374,11 +375,11 @@ namespace v2rayN.Handler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.configType = (int)EConfigType.Socks;
|
vmessItem.configType = EConfigType.Socks;
|
||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.trojanProtocol))
|
else if (result.StartsWith(Global.trojanProtocol))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
msg = ResUI.ConfigurationFormatIncorrect;
|
||||||
|
|
||||||
vmessItem = ResolveTrojan(result);
|
vmessItem = ResolveTrojan(result);
|
||||||
}
|
}
|
||||||
@@ -390,13 +391,13 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("NonvmessOrssProtocol");
|
msg = ResUI.NonvmessOrssProtocol;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("Incorrectconfiguration");
|
msg = ResUI.Incorrectconfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -408,7 +409,7 @@ namespace v2rayN.Handler
|
|||||||
msg = string.Empty;
|
msg = string.Empty;
|
||||||
VmessItem vmessItem = new VmessItem();
|
VmessItem vmessItem = new VmessItem();
|
||||||
|
|
||||||
vmessItem.configType = (int)EConfigType.Vmess;
|
vmessItem.configType = EConfigType.Vmess;
|
||||||
result = result.Substring(Global.vmessProtocol.Length);
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
result = Utils.Base64Decode(result);
|
result = Utils.Base64Decode(result);
|
||||||
|
|
||||||
@@ -416,7 +417,7 @@ namespace v2rayN.Handler
|
|||||||
VmessQRCode vmessQRCode = Utils.FromJson<VmessQRCode>(result);
|
VmessQRCode vmessQRCode = Utils.FromJson<VmessQRCode>(result);
|
||||||
if (vmessQRCode == null)
|
if (vmessQRCode == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedConversionConfiguration");
|
msg = ResUI.FailedConversionConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,7 +462,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
VmessItem vmessItem = new VmessItem
|
VmessItem vmessItem = new VmessItem
|
||||||
{
|
{
|
||||||
configType = (int)EConfigType.Vmess
|
configType = EConfigType.Vmess
|
||||||
};
|
};
|
||||||
result = result.Substring(Global.vmessProtocol.Length);
|
result = result.Substring(Global.vmessProtocol.Length);
|
||||||
int indexSplit = result.IndexOf("?");
|
int indexSplit = result.IndexOf("?");
|
||||||
@@ -499,7 +500,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
VmessItem i = new VmessItem
|
VmessItem i = new VmessItem
|
||||||
{
|
{
|
||||||
configType = (int)EConfigType.Vmess,
|
configType = EConfigType.Vmess,
|
||||||
security = "auto"
|
security = "auto"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -507,7 +508,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
i.address = u.IdnHost;
|
i.address = u.IdnHost;
|
||||||
i.port = u.Port;
|
i.port = u.Port;
|
||||||
i.remarks = Utils.UrlDecode(u.GetComponents(UriComponents.Fragment, UriFormat.Unescaped));
|
i.remarks = u.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||||
var q = HttpUtility.ParseQueryString(u.Query);
|
var q = HttpUtility.ParseQueryString(u.Query);
|
||||||
|
|
||||||
var m = StdVmessUserInfo.Match(u.UserInfo);
|
var m = StdVmessUserInfo.Match(u.UserInfo);
|
||||||
@@ -589,13 +590,13 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
VmessItem server = new VmessItem
|
VmessItem server = new VmessItem
|
||||||
{
|
{
|
||||||
remarks = Utils.UrlDecode(parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)),
|
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
||||||
address = parsedUrl.IdnHost,
|
address = parsedUrl.IdnHost,
|
||||||
port = parsedUrl.Port,
|
port = parsedUrl.Port,
|
||||||
};
|
};
|
||||||
|
|
||||||
// parse base64 UserInfo
|
// parse base64 UserInfo
|
||||||
string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.Unescaped);
|
string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.UriEscaped);
|
||||||
string userInfo = Utils.Base64Decode(rawUserInfo);
|
string userInfo = Utils.Base64Decode(rawUserInfo);
|
||||||
string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2);
|
string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2);
|
||||||
if (userInfoParts.Length != 2)
|
if (userInfoParts.Length != 2)
|
||||||
@@ -655,7 +656,7 @@ namespace v2rayN.Handler
|
|||||||
private static VmessItem ResolveSocks(string result)
|
private static VmessItem ResolveSocks(string result)
|
||||||
{
|
{
|
||||||
VmessItem vmessItem = new VmessItem();
|
VmessItem vmessItem = new VmessItem();
|
||||||
vmessItem.configType = (int)EConfigType.Socks;
|
vmessItem.configType = EConfigType.Socks;
|
||||||
result = result.Substring(Global.socksProtocol.Length);
|
result = result.Substring(Global.socksProtocol.Length);
|
||||||
//remark
|
//remark
|
||||||
int indexRemark = result.IndexOf("#");
|
int indexRemark = result.IndexOf("#");
|
||||||
@@ -711,7 +712,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
VmessItem server = new VmessItem
|
VmessItem server = new VmessItem
|
||||||
{
|
{
|
||||||
remarks = Utils.UrlDecode(parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)),
|
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
||||||
address = parsedUrl.IdnHost,
|
address = parsedUrl.IdnHost,
|
||||||
port = parsedUrl.Port,
|
port = parsedUrl.Port,
|
||||||
};
|
};
|
||||||
@@ -733,14 +734,14 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
VmessItem item = new VmessItem
|
VmessItem item = new VmessItem
|
||||||
{
|
{
|
||||||
configType = (int)EConfigType.Trojan
|
configType = EConfigType.Trojan
|
||||||
};
|
};
|
||||||
|
|
||||||
Uri url = new Uri(result);
|
Uri url = new Uri(result);
|
||||||
|
|
||||||
item.address = url.IdnHost;
|
item.address = url.IdnHost;
|
||||||
item.port = url.Port;
|
item.port = url.Port;
|
||||||
item.remarks = Utils.UrlDecode(url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped));
|
item.remarks = url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||||
item.id = url.UserInfo;
|
item.id = url.UserInfo;
|
||||||
|
|
||||||
var query = HttpUtility.ParseQueryString(url.Query);
|
var query = HttpUtility.ParseQueryString(url.Query);
|
||||||
@@ -752,7 +753,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
VmessItem item = new VmessItem
|
VmessItem item = new VmessItem
|
||||||
{
|
{
|
||||||
configType = (int)EConfigType.VLESS,
|
configType = EConfigType.VLESS,
|
||||||
security = "none"
|
security = "none"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -760,7 +761,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
item.address = url.IdnHost;
|
item.address = url.IdnHost;
|
||||||
item.port = url.Port;
|
item.port = url.Port;
|
||||||
item.remarks = Utils.UrlDecode(url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped));
|
item.remarks = url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||||
item.id = url.UserInfo;
|
item.id = url.UserInfo;
|
||||||
|
|
||||||
var query = HttpUtility.ParseQueryString(url.Query);
|
var query = HttpUtility.ParseQueryString(url.Query);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Net.Sockets;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -16,12 +17,12 @@ namespace v2rayN.Handler
|
|||||||
private List<ServerTestItem> _selecteds;
|
private List<ServerTestItem> _selecteds;
|
||||||
Action<string, string> _updateFunc;
|
Action<string, string> _updateFunc;
|
||||||
|
|
||||||
public SpeedtestHandler(ref Config config)
|
public SpeedtestHandler(Config config)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpeedtestHandler(ref Config config, ref V2rayHandler v2rayHandler, List<VmessItem> selecteds, string actionType, Action<string, string> update)
|
public SpeedtestHandler(Config config, V2rayHandler v2rayHandler, List<VmessItem> selecteds, ESpeedActionType actionType, Action<string, string> update)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_v2rayHandler = v2rayHandler;
|
_v2rayHandler = v2rayHandler;
|
||||||
@@ -40,21 +41,21 @@ namespace v2rayN.Handler
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actionType == "ping")
|
if (actionType == ESpeedActionType.Ping)
|
||||||
{
|
{
|
||||||
Task.Run(() => RunPing());
|
Task.Run(() => RunPing());
|
||||||
}
|
}
|
||||||
if (actionType == "tcping")
|
else if (actionType == ESpeedActionType.Tcping)
|
||||||
{
|
{
|
||||||
Task.Run(() => RunTcping());
|
Task.Run(() => RunTcping());
|
||||||
}
|
}
|
||||||
else if (actionType == "realping")
|
else if (actionType == ESpeedActionType.Realping)
|
||||||
{
|
{
|
||||||
Task.Run(() => RunRealPing());
|
Task.Run(() => RunRealPing());
|
||||||
}
|
}
|
||||||
else if (actionType == "speedtest")
|
else if (actionType == ESpeedActionType.Speedtest)
|
||||||
{
|
{
|
||||||
Task.Run(() => RunSpeedTest());
|
Task.Run(() => RunSpeedTestAsync());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,13 +65,13 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
foreach (var it in _selecteds)
|
foreach (var it in _selecteds)
|
||||||
{
|
{
|
||||||
if (it.configType == (int)EConfigType.Custom)
|
if (it.configType == EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
updateFun(it);
|
Task.Run(() => updateFun(it));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -117,10 +118,11 @@ namespace v2rayN.Handler
|
|||||||
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
{
|
{
|
||||||
_updateFunc(_selecteds[0].indexId, UIRes.I18N("OperationFailed"));
|
_updateFunc(_selecteds[0].indexId, ResUI.OperationFailed);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DownloadHandle downloadHandle = new DownloadHandle();
|
||||||
//Thread.Sleep(5000);
|
//Thread.Sleep(5000);
|
||||||
List<Task> tasks = new List<Task>();
|
List<Task> tasks = new List<Task>();
|
||||||
foreach (var it in _selecteds)
|
foreach (var it in _selecteds)
|
||||||
@@ -129,7 +131,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (it.configType == (int)EConfigType.Custom)
|
if (it.configType == EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -139,7 +141,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, it.port);
|
WebProxy webProxy = new WebProxy(Global.Loopback, it.port);
|
||||||
int responseTime = -1;
|
int responseTime = -1;
|
||||||
string status = GetRealPingTime(_config.constItem.speedPingTestUrl, webProxy, out responseTime);
|
string status = downloadHandle.GetRealPingTime(_config.constItem.speedPingTestUrl, webProxy, out responseTime);
|
||||||
string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : status;
|
string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : status;
|
||||||
|
|
||||||
_config.GetVmessItem(it.indexId)?.SetTestResult(output);
|
_config.GetVmessItem(it.indexId)?.SetTestResult(output);
|
||||||
@@ -164,38 +166,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int RunAvailabilityCheck() // alias: isLive
|
private async Task RunSpeedTestAsync()
|
||||||
{
|
|
||||||
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.SpeedPingTestUrl, 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()
|
|
||||||
{
|
{
|
||||||
string testIndexId = string.Empty;
|
string testIndexId = string.Empty;
|
||||||
int pid = -1;
|
int pid = -1;
|
||||||
@@ -203,7 +174,7 @@ namespace v2rayN.Handler
|
|||||||
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||||
if (pid < 0)
|
if (pid < 0)
|
||||||
{
|
{
|
||||||
_updateFunc(_selecteds[0].indexId, UIRes.I18N("OperationFailed"));
|
_updateFunc(_selecteds[0].indexId, ResUI.OperationFailed);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,14 +190,14 @@ namespace v2rayN.Handler
|
|||||||
_updateFunc(testIndexId, args.GetException().Message);
|
_updateFunc(testIndexId, args.GetException().Message);
|
||||||
};
|
};
|
||||||
|
|
||||||
var timeout = 10;
|
var timeout = 8;
|
||||||
foreach (var it in _selecteds)
|
foreach (var it in _selecteds)
|
||||||
{
|
{
|
||||||
if (!it.allowTest)
|
if (!it.allowTest)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (it.configType == (int)EConfigType.Custom)
|
if (it.configType == EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -234,15 +205,9 @@ namespace v2rayN.Handler
|
|||||||
if (_config.FindIndexId(it.indexId) < 0) continue;
|
if (_config.FindIndexId(it.indexId) < 0) continue;
|
||||||
|
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, it.port);
|
WebProxy webProxy = new WebProxy(Global.Loopback, it.port);
|
||||||
var ws = downloadHandle2.DownloadDataAsync(url, webProxy, timeout - 2);
|
await downloadHandle2.DownloadDataAsync(url, webProxy, timeout);
|
||||||
|
|
||||||
Thread.Sleep(1000 * timeout);
|
|
||||||
|
|
||||||
ws.CancelAsync();
|
|
||||||
ws.Dispose();
|
|
||||||
|
|
||||||
Thread.Sleep(1000 * 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pid > 0) _v2rayHandler.V2rayStopPid(pid);
|
if (pid > 0) _v2rayHandler.V2rayStopPid(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,37 +246,6 @@ namespace v2rayN.Handler
|
|||||||
return responseTime;
|
return responseTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetRealPingTime(string url, WebProxy webProxy, out int responseTime)
|
|
||||||
{
|
|
||||||
string msg = string.Empty;
|
|
||||||
responseTime = -1;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
|
|
||||||
myHttpWebRequest.Timeout = 5000;
|
|
||||||
myHttpWebRequest.Proxy = webProxy;//new WebProxy(Global.Loopback, Global.httpPort);
|
|
||||||
|
|
||||||
Stopwatch timer = new Stopwatch();
|
|
||||||
timer.Start();
|
|
||||||
|
|
||||||
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
|
|
||||||
if (myHttpWebResponse.StatusCode != HttpStatusCode.OK
|
|
||||||
&& myHttpWebResponse.StatusCode != HttpStatusCode.NoContent)
|
|
||||||
{
|
|
||||||
msg = myHttpWebResponse.StatusDescription;
|
|
||||||
}
|
|
||||||
timer.Stop();
|
|
||||||
responseTime = timer.Elapsed.Milliseconds;
|
|
||||||
|
|
||||||
myHttpWebResponse.Close();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
msg = ex.Message;
|
|
||||||
}
|
|
||||||
return msg;
|
|
||||||
}
|
|
||||||
private string FormatOut(object time, string unit)
|
private string FormatOut(object time, string unit)
|
||||||
{
|
{
|
||||||
if (time.ToString().Equals("-1"))
|
if (time.ToString().Equals("-1"))
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Global.httpPort = config.GetLocalPort(Global.InboundHttp);
|
int port = config.GetLocalPort(Global.InboundHttp);
|
||||||
int port = Global.httpPort;
|
int portSocks = config.GetLocalPort(Global.InboundSocks);
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -68,7 +68,20 @@ namespace v2rayN.Handler
|
|||||||
if (type == ESysProxyType.ForcedChange)
|
if (type == ESysProxyType.ForcedChange)
|
||||||
{
|
{
|
||||||
var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
|
var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
|
||||||
SetIEProxy(true, $"{Global.Loopback}:{port}", strExceptions);
|
|
||||||
|
var strProxy = string.Empty;
|
||||||
|
if (Utils.IsNullOrEmpty(config.systemProxyAdvancedProtocol))
|
||||||
|
{
|
||||||
|
strProxy = $"{Global.Loopback}:{port}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strProxy = config.systemProxyAdvancedProtocol
|
||||||
|
.Replace("{ip}", Global.Loopback)
|
||||||
|
.Replace("{http_port}", port.ToString())
|
||||||
|
.Replace("{socks_port}", portSocks.ToString());
|
||||||
|
}
|
||||||
|
SetIEProxy(true, strProxy, strExceptions);
|
||||||
}
|
}
|
||||||
else if (type == ESysProxyType.ForcedClear)
|
else if (type == ESysProxyType.ForcedClear)
|
||||||
{
|
{
|
||||||
@@ -97,41 +110,6 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetIEProxy(bool enable, bool global, string strProxy)
|
|
||||||
{
|
|
||||||
//Read();
|
|
||||||
|
|
||||||
//if (!_userSettings.UserSettingsRecorded)
|
|
||||||
//{
|
|
||||||
// // record user settings
|
|
||||||
// ExecSysproxy("query");
|
|
||||||
// //ParseQueryStr(_queryStr);
|
|
||||||
//}
|
|
||||||
|
|
||||||
string arguments;
|
|
||||||
if (enable)
|
|
||||||
{
|
|
||||||
arguments = global
|
|
||||||
? $"global {strProxy} {Global.IEProxyExceptions}"
|
|
||||||
: $"pac {strProxy}";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// restore user settings
|
|
||||||
string flags = _userSettings.Flags;
|
|
||||||
string proxy_server = _userSettings.ProxyServer ?? "-";
|
|
||||||
string bypass_list = _userSettings.BypassList ?? "-";
|
|
||||||
string pac_url = _userSettings.PacUrl ?? "-";
|
|
||||||
arguments = $"set {flags} {proxy_server} {bypass_list} {pac_url}";
|
|
||||||
|
|
||||||
// have to get new settings
|
|
||||||
_userSettings.UserSettingsRecorded = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Save();
|
|
||||||
ExecSysproxy(arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void SetIEProxy(bool global, string strProxy, string strExceptions)
|
public static void SetIEProxy(bool global, string strProxy, string strExceptions)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -53,7 +54,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
_updateFunc(false, UIRes.I18N("MsgDownloadV2rayCoreSuccessfully"));
|
_updateFunc(false, ResUI.MsgDownloadV2rayCoreSuccessfully);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -93,7 +94,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
_updateFunc(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "v2rayN"));
|
_updateFunc(false, string.Format(ResUI.MsgParsingSuccessfully, "v2rayN"));
|
||||||
|
|
||||||
url = args.Msg;
|
url = args.Msg;
|
||||||
askToDownload(downloadHandle, url, true);
|
askToDownload(downloadHandle, url, true);
|
||||||
@@ -103,12 +104,12 @@ namespace v2rayN.Handler
|
|||||||
_updateFunc(false, args.Msg);
|
_updateFunc(false, args.Msg);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
_updateFunc(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN"));
|
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "v2rayN"));
|
||||||
CheckUpdateAsync("v2rayN");
|
CheckUpdateAsync(ECoreType.v2rayN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void CheckUpdateCore(string type, Config config, Action<bool, string> update)
|
public void CheckUpdateCore(ECoreType type, Config config, Action<bool, string> update)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
@@ -122,8 +123,8 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
_updateFunc(false, UIRes.I18N("MsgDownloadV2rayCoreSuccessfully"));
|
_updateFunc(false, ResUI.MsgDownloadV2rayCoreSuccessfully);
|
||||||
_updateFunc(false, UIRes.I18N("MsgUnpacking"));
|
_updateFunc(false, ResUI.MsgUnpacking);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -149,7 +150,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
_updateFunc(false, string.Format(UIRes.I18N("MsgParsingSuccessfully"), "Core"));
|
_updateFunc(false, string.Format(ResUI.MsgParsingSuccessfully, "Core"));
|
||||||
url = args.Msg;
|
url = args.Msg;
|
||||||
askToDownload(downloadHandle, url, true);
|
askToDownload(downloadHandle, url, true);
|
||||||
}
|
}
|
||||||
@@ -158,7 +159,7 @@ namespace v2rayN.Handler
|
|||||||
_updateFunc(false, args.Msg);
|
_updateFunc(false, args.Msg);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
_updateFunc(false, string.Format(UIRes.I18N("MsgStartUpdating"), "Core"));
|
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "Core"));
|
||||||
CheckUpdateAsync(type);
|
CheckUpdateAsync(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,75 +169,74 @@ namespace v2rayN.Handler
|
|||||||
_config = config;
|
_config = config;
|
||||||
_updateFunc = update;
|
_updateFunc = update;
|
||||||
|
|
||||||
_updateFunc(false, UIRes.I18N("MsgUpdateSubscriptionStart"));
|
_updateFunc(false, ResUI.MsgUpdateSubscriptionStart);
|
||||||
|
|
||||||
if (config.subItem == null || config.subItem.Count <= 0)
|
if (config.subItem == null || config.subItem.Count <= 0)
|
||||||
{
|
{
|
||||||
_updateFunc(false, UIRes.I18N("MsgNoValidSubscription"));
|
_updateFunc(false, ResUI.MsgNoValidSubscription);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int k = 1; k <= config.subItem.Count; k++)
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
string id = config.subItem[k - 1].id.TrimEx();
|
//Turn off system proxy
|
||||||
string url = config.subItem[k - 1].url.TrimEx();
|
bool bSysProxyType = false;
|
||||||
string userAgent = config.subItem[k - 1].userAgent.TrimEx();
|
if (!blProxy && config.sysProxyType == ESysProxyType.ForcedChange)
|
||||||
string groupId = config.subItem[k - 1].groupId.TrimEx();
|
|
||||||
string hashCode = $"{k}->";
|
|
||||||
if (config.subItem[k - 1].enabled == false)
|
|
||||||
{
|
{
|
||||||
continue;
|
bSysProxyType = true;
|
||||||
}
|
config.sysProxyType = ESysProxyType.ForcedClear;
|
||||||
if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url))
|
SysProxyHandle.UpdateSysProxy(config, false);
|
||||||
{
|
Thread.Sleep(3000);
|
||||||
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgNoValidSubscription")}");
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DownloadHandle downloadHandle3 = new DownloadHandle();
|
foreach (var item in config.subItem)
|
||||||
downloadHandle3.UpdateCompleted += (sender2, args) =>
|
|
||||||
{
|
{
|
||||||
if (args.Success)
|
if (item.enabled == false)
|
||||||
{
|
{
|
||||||
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgGetSubscriptionSuccessfully")}");
|
continue;
|
||||||
//string result = Utils.Base64Decode(args.Msg);
|
}
|
||||||
string result = args.Msg;
|
string id = item.id.TrimEx();
|
||||||
if (Utils.IsNullOrEmpty(result))
|
string url = item.url.TrimEx();
|
||||||
{
|
string userAgent = item.userAgent.TrimEx();
|
||||||
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgSubscriptionDecodingFailed")}");
|
string groupId = item.groupId.TrimEx();
|
||||||
return;
|
string hashCode = $"{item.remarks}->";
|
||||||
}
|
if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
//_updateFunc(false, $"{hashCode}{ResUI.MsgNoValidSubscription}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
//ConfigHandler.RemoveServerViaSubid(ref config, id);
|
_updateFunc(false, $"{hashCode}{ResUI.MsgStartGettingSubscriptions}");
|
||||||
//_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgClearSubscription")}");
|
var result = await (new DownloadHandle()).DownloadStringAsync(url, blProxy, userAgent);
|
||||||
// RefreshServers();
|
|
||||||
int ret = MainFormHandler.Instance.AddBatchServers(config, result, id, groupId);
|
_updateFunc(false, $"{hashCode}{ResUI.MsgGetSubscriptionSuccessfully}");
|
||||||
if (ret > 0)
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
// RefreshServers();
|
_updateFunc(false, $"{hashCode}{ResUI.MsgSubscriptionDecodingFailed}");
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgFailedImportSubscription")}");
|
|
||||||
}
|
|
||||||
_updateFunc(true, $"{hashCode}{UIRes.I18N("MsgUpdateSubscriptionEnd")}");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_updateFunc(false, args.Msg);
|
int ret = ConfigHandler.AddBatchServers(ref config, result, id, groupId);
|
||||||
|
if (ret > 0)
|
||||||
|
{
|
||||||
|
_updateFunc(false, $"{hashCode}{ResUI.MsgUpdateSubscriptionEnd}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_updateFunc(false, $"{hashCode}{ResUI.MsgFailedImportSubscription}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
_updateFunc(false, $"-------------------------------------------------------");
|
||||||
downloadHandle3.Error += (sender2, args) =>
|
}
|
||||||
|
//restore system proxy
|
||||||
|
if (bSysProxyType)
|
||||||
{
|
{
|
||||||
_updateFunc(false, args.GetException().Message);
|
config.sysProxyType = ESysProxyType.ForcedChange;
|
||||||
};
|
SysProxyHandle.UpdateSysProxy(config, false);
|
||||||
|
}
|
||||||
WebProxy webProxy = blProxy ? new WebProxy(Global.Loopback, _config.GetLocalPort(Global.InboundHttp)) : null;
|
_updateFunc(true, $"{ResUI.MsgUpdateSubscriptionEnd}");
|
||||||
downloadHandle3.WebDownloadString(url, webProxy, userAgent);
|
|
||||||
|
|
||||||
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgStartGettingSubscriptions")}");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (args.Success)
|
if (args.Success)
|
||||||
{
|
{
|
||||||
_updateFunc(false, string.Format(UIRes.I18N("MsgDownloadGeoFileSuccessfully"), geoName));
|
_updateFunc(false, string.Format(ResUI.MsgDownloadGeoFileSuccessfully, geoName));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -268,7 +268,7 @@ namespace v2rayN.Handler
|
|||||||
File.Delete(targetPath);
|
File.Delete(targetPath);
|
||||||
}
|
}
|
||||||
File.Move(fileName, targetPath);
|
File.Move(fileName, targetPath);
|
||||||
_updateFunc(true, "");
|
//_updateFunc(true, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -286,39 +286,36 @@ namespace v2rayN.Handler
|
|||||||
_updateFunc(false, args.GetException().Message);
|
_updateFunc(false, args.GetException().Message);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
askToDownload(downloadHandle, url, false);
|
askToDownload(downloadHandle, url, false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RunAvailabilityCheck(Action<bool, string> update)
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
var time = (new DownloadHandle()).RunAvailabilityCheck(null);
|
||||||
|
|
||||||
|
update(false, string.Format(ResUI.TestMeOutput, time));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#region private
|
#region private
|
||||||
|
|
||||||
private async void CheckUpdateAsync(string type)
|
private async void CheckUpdateAsync(ECoreType type)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
|
||||||
WebRequestHandler webRequestHandler = new WebRequestHandler
|
|
||||||
{
|
|
||||||
AllowAutoRedirect = false
|
|
||||||
};
|
|
||||||
if (httpProxyTest() > 0)
|
|
||||||
{
|
|
||||||
int httpPort = _config.GetLocalPort(Global.InboundHttp);
|
|
||||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
|
||||||
webRequestHandler.Proxy = webProxy;
|
|
||||||
}
|
|
||||||
HttpClient httpClient = new HttpClient(webRequestHandler);
|
|
||||||
|
|
||||||
string url;
|
string url;
|
||||||
if (type == "v2fly")
|
if (type == ECoreType.v2fly)
|
||||||
{
|
{
|
||||||
url = v2flyCoreLatestUrl;
|
url = v2flyCoreLatestUrl;
|
||||||
}
|
}
|
||||||
else if (type == "xray")
|
else if (type == ECoreType.Xray)
|
||||||
{
|
{
|
||||||
url = xrayCoreLatestUrl;
|
url = xrayCoreLatestUrl;
|
||||||
}
|
}
|
||||||
else if (type == "v2rayN")
|
else if (type == ECoreType.v2rayN)
|
||||||
{
|
{
|
||||||
url = nLatestUrl;
|
url = nLatestUrl;
|
||||||
}
|
}
|
||||||
@@ -326,10 +323,11 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
throw new ArgumentException("Type");
|
throw new ArgumentException("Type");
|
||||||
}
|
}
|
||||||
HttpResponseMessage response = await httpClient.GetAsync(url);
|
|
||||||
if (response.StatusCode.ToString() == "Redirect")
|
var result = await (new DownloadHandle()).UrlRedirectAsync(url, true);
|
||||||
|
if (!Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
responseHandler(type, response.Headers.Location.ToString());
|
responseHandler(type, result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -347,26 +345,27 @@ namespace v2rayN.Handler
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取V2RayCore版本
|
/// 获取V2RayCore版本
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private string getCoreVersion(string type)
|
private string getCoreVersion(ECoreType type)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var core = string.Empty;
|
|
||||||
var match = string.Empty;
|
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
|
||||||
if (type == "v2fly")
|
string filePath = string.Empty;
|
||||||
|
foreach (string name in coreInfo.coreExes)
|
||||||
{
|
{
|
||||||
core = "v2ray.exe";
|
string vName = string.Format("{0}.exe", name);
|
||||||
match = "V2Ray";
|
vName = Utils.GetPath(vName);
|
||||||
|
if (File.Exists(vName))
|
||||||
|
{
|
||||||
|
filePath = vName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
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"), @"");
|
string msg = string.Format(ResUI.NotFoundCore, @"");
|
||||||
//ShowMsg(true, msg);
|
//ShowMsg(true, msg);
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -382,7 +381,7 @@ 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, $"{match} ([0-9.]+) \\(").Groups[1].Value;
|
string version = Regex.Match(echo, $"{coreInfo.match} ([0-9.]+) \\(").Groups[1].Value;
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -392,7 +391,7 @@ namespace v2rayN.Handler
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void responseHandler(string type, string redirectUrl)
|
private void responseHandler(ECoreType type, string redirectUrl)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -401,24 +400,24 @@ namespace v2rayN.Handler
|
|||||||
string curVersion;
|
string curVersion;
|
||||||
string message;
|
string message;
|
||||||
string url;
|
string url;
|
||||||
if (type == "v2fly")
|
if (type == ECoreType.v2fly)
|
||||||
{
|
{
|
||||||
curVersion = "v" + getCoreVersion(type);
|
curVersion = "v" + getCoreVersion(type);
|
||||||
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
message = string.Format(ResUI.IsLatestCore, curVersion);
|
||||||
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
||||||
url = string.Format(v2flyCoreUrl, version, osBit);
|
url = string.Format(v2flyCoreUrl, version, osBit);
|
||||||
}
|
}
|
||||||
else if (type == "xray")
|
else if (type == ECoreType.Xray)
|
||||||
{
|
{
|
||||||
curVersion = "v" + getCoreVersion(type);
|
curVersion = "v" + getCoreVersion(type);
|
||||||
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
message = string.Format(ResUI.IsLatestCore, curVersion);
|
||||||
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
||||||
url = string.Format(xrayCoreUrl, version, osBit);
|
url = string.Format(xrayCoreUrl, version, osBit);
|
||||||
}
|
}
|
||||||
else if (type == "v2rayN")
|
else if (type == ECoreType.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(ResUI.IsLatestN, curVersion);
|
||||||
url = string.Format(nUrl, version);
|
url = string.Format(nUrl, version);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -446,7 +445,7 @@ namespace v2rayN.Handler
|
|||||||
bool blDownload = false;
|
bool blDownload = false;
|
||||||
if (blAsk)
|
if (blAsk)
|
||||||
{
|
{
|
||||||
if (UI.ShowYesNo(string.Format(UIRes.I18N("DownloadYesNo"), url)) == DialogResult.Yes)
|
if (UI.ShowYesNo(string.Format(ResUI.DownloadYesNo, url)) == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
blDownload = true;
|
blDownload = true;
|
||||||
}
|
}
|
||||||
@@ -457,24 +456,9 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
if (blDownload)
|
if (blDownload)
|
||||||
{
|
{
|
||||||
if (httpProxyTest() > 0)
|
downloadHandle.DownloadFileAsync(url, true, 600);
|
||||||
{
|
|
||||||
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 int httpProxyTest()
|
|
||||||
{
|
|
||||||
SpeedtestHandler statistics = new SpeedtestHandler(ref _config);
|
|
||||||
return statistics.RunAvailabilityCheck();
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Net;
|
|||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -32,12 +33,12 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("CheckServerSettings");
|
msg = ResUI.CheckServerSettings;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = UIRes.I18N("InitialConfiguration");
|
msg = ResUI.InitialConfiguration;
|
||||||
if (node.configType == (int)EConfigType.Custom)
|
if (node.configType == EConfigType.Custom)
|
||||||
{
|
{
|
||||||
return GenerateClientCustomConfig(node, fileName, out msg);
|
return GenerateClientCustomConfig(node, fileName, out msg);
|
||||||
}
|
}
|
||||||
@@ -46,7 +47,7 @@ namespace v2rayN.Handler
|
|||||||
string result = Utils.GetEmbedText(SampleClient);
|
string result = Utils.GetEmbedText(SampleClient);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGetDefaultConfiguration");
|
msg = ResUI.FailedGetDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ namespace v2rayN.Handler
|
|||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,11 +81,11 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
||||||
|
|
||||||
msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), $"[{config.GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
msg = string.Format(ResUI.SuccessfulConfiguration, $"[{config.GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -145,29 +146,35 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Inbounds inbound = v2rayConfig.inbounds[0];
|
v2rayConfig.inbounds = new List<Inbounds>();
|
||||||
inbound.tag = Global.InboundSocks;
|
|
||||||
inbound.port = config.inbound[0].localPort;
|
Inbounds inbound = GetInbound(config.inbound[0], Global.InboundSocks, 0, true);
|
||||||
inbound.protocol = config.inbound[0].protocol;
|
v2rayConfig.inbounds.Add(inbound);
|
||||||
if (config.allowLANConn)
|
|
||||||
{
|
|
||||||
inbound.listen = "0.0.0.0";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inbound.listen = Global.Loopback;
|
|
||||||
}
|
|
||||||
//udp
|
|
||||||
inbound.settings.udp = config.inbound[0].udpEnabled;
|
|
||||||
inbound.sniffing.enabled = config.inbound[0].sniffingEnabled;
|
|
||||||
|
|
||||||
//http
|
//http
|
||||||
Inbounds inbound2 = v2rayConfig.inbounds[1];
|
Inbounds inbound2 = GetInbound(config.inbound[0], Global.InboundHttp, 1, false);
|
||||||
inbound2.tag = Global.InboundHttp;
|
v2rayConfig.inbounds.Add(inbound2);
|
||||||
inbound2.port = config.GetLocalPort(Global.InboundHttp);
|
|
||||||
inbound2.protocol = Global.InboundHttp;
|
if (config.inbound[0].allowLANConn)
|
||||||
inbound2.listen = inbound.listen;
|
{
|
||||||
inbound2.settings.allowTransparent = false;
|
Inbounds inbound3 = GetInbound(config.inbound[0], Global.InboundSocks2, 2, true);
|
||||||
|
inbound3.listen = "0.0.0.0";
|
||||||
|
v2rayConfig.inbounds.Add(inbound3);
|
||||||
|
|
||||||
|
Inbounds inbound4 = GetInbound(config.inbound[0], Global.InboundHttp2, 3, false);
|
||||||
|
inbound4.listen = "0.0.0.0";
|
||||||
|
v2rayConfig.inbounds.Add(inbound4);
|
||||||
|
|
||||||
|
//auth
|
||||||
|
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
||||||
|
{
|
||||||
|
inbound3.settings.auth = "password";
|
||||||
|
inbound3.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
|
||||||
|
inbound4.settings.auth = "password";
|
||||||
|
inbound4.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -175,6 +182,28 @@ namespace v2rayN.Handler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Inbounds GetInbound(InItem inItem, string tag, int offset, bool bSocks)
|
||||||
|
{
|
||||||
|
string result = Utils.GetEmbedText(Global.v2raySampleInbound);
|
||||||
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inbound = Utils.FromJson<Inbounds>(result);
|
||||||
|
if (inbound == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
inbound.tag = tag;
|
||||||
|
inbound.port = inItem.localPort + offset;
|
||||||
|
inbound.protocol = bSocks ? Global.InboundSocks : Global.InboundHttp;
|
||||||
|
inbound.settings.udp = inItem.udpEnabled;
|
||||||
|
inbound.sniffing.enabled = inItem.sniffingEnabled;
|
||||||
|
|
||||||
|
return inbound;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路由
|
/// 路由
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -334,7 +363,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
var config = LazyConfig.Instance.GetConfig();
|
var config = LazyConfig.Instance.GetConfig();
|
||||||
Outbounds outbound = v2rayConfig.outbounds[0];
|
Outbounds outbound = v2rayConfig.outbounds[0];
|
||||||
if (node.configType == (int)EConfigType.Vmess)
|
if (node.configType == EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
VnextItem vnextItem;
|
VnextItem vnextItem;
|
||||||
if (outbound.settings.vnext.Count <= 0)
|
if (outbound.settings.vnext.Count <= 0)
|
||||||
@@ -384,7 +413,7 @@ namespace v2rayN.Handler
|
|||||||
outbound.protocol = Global.vmessProtocolLite;
|
outbound.protocol = Global.vmessProtocolLite;
|
||||||
outbound.settings.servers = null;
|
outbound.settings.servers = null;
|
||||||
}
|
}
|
||||||
else if (node.configType == (int)EConfigType.Shadowsocks)
|
else if (node.configType == EConfigType.Shadowsocks)
|
||||||
{
|
{
|
||||||
ServersItem serversItem;
|
ServersItem serversItem;
|
||||||
if (outbound.settings.servers.Count <= 0)
|
if (outbound.settings.servers.Count <= 0)
|
||||||
@@ -400,7 +429,7 @@ namespace v2rayN.Handler
|
|||||||
serversItem.address = node.address;
|
serversItem.address = node.address;
|
||||||
serversItem.port = node.port;
|
serversItem.port = node.port;
|
||||||
serversItem.password = node.id;
|
serversItem.password = node.id;
|
||||||
if (config.GetShadowsocksSecuritys().Contains(node.security))
|
if (LazyConfig.Instance.GetShadowsocksSecuritys().Contains(node.security))
|
||||||
{
|
{
|
||||||
serversItem.method = node.security;
|
serversItem.method = node.security;
|
||||||
}
|
}
|
||||||
@@ -420,7 +449,7 @@ namespace v2rayN.Handler
|
|||||||
outbound.protocol = Global.ssProtocolLite;
|
outbound.protocol = Global.ssProtocolLite;
|
||||||
outbound.settings.vnext = null;
|
outbound.settings.vnext = null;
|
||||||
}
|
}
|
||||||
else if (node.configType == (int)EConfigType.Socks)
|
else if (node.configType == EConfigType.Socks)
|
||||||
{
|
{
|
||||||
ServersItem serversItem;
|
ServersItem serversItem;
|
||||||
if (outbound.settings.servers.Count <= 0)
|
if (outbound.settings.servers.Count <= 0)
|
||||||
@@ -457,7 +486,7 @@ namespace v2rayN.Handler
|
|||||||
outbound.protocol = Global.socksProtocolLite;
|
outbound.protocol = Global.socksProtocolLite;
|
||||||
outbound.settings.vnext = null;
|
outbound.settings.vnext = null;
|
||||||
}
|
}
|
||||||
else if (node.configType == (int)EConfigType.VLESS)
|
else if (node.configType == EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
VnextItem vnextItem;
|
VnextItem vnextItem;
|
||||||
if (outbound.settings.vnext.Count <= 0)
|
if (outbound.settings.vnext.Count <= 0)
|
||||||
@@ -516,7 +545,7 @@ namespace v2rayN.Handler
|
|||||||
outbound.protocol = Global.vlessProtocolLite;
|
outbound.protocol = Global.vlessProtocolLite;
|
||||||
outbound.settings.servers = null;
|
outbound.settings.servers = null;
|
||||||
}
|
}
|
||||||
else if (node.configType == (int)EConfigType.Trojan)
|
else if (node.configType == EConfigType.Trojan)
|
||||||
{
|
{
|
||||||
ServersItem serversItem;
|
ServersItem serversItem;
|
||||||
if (outbound.settings.servers.Count <= 0)
|
if (outbound.settings.servers.Count <= 0)
|
||||||
@@ -900,7 +929,7 @@ namespace v2rayN.Handler
|
|||||||
//检查GUI设置
|
//检查GUI设置
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("CheckServerSettings");
|
msg = ResUI.CheckServerSettings;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -912,20 +941,44 @@ namespace v2rayN.Handler
|
|||||||
string addressFileName = node.address;
|
string addressFileName = node.address;
|
||||||
if (!File.Exists(addressFileName))
|
if (!File.Exists(addressFileName))
|
||||||
{
|
{
|
||||||
addressFileName = Path.Combine(Utils.GetTempPath(), addressFileName);
|
addressFileName = Utils.GetConfigPath(addressFileName);
|
||||||
}
|
}
|
||||||
if (!File.Exists(addressFileName))
|
if (!File.Exists(addressFileName))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
File.Copy(addressFileName, fileName);
|
File.Copy(addressFileName, fileName);
|
||||||
|
|
||||||
msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
//check again
|
||||||
|
if (!File.Exists(fileName))
|
||||||
|
{
|
||||||
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//overwrite port
|
||||||
|
var fileContent = File.ReadAllLines(fileName).ToList();
|
||||||
|
var coreType = LazyConfig.Instance.GetCoreType(node, node.configType);
|
||||||
|
switch (coreType)
|
||||||
|
{
|
||||||
|
case ECoreType.v2fly:
|
||||||
|
case ECoreType.Xray:
|
||||||
|
break;
|
||||||
|
case ECoreType.clash:
|
||||||
|
case ECoreType.clash_meta:
|
||||||
|
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
|
||||||
|
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
File.WriteAllLines(fileName, fileContent);
|
||||||
|
|
||||||
|
msg = string.Format(ResUI.SuccessfulConfiguration, $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
Utils.SaveLog("GenerateClientCustomConfig", ex);
|
||||||
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -949,17 +1002,17 @@ namespace v2rayN.Handler
|
|||||||
//检查GUI设置
|
//检查GUI设置
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("CheckServerSettings");
|
msg = ResUI.CheckServerSettings;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = UIRes.I18N("InitialConfiguration");
|
msg = ResUI.InitialConfiguration;
|
||||||
|
|
||||||
//取得默认配置
|
//取得默认配置
|
||||||
string result = Utils.GetEmbedText(SampleServer);
|
string result = Utils.GetEmbedText(SampleServer);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGetDefaultConfiguration");
|
msg = ResUI.FailedGetDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -967,7 +1020,7 @@ namespace v2rayN.Handler
|
|||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -984,11 +1037,11 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
||||||
|
|
||||||
msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), node.GetSummary());
|
msg = string.Format(ResUI.SuccessfulConfiguration, node.GetSummary());
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1022,13 +1075,13 @@ namespace v2rayN.Handler
|
|||||||
usersItem.id = node.id;
|
usersItem.id = node.id;
|
||||||
usersItem.email = Global.userEMail;
|
usersItem.email = Global.userEMail;
|
||||||
|
|
||||||
if (node.configType == (int)EConfigType.Vmess)
|
if (node.configType == EConfigType.Vmess)
|
||||||
{
|
{
|
||||||
inbound.protocol = Global.vmessProtocolLite;
|
inbound.protocol = Global.vmessProtocolLite;
|
||||||
usersItem.alterId = node.alterId;
|
usersItem.alterId = node.alterId;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (node.configType == (int)EConfigType.VLESS)
|
else if (node.configType == EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
inbound.protocol = Global.vlessProtocolLite;
|
inbound.protocol = Global.vlessProtocolLite;
|
||||||
usersItem.flow = node.flow;
|
usersItem.flow = node.flow;
|
||||||
@@ -1086,7 +1139,7 @@ namespace v2rayN.Handler
|
|||||||
string result = Utils.LoadResource(fileName);
|
string result = Utils.LoadResource(fileName);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedReadConfiguration");
|
msg = ResUI.FailedReadConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1094,14 +1147,14 @@ namespace v2rayN.Handler
|
|||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedConversionConfiguration");
|
msg = ResUI.FailedConversionConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v2rayConfig.outbounds == null
|
if (v2rayConfig.outbounds == null
|
||||||
|| v2rayConfig.outbounds.Count <= 0)
|
|| v2rayConfig.outbounds.Count <= 0)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("IncorrectClientConfiguration");
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1115,7 +1168,7 @@ namespace v2rayN.Handler
|
|||||||
|| outbound.settings.vnext[0].users == null
|
|| outbound.settings.vnext[0].users == null
|
||||||
|| outbound.settings.vnext[0].users.Count <= 0)
|
|| outbound.settings.vnext[0].users.Count <= 0)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("IncorrectClientConfiguration");
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1208,7 +1261,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("IncorrectClientConfiguration");
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1232,7 +1285,7 @@ namespace v2rayN.Handler
|
|||||||
string result = Utils.LoadResource(fileName);
|
string result = Utils.LoadResource(fileName);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedReadConfiguration");
|
msg = ResUI.FailedReadConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1240,14 +1293,14 @@ namespace v2rayN.Handler
|
|||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedConversionConfiguration");
|
msg = ResUI.FailedConversionConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v2rayConfig.inbounds == null
|
if (v2rayConfig.inbounds == null
|
||||||
|| v2rayConfig.inbounds.Count <= 0)
|
|| v2rayConfig.inbounds.Count <= 0)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("IncorrectServerConfiguration");
|
msg = ResUI.IncorrectServerConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1259,7 +1312,7 @@ namespace v2rayN.Handler
|
|||||||
|| inbound.settings.clients == null
|
|| inbound.settings.clients == null
|
||||||
|| inbound.settings.clients.Count <= 0)
|
|| inbound.settings.clients.Count <= 0)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("IncorrectServerConfiguration");
|
msg = ResUI.IncorrectServerConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1353,7 +1406,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("IncorrectClientConfiguration");
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return vmessItem;
|
return vmessItem;
|
||||||
@@ -1394,25 +1447,25 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
if (config == null)
|
if (config == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("CheckServerSettings");
|
msg = ResUI.CheckServerSettings;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = UIRes.I18N("InitialConfiguration");
|
msg = ResUI.InitialConfiguration;
|
||||||
|
|
||||||
Config configCopy = Utils.DeepCopy(config);
|
Config configCopy = Utils.DeepCopy(config);
|
||||||
|
|
||||||
string result = Utils.GetEmbedText(SampleClient);
|
string result = Utils.GetEmbedText(SampleClient);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGetDefaultConfiguration");
|
msg = ResUI.FailedGetDefaultConfiguration;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
List<IPEndPoint> lstIpEndPoints = null;
|
List<IPEndPoint> lstIpEndPoints = null;
|
||||||
@@ -1432,7 +1485,7 @@ namespace v2rayN.Handler
|
|||||||
|
|
||||||
foreach (var it in selecteds)
|
foreach (var it in selecteds)
|
||||||
{
|
{
|
||||||
if (it.configType == (int)EConfigType.Custom)
|
if (it.configType == EConfigType.Custom)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -1440,7 +1493,7 @@ namespace v2rayN.Handler
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (it.configType == (int)EConfigType.Vmess || it.configType == (int)EConfigType.VLESS)
|
if (it.configType == EConfigType.Vmess || it.configType == EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
if (!Utils.IsGuidByParse(configCopy.GetVmessItem(it.indexId).id))
|
if (!Utils.IsGuidByParse(configCopy.GetVmessItem(it.indexId).id))
|
||||||
{
|
{
|
||||||
@@ -1493,12 +1546,12 @@ namespace v2rayN.Handler
|
|||||||
v2rayConfig.routing.rules.Add(rule);
|
v2rayConfig.routing.rules.Add(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
//msg = string.Format(UIRes.I18N("SuccessfulConfiguration"), node.getSummary());
|
//msg = string.Format(ResUI.SuccessfulConfiguration"), node.getSummary());
|
||||||
return Utils.ToJson(v2rayConfig);
|
return Utils.ToJson(v2rayConfig);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
msg = ResUI.FailedGenDefaultConfiguration;
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Diagnostics;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
@@ -21,8 +22,7 @@ namespace v2rayN.Handler
|
|||||||
class V2rayHandler
|
class V2rayHandler
|
||||||
{
|
{
|
||||||
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
||||||
private List<string> lstV2ray;
|
private CoreInfo coreInfo;
|
||||||
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;
|
||||||
@@ -36,27 +36,20 @@ 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)
|
||||||
{
|
{
|
||||||
var item = ConfigHandler.GetDefaultServer(ref config);
|
var item = ConfigHandler.GetDefaultServer(ref config);
|
||||||
|
if (item == null)
|
||||||
|
{
|
||||||
|
ShowMsg(false, ResUI.CheckServerSettings);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SetCore(config, item) != 0)
|
||||||
|
{
|
||||||
|
ShowMsg(false, ResUI.CheckServerSettings);
|
||||||
|
return;
|
||||||
|
}
|
||||||
string fileName = Utils.GetPath(v2rayConfigRes);
|
string fileName = Utils.GetPath(v2rayConfigRes);
|
||||||
if (V2rayConfigHandler.GenerateClientConfig(item, fileName, false, out string msg) != 0)
|
if (V2rayConfigHandler.GenerateClientConfig(item, fileName, false, out string msg) != 0)
|
||||||
{
|
{
|
||||||
@@ -116,7 +109,11 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (string vName in lstV2ray)
|
if (coreInfo == null || coreInfo.coreExes == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (string vName in coreInfo.coreExes)
|
||||||
{
|
{
|
||||||
Process[] existing = Process.GetProcessesByName(vName);
|
Process[] existing = Process.GetProcessesByName(vName);
|
||||||
foreach (Process p in existing)
|
foreach (Process p in existing)
|
||||||
@@ -173,12 +170,10 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string V2rayFindexe()
|
private string V2rayFindexe(List<string> lstCoreTemp)
|
||||||
{
|
{
|
||||||
//查找v2ray文件是否存在
|
|
||||||
string fileName = string.Empty;
|
string fileName = string.Empty;
|
||||||
//lstV2ray.Reverse();
|
foreach (string name in lstCoreTemp)
|
||||||
foreach (string name in lstV2ray)
|
|
||||||
{
|
{
|
||||||
string vName = string.Format("{0}.exe", name);
|
string vName = string.Format("{0}.exe", name);
|
||||||
vName = Utils.GetPath(vName);
|
vName = Utils.GetPath(vName);
|
||||||
@@ -190,7 +185,7 @@ namespace v2rayN.Handler
|
|||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
{
|
{
|
||||||
string msg = string.Format(UIRes.I18N("NotFoundCore"), coreUrl);
|
string msg = string.Format(ResUI.NotFoundCore, coreInfo.coreUrl);
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
return fileName;
|
return fileName;
|
||||||
@@ -201,11 +196,11 @@ namespace v2rayN.Handler
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void V2rayStart()
|
private void V2rayStart()
|
||||||
{
|
{
|
||||||
ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString()));
|
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string fileName = V2rayFindexe();
|
string fileName = V2rayFindexe(coreInfo.coreExes);
|
||||||
if (fileName == "") return;
|
if (fileName == "") return;
|
||||||
|
|
||||||
Process p = new Process
|
Process p = new Process
|
||||||
@@ -213,6 +208,7 @@ namespace v2rayN.Handler
|
|||||||
StartInfo = new ProcessStartInfo
|
StartInfo = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = fileName,
|
FileName = fileName,
|
||||||
|
Arguments = coreInfo.arguments,
|
||||||
WorkingDirectory = Utils.StartupPath(),
|
WorkingDirectory = Utils.StartupPath(),
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
@@ -254,11 +250,11 @@ namespace v2rayN.Handler
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private int V2rayStartNew(string configStr)
|
private int V2rayStartNew(string configStr)
|
||||||
{
|
{
|
||||||
ShowMsg(false, string.Format(UIRes.I18N("StartService"), DateTime.Now.ToString()));
|
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string fileName = V2rayFindexe();
|
string fileName = V2rayFindexe(new List<string> { "xray" });
|
||||||
if (fileName == "") return -1;
|
if (fileName == "") return -1;
|
||||||
|
|
||||||
Process p = new Process
|
Process p = new Process
|
||||||
@@ -334,5 +330,22 @@ namespace v2rayN.Handler
|
|||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int SetCore(Config config, VmessItem item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
var coreType = LazyConfig.Instance.GetCoreType(item, item.configType);
|
||||||
|
|
||||||
|
coreInfo = LazyConfig.Instance.GetCoreInfo(coreType);
|
||||||
|
|
||||||
|
if (coreInfo == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
namespace v2rayN.Mode
|
namespace v2rayN.Mode
|
||||||
{
|
{
|
||||||
@@ -52,14 +52,6 @@ namespace v2rayN.Mode
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 允许来自局域网的连接
|
|
||||||
/// </summary>
|
|
||||||
public bool allowLANConn
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 启用实时网速和流量统计
|
/// 启用实时网速和流量统计
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -120,10 +112,6 @@ namespace v2rayN.Mode
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ECoreType coreType
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
public bool ignoreGeoUpdateCore
|
public bool ignoreGeoUpdateCore
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
@@ -136,17 +124,19 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
public string systemProxyAdvancedProtocol { get; set; }
|
||||||
|
|
||||||
|
public int autoUpdateInterval { get; set; } = 0;
|
||||||
|
|
||||||
public int autoUpdateInterval
|
public int autoUpdateSubInterval { get; set; } = 0;
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
} = 0;
|
|
||||||
|
|
||||||
public bool enableSecurityProtocolTls13
|
public bool enableSecurityProtocolTls13
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int trayMenuServersLimit { get; set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region other entities
|
#region other entities
|
||||||
@@ -208,30 +198,39 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<CoreTypeItem> coreTypeItem
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region function
|
#region function
|
||||||
|
|
||||||
public int GetLocalPort(string protocol)
|
public int GetLocalPort(string protocol)
|
||||||
{
|
{
|
||||||
if (protocol == Global.InboundHttp)
|
int localPort = inbound.FirstOrDefault(t => t.protocol == Global.InboundSocks).localPort;
|
||||||
{
|
|
||||||
return GetLocalPort(Global.InboundSocks) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (protocol == Global.InboundSocks)
|
||||||
|
{
|
||||||
|
return localPort;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundHttp)
|
||||||
|
{
|
||||||
|
return localPort + 1;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundSocks2)
|
||||||
|
{
|
||||||
|
return localPort + 2;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundHttp2)
|
||||||
|
{
|
||||||
|
return localPort + 3;
|
||||||
|
}
|
||||||
else if (protocol == "speedtest")
|
else if (protocol == "speedtest")
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 103;
|
return localPort + 103;
|
||||||
}
|
|
||||||
|
|
||||||
int localPort = 0;
|
|
||||||
foreach (InItem inItem in inbound)
|
|
||||||
{
|
|
||||||
if (inItem.protocol.Equals(protocol))
|
|
||||||
{
|
|
||||||
localPort = inItem.localPort;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return localPort;
|
return localPort;
|
||||||
}
|
}
|
||||||
@@ -254,16 +253,6 @@ namespace v2rayN.Mode
|
|||||||
return vmess.FirstOrDefault(it => it.indexId == id);
|
return vmess.FirstOrDefault(it => it.indexId == id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> GetShadowsocksSecuritys()
|
|
||||||
{
|
|
||||||
if (coreType == ECoreType.v2fly_core)
|
|
||||||
{
|
|
||||||
return Global.ssSecuritys;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Global.ssSecuritysInXray;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsActiveNode(VmessItem item)
|
public bool IsActiveNode(VmessItem item)
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(item.indexId) && item.indexId == indexId)
|
if (!Utils.IsNullOrEmpty(item.indexId) && item.indexId == indexId)
|
||||||
@@ -293,7 +282,7 @@ namespace v2rayN.Mode
|
|||||||
public VmessItem()
|
public VmessItem()
|
||||||
{
|
{
|
||||||
indexId = string.Empty;
|
indexId = string.Empty;
|
||||||
configType = (int)EConfigType.Vmess;
|
configType = EConfigType.Vmess;
|
||||||
configVersion = 2;
|
configVersion = 2;
|
||||||
sort = 0;
|
sort = 0;
|
||||||
address = string.Empty;
|
address = string.Empty;
|
||||||
@@ -317,7 +306,7 @@ namespace v2rayN.Mode
|
|||||||
#region function
|
#region function
|
||||||
public string GetSummary()
|
public string GetSummary()
|
||||||
{
|
{
|
||||||
string summary = string.Format("[{0}] ", ((EConfigType)configType).ToString());
|
string summary = string.Format("[{0}] ", (configType).ToString());
|
||||||
string[] arrAddr = address.Split('.');
|
string[] arrAddr = address.Split('.');
|
||||||
string addr;
|
string addr;
|
||||||
if (arrAddr.Length > 2)
|
if (arrAddr.Length > 2)
|
||||||
@@ -334,34 +323,16 @@ namespace v2rayN.Mode
|
|||||||
}
|
}
|
||||||
switch (configType)
|
switch (configType)
|
||||||
{
|
{
|
||||||
case (int)EConfigType.Vmess:
|
case EConfigType.Vmess:
|
||||||
case (int)EConfigType.Shadowsocks:
|
case EConfigType.Shadowsocks:
|
||||||
case (int)EConfigType.Socks:
|
case EConfigType.Socks:
|
||||||
case (int)EConfigType.VLESS:
|
case EConfigType.VLESS:
|
||||||
case (int)EConfigType.Trojan:
|
case EConfigType.Trojan:
|
||||||
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
summary += string.Format("{0}", remarks);
|
summary += string.Format("{0}", remarks);
|
||||||
break;
|
break;
|
||||||
//case (int)EConfigType.Vmess:
|
|
||||||
// summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
|
||||||
// break;
|
|
||||||
//case (int)EConfigType.Shadowsocks:
|
|
||||||
// summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
|
||||||
// break;
|
|
||||||
//case (int)EConfigType.Socks:
|
|
||||||
// summary += string.Format("{0}({1}:{2})", remarks, addr, port);
|
|
||||||
// break;
|
|
||||||
//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);
|
|
||||||
// break;
|
|
||||||
}
|
}
|
||||||
return summary;
|
return summary;
|
||||||
}
|
}
|
||||||
@@ -372,19 +343,31 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
return subRemarks;
|
return subRemarks;
|
||||||
}
|
}
|
||||||
foreach (SubItem sub in config.subItem)
|
|
||||||
{
|
|
||||||
if (sub.id.EndsWith(subid))
|
|
||||||
{
|
|
||||||
return sub.remarks;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (subid.Length <= 4)
|
if (subid.Length <= 4)
|
||||||
{
|
{
|
||||||
return subid;
|
return subid;
|
||||||
}
|
}
|
||||||
|
var sub = config.subItem.FirstOrDefault(t => t.id == subid);
|
||||||
|
if (sub != null)
|
||||||
|
{
|
||||||
|
return sub.remarks;
|
||||||
|
}
|
||||||
return subid.Substring(0, 4);
|
return subid.Substring(0, 4);
|
||||||
}
|
}
|
||||||
|
public string GetGroupRemarks(Config config)
|
||||||
|
{
|
||||||
|
string subRemarks = string.Empty;
|
||||||
|
if (Utils.IsNullOrEmpty(groupId))
|
||||||
|
{
|
||||||
|
return subRemarks;
|
||||||
|
}
|
||||||
|
var group = config.groupItem.FirstOrDefault(t => t.id == groupId);
|
||||||
|
if (group != null)
|
||||||
|
{
|
||||||
|
return group.remarks;
|
||||||
|
}
|
||||||
|
return groupId.Substring(0, 4);
|
||||||
|
}
|
||||||
|
|
||||||
public List<string> GetAlpn()
|
public List<string> GetAlpn()
|
||||||
{
|
{
|
||||||
@@ -420,7 +403,7 @@ namespace v2rayN.Mode
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// config type(1=normal,2=custom)
|
/// config type(1=normal,2=custom)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int configType
|
public EConfigType configType
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
@@ -570,6 +553,10 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
} = string.Empty;
|
} = string.Empty;
|
||||||
|
public ECoreType? coreType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
@@ -603,6 +590,13 @@ namespace v2rayN.Mode
|
|||||||
/// 开启流量探测
|
/// 开启流量探测
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool sniffingEnabled { get; set; } = true;
|
public bool sniffingEnabled { get; set; } = true;
|
||||||
|
|
||||||
|
public bool allowLANConn { get; set; }
|
||||||
|
|
||||||
|
public string user { get; set; }
|
||||||
|
|
||||||
|
public string pass { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
@@ -714,7 +708,9 @@ namespace v2rayN.Mode
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
public System.Drawing.Size mainSize
|
public Point mainLocation { get; set; }
|
||||||
|
|
||||||
|
public Size mainSize
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
@@ -781,5 +777,24 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
public int sort
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class CoreTypeItem
|
||||||
|
{
|
||||||
|
public EConfigType configType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ECoreType coreType
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
19
v2rayN/v2rayN/Mode/CoreInfo.cs
Normal file
19
v2rayN/v2rayN/Mode/CoreInfo.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class CoreInfo
|
||||||
|
{
|
||||||
|
public ECoreType coreType { get; set; }
|
||||||
|
|
||||||
|
public List<string> coreExes { get; set; }
|
||||||
|
|
||||||
|
public string arguments { get; set; }
|
||||||
|
|
||||||
|
public string coreUrl { get; set; }
|
||||||
|
|
||||||
|
public string match { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,12 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
public enum ECoreType
|
public enum ECoreType
|
||||||
{
|
{
|
||||||
v2fly_core = 0,
|
v2fly = 1,
|
||||||
Xray_core = 1
|
Xray = 2,
|
||||||
|
clash = 11,
|
||||||
|
clash_meta = 12,
|
||||||
|
hysteria = 21,
|
||||||
|
naiveproxy = 22,
|
||||||
|
v2rayN = 99
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ namespace v2rayN.Mode
|
|||||||
Top = 1,
|
Top = 1,
|
||||||
Up = 2,
|
Up = 2,
|
||||||
Down = 3,
|
Down = 3,
|
||||||
Bottom = 4
|
Bottom = 4,
|
||||||
|
Position = 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
v2rayN/v2rayN/Mode/ESpeedActionType.cs
Normal file
11
v2rayN/v2rayN/Mode/ESpeedActionType.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public enum ESpeedActionType
|
||||||
|
{
|
||||||
|
Ping,
|
||||||
|
Tcping,
|
||||||
|
Realping,
|
||||||
|
Speedtest
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ namespace v2rayN.Mode
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
public int configType
|
public EConfigType configType
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|||||||
22
v2rayN/v2rayN/Mode/SsSIP008.cs
Normal file
22
v2rayN/v2rayN/Mode/SsSIP008.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace v2rayN.Mode
|
||||||
|
{
|
||||||
|
public class SsSIP008
|
||||||
|
{
|
||||||
|
public List<SsServer> servers { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class SsServer
|
||||||
|
{
|
||||||
|
public string remarks { get; set; }
|
||||||
|
public string server { get; set; }
|
||||||
|
public string server_port { get; set; }
|
||||||
|
public string method { get; set; }
|
||||||
|
public string password { get; set; }
|
||||||
|
public string plugin { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -141,6 +141,7 @@ namespace v2rayN.Mode
|
|||||||
|
|
||||||
public bool allowTransparent { get; set; }
|
public bool allowTransparent { get; set; }
|
||||||
|
|
||||||
|
public List<AccountsItem> accounts { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class UsersItem
|
public class UsersItem
|
||||||
@@ -540,4 +541,15 @@ namespace v2rayN.Mode
|
|||||||
public bool multiMode { get; set; }
|
public bool multiMode { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class AccountsItem
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string user { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string pass { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
Logging.Setup();
|
Logging.Setup();
|
||||||
Utils.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}");
|
Utils.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}");
|
||||||
|
Logging.ClearLogs();
|
||||||
|
|
||||||
//设置语言环境
|
//设置语言环境
|
||||||
string lang = Utils.RegReadValue(Global.MyRegPath, Global.MyRegKeyLanguage, "zh-Hans");
|
string lang = Utils.RegReadValue(Global.MyRegPath, Global.MyRegKeyLanguage, "zh-Hans");
|
||||||
@@ -42,7 +43,7 @@ namespace v2rayN
|
|||||||
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
Application.Run(new MainForm());
|
Application.Run(new MainForm());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
|
|||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("v2rayN")]
|
[assembly: AssemblyProduct("v2rayN")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2019-2020 (GPLv3)")]
|
[assembly: AssemblyCopyright("Copyright © 2019-2022 (GPLv3)")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
|||||||
// 方法是按如下所示使用“*”:
|
// 方法是按如下所示使用“*”:
|
||||||
//[assembly: AssemblyVersion("1.0.*")]
|
//[assembly: AssemblyVersion("1.0.*")]
|
||||||
//[assembly: AssemblyVersion("1.0.0")]
|
//[assembly: AssemblyVersion("1.0.0")]
|
||||||
[assembly: AssemblyFileVersion("5.2")]
|
[assembly: AssemblyFileVersion("5.23")]
|
||||||
|
|||||||
30
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
30
v2rayN/v2rayN/Properties/Resources.Designer.cs
generated
@@ -110,6 +110,36 @@ namespace v2rayN.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon NotifyIcon1 {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("NotifyIcon1", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon NotifyIcon2 {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("NotifyIcon2", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon NotifyIcon3 {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("NotifyIcon3", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -157,4 +157,13 @@
|
|||||||
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="NotifyIcon1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\NotifyIcon1.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="NotifyIcon2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\NotifyIcon2.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="NotifyIcon3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\NotifyIcon3.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
BIN
v2rayN/v2rayN/Resources/NotifyIcon1.ico
Normal file
BIN
v2rayN/v2rayN/Resources/NotifyIcon1.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
BIN
v2rayN/v2rayN/Resources/NotifyIcon2.ico
Normal file
BIN
v2rayN/v2rayN/Resources/NotifyIcon2.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
v2rayN/v2rayN/Resources/NotifyIcon3.ico
Normal file
BIN
v2rayN/v2rayN/Resources/NotifyIcon3.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
60
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
60
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
@@ -115,7 +115,7 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound. 的本地化字符串。
|
/// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. If you want to use the system proxy, please modify the listening port manually. 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string CustomServerTips {
|
internal static string CustomServerTips {
|
||||||
get {
|
get {
|
||||||
@@ -249,6 +249,15 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Please browse to import server configuration 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string FillServerAddressCustom {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("FillServerAddressCustom", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Please fill in the user ID 的本地化字符串。
|
/// 查找类似 Please fill in the user ID 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -312,6 +321,24 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 LAN 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string LabLAN {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabLAN", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Local 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string LabLocal {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabLocal", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Address 的本地化字符串。
|
/// 查找类似 Address 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -610,7 +637,7 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Failed to get subscription content 的本地化字符串。
|
/// 查找类似 Invalid subscription content 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string MsgSubscriptionDecodingFailed {
|
internal static string MsgSubscriptionDecodingFailed {
|
||||||
get {
|
get {
|
||||||
@@ -870,6 +897,15 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Speed Test... 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string Speedtesting {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Speedtesting", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 PAC failed to start. Run it with Admin right. 的本地化字符串。
|
/// 查找类似 PAC failed to start. Run it with Admin right. 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -926,7 +962,16 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 The ping of current service: {0} 的本地化字符串。
|
/// 查找类似 System proxy 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string SystemProxy {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("SystemProxy", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 The ping of current service: {0} ms 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string TestMeOutput {
|
internal static string TestMeOutput {
|
||||||
get {
|
get {
|
||||||
@@ -934,6 +979,15 @@ namespace v2rayN.Resx {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Too many servers, please open the main interface 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string TooManyServersTip {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("TooManyServersTip", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 *tcp camouflage type 的本地化字符串。
|
/// 查找类似 *tcp camouflage type 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -130,7 +130,7 @@
|
|||||||
<value> configuration format is incorrect</value>
|
<value> configuration format is incorrect</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CustomServerTips" xml:space="preserve">
|
<data name="CustomServerTips" xml:space="preserve">
|
||||||
<value>Note that custom configuration relies entirely on your own configuration and does not work with all settings. The system agent is available when the socks port is equal to the port in the settings in the custom configuration inbound.</value>
|
<value>Note that custom configuration relies entirely on your own configuration and does not work with all settings. If you want to use the system proxy, please modify the listening port manually.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Downloading" xml:space="preserve">
|
<data name="Downloading" xml:space="preserve">
|
||||||
<value>Downloading...</value>
|
<value>Downloading...</value>
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
<value>Start updating PAC...</value>
|
<value>Start updating PAC...</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
||||||
<value>Failed to get subscription content</value>
|
<value>Invalid subscription content</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgUnpacking" xml:space="preserve">
|
<data name="MsgUnpacking" xml:space="preserve">
|
||||||
<value>is unpacking...</value>
|
<value>is unpacking...</value>
|
||||||
@@ -356,7 +356,7 @@
|
|||||||
<value>Scan import URL successfully</value>
|
<value>Scan import URL successfully</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TestMeOutput" xml:space="preserve">
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
<value>The ping of current service: {0}</value>
|
<value>The ping of current service: {0} ms</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OperationSuccess" xml:space="preserve">
|
<data name="OperationSuccess" xml:space="preserve">
|
||||||
<value>Operation success</value>
|
<value>Operation success</value>
|
||||||
@@ -451,4 +451,22 @@
|
|||||||
<data name="AllGroupServers" xml:space="preserve">
|
<data name="AllGroupServers" xml:space="preserve">
|
||||||
<value>All servers</value>
|
<value>All servers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FillServerAddressCustom" xml:space="preserve">
|
||||||
|
<value>Please browse to import server configuration</value>
|
||||||
|
</data>
|
||||||
|
<data name="SystemProxy" xml:space="preserve">
|
||||||
|
<value>System proxy</value>
|
||||||
|
</data>
|
||||||
|
<data name="Speedtesting" xml:space="preserve">
|
||||||
|
<value>Speed Test...</value>
|
||||||
|
</data>
|
||||||
|
<data name="TooManyServersTip" xml:space="preserve">
|
||||||
|
<value>Too many servers, please open the main interface</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLAN" xml:space="preserve">
|
||||||
|
<value>LAN</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLocal" xml:space="preserve">
|
||||||
|
<value>Local</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
<value>配置格式不正确</value>
|
<value>配置格式不正确</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CustomServerTips" xml:space="preserve">
|
<data name="CustomServerTips" xml:space="preserve">
|
||||||
<value>注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。在自定义配置inbound中有socks port等于设置中的port时,系统代理才可用</value>
|
<value>注意,自定义配置完全依赖您自己的配置,不能使用所有设置功能。如需使用系统代理请手工修改监听端口。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Downloading" xml:space="preserve">
|
<data name="Downloading" xml:space="preserve">
|
||||||
<value>下载开始...</value>
|
<value>下载开始...</value>
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
<value>开始更新 PAC...</value>
|
<value>开始更新 PAC...</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
<data name="MsgSubscriptionDecodingFailed" xml:space="preserve">
|
||||||
<value>订阅内容获取失败</value>
|
<value>无效的订阅内容</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MsgUnpacking" xml:space="preserve">
|
<data name="MsgUnpacking" xml:space="preserve">
|
||||||
<value>正在解压......</value>
|
<value>正在解压......</value>
|
||||||
@@ -356,7 +356,7 @@
|
|||||||
<value>扫描导入URL成功</value>
|
<value>扫描导入URL成功</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TestMeOutput" xml:space="preserve">
|
<data name="TestMeOutput" xml:space="preserve">
|
||||||
<value>当前服务的真连接延迟: {0}</value>
|
<value>当前服务的真连接延迟: {0} ms</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OperationSuccess" xml:space="preserve">
|
<data name="OperationSuccess" xml:space="preserve">
|
||||||
<value>操作成功</value>
|
<value>操作成功</value>
|
||||||
@@ -451,4 +451,22 @@
|
|||||||
<data name="AllGroupServers" xml:space="preserve">
|
<data name="AllGroupServers" xml:space="preserve">
|
||||||
<value>所有服务器</value>
|
<value>所有服务器</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FillServerAddressCustom" xml:space="preserve">
|
||||||
|
<value>请浏览导入服务器配置</value>
|
||||||
|
</data>
|
||||||
|
<data name="SystemProxy" xml:space="preserve">
|
||||||
|
<value>系统代理</value>
|
||||||
|
</data>
|
||||||
|
<data name="Speedtesting" xml:space="preserve">
|
||||||
|
<value>测速中...</value>
|
||||||
|
</data>
|
||||||
|
<data name="TooManyServersTip" xml:space="preserve">
|
||||||
|
<value>服务器太多,请打开主界面操作</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLAN" xml:space="preserve">
|
||||||
|
<value>局域网</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLocal" xml:space="preserve">
|
||||||
|
<value>本地</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -24,7 +24,23 @@
|
|||||||
{
|
{
|
||||||
"tag": "tag2",
|
"tag": "tag2",
|
||||||
"port": 10809,
|
"port": 10809,
|
||||||
"protocol": "socks",
|
"protocol": "http",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"settings": {
|
||||||
|
"allowTransparent": false
|
||||||
|
},
|
||||||
|
"sniffing": {
|
||||||
|
"enabled": true,
|
||||||
|
"destOverride": [
|
||||||
|
"http",
|
||||||
|
"tls"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "tag3",
|
||||||
|
"port": 10809,
|
||||||
|
"protocol": "http",
|
||||||
"listen": "127.0.0.1",
|
"listen": "127.0.0.1",
|
||||||
"settings": {
|
"settings": {
|
||||||
"allowTransparent": false
|
"allowTransparent": false
|
||||||
|
|||||||
18
v2rayN/v2rayN/Sample/SampleInbound.txt
Normal file
18
v2rayN/v2rayN/Sample/SampleInbound.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"tag": "tag1",
|
||||||
|
"port": 10808,
|
||||||
|
"protocol": "socks",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"settings": {
|
||||||
|
"auth": "noauth",
|
||||||
|
"udp": true,
|
||||||
|
"allowTransparent": false
|
||||||
|
},
|
||||||
|
"sniffing": {
|
||||||
|
"enabled": true,
|
||||||
|
"destOverride": [
|
||||||
|
"http",
|
||||||
|
"tls"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,9 @@ using log4net.Appender;
|
|||||||
using log4net.Core;
|
using log4net.Core;
|
||||||
using log4net.Layout;
|
using log4net.Layout;
|
||||||
using log4net.Repository.Hierarchy;
|
using log4net.Repository.Hierarchy;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace v2rayN.Tool
|
namespace v2rayN.Tool
|
||||||
{
|
{
|
||||||
@@ -15,7 +18,7 @@ namespace v2rayN.Tool
|
|||||||
PatternLayout patternLayout = new PatternLayout();
|
PatternLayout patternLayout = new PatternLayout();
|
||||||
patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
|
patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
|
||||||
patternLayout.ActivateOptions();
|
patternLayout.ActivateOptions();
|
||||||
|
|
||||||
RollingFileAppender roller = new RollingFileAppender();
|
RollingFileAppender roller = new RollingFileAppender();
|
||||||
roller.AppendToFile = true;
|
roller.AppendToFile = true;
|
||||||
roller.RollingStyle = RollingFileAppender.RollingMode.Date;
|
roller.RollingStyle = RollingFileAppender.RollingMode.Date;
|
||||||
@@ -30,8 +33,34 @@ namespace v2rayN.Tool
|
|||||||
memory.ActivateOptions();
|
memory.ActivateOptions();
|
||||||
hierarchy.Root.AddAppender(memory);
|
hierarchy.Root.AddAppender(memory);
|
||||||
|
|
||||||
hierarchy.Root.Level = Level.Info;
|
hierarchy.Root.Level = Level.Debug;
|
||||||
hierarchy.Configured = true;
|
hierarchy.Configured = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ClearLogs()
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var now = DateTime.Now.AddMonths(-1);
|
||||||
|
var dir = Utils.GetPath(@"guiLogs\");
|
||||||
|
var files = Directory.GetFiles(dir, "*.txt");
|
||||||
|
foreach (var filePath in files)
|
||||||
|
{
|
||||||
|
var file = new FileInfo(filePath);
|
||||||
|
if (file.CreationTime < now)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
file.Delete();
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Resources;
|
|
||||||
|
|
||||||
namespace v2rayN
|
|
||||||
{
|
|
||||||
public class UIRes
|
|
||||||
{
|
|
||||||
static ResourceManager res = new ResourceManager("v2rayN.Resx.ResUI", Assembly.GetExecutingAssembly());
|
|
||||||
|
|
||||||
static string LoadString(ResourceManager resMgr, string key)
|
|
||||||
{
|
|
||||||
string value = resMgr.GetString(key);
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new KeyNotFoundException($"key: {key}");
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string I18N(string key)
|
|
||||||
{
|
|
||||||
return LoadString(res, key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -219,6 +219,26 @@ namespace v2rayN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 逗号分隔的字符串,先排序后转List<string>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="str"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static List<string> String2ListSorted(string str)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
str = str.Replace(Environment.NewLine, "");
|
||||||
|
List<string> list = new List<string>(str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
|
||||||
|
return list.OrderBy(x => x).ToList();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
SaveLog(ex.Message, ex);
|
||||||
|
return new List<string>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Base64编码
|
/// Base64编码
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -370,7 +390,8 @@ namespace v2rayN
|
|||||||
|
|
||||||
public static string UrlEncode(string url)
|
public static string UrlEncode(string url)
|
||||||
{
|
{
|
||||||
return HttpUtility.UrlEncode(url);
|
return Uri.EscapeDataString(url);
|
||||||
|
//return HttpUtility.UrlEncode(url);
|
||||||
}
|
}
|
||||||
public static string UrlDecode(string url)
|
public static string UrlDecode(string url)
|
||||||
{
|
{
|
||||||
@@ -732,16 +753,11 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
if (enableSecurityProtocolTls13)
|
if (enableSecurityProtocolTls13)
|
||||||
{
|
{
|
||||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
|
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;
|
||||||
| SecurityProtocolType.Tls11
|
|
||||||
| SecurityProtocolType.Tls12
|
|
||||||
| SecurityProtocolType.Tls13;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
|
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
|
||||||
| SecurityProtocolType.Tls11
|
|
||||||
| SecurityProtocolType.Tls12;
|
|
||||||
}
|
}
|
||||||
ServicePointManager.DefaultConnectionLimit = 256;
|
ServicePointManager.DefaultConnectionLimit = 256;
|
||||||
}
|
}
|
||||||
@@ -943,19 +959,21 @@ namespace v2rayN
|
|||||||
#region TempPath
|
#region TempPath
|
||||||
|
|
||||||
// return path to store temporary files
|
// return path to store temporary files
|
||||||
public static string GetTempPath()
|
public static string GetTempPath(string filename = "")
|
||||||
{
|
{
|
||||||
string _tempPath = Path.Combine(StartupPath(), "v2ray_win_temp");
|
string _tempPath = Path.Combine(StartupPath(), "v2ray_win_temp");
|
||||||
if (!Directory.Exists(_tempPath))
|
if (!Directory.Exists(_tempPath))
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(_tempPath);
|
Directory.CreateDirectory(_tempPath);
|
||||||
}
|
}
|
||||||
return _tempPath;
|
if (string.IsNullOrEmpty(filename))
|
||||||
}
|
{
|
||||||
|
return _tempPath;
|
||||||
public static string GetTempPath(string filename)
|
}
|
||||||
{
|
else
|
||||||
return Path.Combine(GetTempPath(), filename);
|
{
|
||||||
|
return Path.Combine(_tempPath, filename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string UnGzip(byte[] buf)
|
public static string UnGzip(byte[] buf)
|
||||||
@@ -970,6 +988,32 @@ namespace v2rayN
|
|||||||
return Encoding.UTF8.GetString(sb.ToArray());
|
return Encoding.UTF8.GetString(sb.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetBackupPath(string filename)
|
||||||
|
{
|
||||||
|
string _tempPath = Path.Combine(StartupPath(), "guiBackups");
|
||||||
|
if (!Directory.Exists(_tempPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(_tempPath);
|
||||||
|
}
|
||||||
|
return Path.Combine(_tempPath, filename);
|
||||||
|
}
|
||||||
|
public static string GetConfigPath(string filename = "")
|
||||||
|
{
|
||||||
|
string _tempPath = Path.Combine(StartupPath(), "guiConfigs");
|
||||||
|
if (!Directory.Exists(_tempPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(_tempPath);
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(filename))
|
||||||
|
{
|
||||||
|
return _tempPath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Path.Combine(_tempPath, filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Log
|
#region Log
|
||||||
|
|||||||
@@ -99,33 +99,22 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Forms\AddServer6Form.cs">
|
<Compile Include="Base\HttpClientHelper.cs" />
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer6Form.Designer.cs">
|
|
||||||
<DependentUpon>AddServer6Form.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer4Form.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer4Form.Designer.cs">
|
|
||||||
<DependentUpon>AddServer4Form.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Base\ListViewFlickerFree.cs">
|
<Compile Include="Base\ListViewFlickerFree.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Forms\AddServer5Form.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer5Form.Designer.cs">
|
|
||||||
<DependentUpon>AddServer5Form.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\BaseServerForm.cs">
|
<Compile Include="Forms\BaseServerForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Forms\BaseServerForm.Designer.cs">
|
<Compile Include="Forms\BaseServerForm.Designer.cs">
|
||||||
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\MainMsgControl.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\MainMsgControl.Designer.cs">
|
||||||
|
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\MsgFilterSetForm.cs">
|
<Compile Include="Forms\MsgFilterSetForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -196,12 +185,6 @@
|
|||||||
<Compile Include="Forms\AddServer2Form.Designer.cs">
|
<Compile Include="Forms\AddServer2Form.Designer.cs">
|
||||||
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Forms\AddServer3Form.cs">
|
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\AddServer3Form.Designer.cs">
|
|
||||||
<DependentUpon>AddServer3Form.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Forms\QRCodeControl.cs">
|
<Compile Include="Forms\QRCodeControl.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -219,10 +202,8 @@
|
|||||||
<Compile Include="Handler\StatisticsHandler.cs" />
|
<Compile Include="Handler\StatisticsHandler.cs" />
|
||||||
<Compile Include="Handler\DownloadHandle.cs" />
|
<Compile Include="Handler\DownloadHandle.cs" />
|
||||||
<Compile Include="Handler\ProxySetting.cs" />
|
<Compile Include="Handler\ProxySetting.cs" />
|
||||||
<Compile Include="Base\WebClientEx.cs">
|
|
||||||
<SubType>Component</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Handler\SysProxyHandle.cs" />
|
<Compile Include="Handler\SysProxyHandle.cs" />
|
||||||
|
<Compile Include="Mode\ESpeedActionType.cs" />
|
||||||
<Compile Include="Mode\EGlobalHotkey.cs" />
|
<Compile Include="Mode\EGlobalHotkey.cs" />
|
||||||
<Compile Include="Mode\ECoreType.cs" />
|
<Compile Include="Mode\ECoreType.cs" />
|
||||||
<Compile Include="Mode\ESysProxyType.cs" />
|
<Compile Include="Mode\ESysProxyType.cs" />
|
||||||
@@ -231,9 +212,11 @@
|
|||||||
<Compile Include="Mode\RoutingItem.cs" />
|
<Compile Include="Mode\RoutingItem.cs" />
|
||||||
<Compile Include="Mode\RulesItem.cs" />
|
<Compile Include="Mode\RulesItem.cs" />
|
||||||
<Compile Include="Mode\ServerStatistics.cs" />
|
<Compile Include="Mode\ServerStatistics.cs" />
|
||||||
|
<Compile Include="Mode\CoreInfo.cs" />
|
||||||
<Compile Include="Mode\SysproxyConfig.cs" />
|
<Compile Include="Mode\SysproxyConfig.cs" />
|
||||||
<Compile Include="Mode\EConfigType.cs" />
|
<Compile Include="Mode\EConfigType.cs" />
|
||||||
<Compile Include="Mode\ServerTestItem.cs" />
|
<Compile Include="Mode\ServerTestItem.cs" />
|
||||||
|
<Compile Include="Mode\SsSIP008.cs" />
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
@@ -284,7 +267,6 @@
|
|||||||
<Compile Include="Tool\Job.cs" />
|
<Compile Include="Tool\Job.cs" />
|
||||||
<Compile Include="Tool\Logging.cs" />
|
<Compile Include="Tool\Logging.cs" />
|
||||||
<Compile Include="Tool\QueryableExtension.cs" />
|
<Compile Include="Tool\QueryableExtension.cs" />
|
||||||
<Compile Include="Tool\UIRes.cs" />
|
|
||||||
<Compile Include="Tool\UI.cs" />
|
<Compile Include="Tool\UI.cs" />
|
||||||
<Compile Include="Tool\Utils.cs" />
|
<Compile Include="Tool\Utils.cs" />
|
||||||
<Compile Include="Handler\V2rayConfigHandler.cs" />
|
<Compile Include="Handler\V2rayConfigHandler.cs" />
|
||||||
@@ -292,34 +274,6 @@
|
|||||||
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Forms\AddServer6Form.resx">
|
|
||||||
<DependentUpon>AddServer6Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer6Form.zh-Hans.resx">
|
|
||||||
<DependentUpon>AddServer6Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer4Form.resx">
|
|
||||||
<DependentUpon>AddServer4Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer4Form.zh-Hans.resx">
|
|
||||||
<DependentUpon>AddServer4Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer3Form.zh-Hans.resx">
|
|
||||||
<DependentUpon>AddServer3Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer5Form.resx">
|
|
||||||
<DependentUpon>AddServer5Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServer5Form.zh-Hans.resx">
|
|
||||||
<DependentUpon>AddServer5Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\AddServerForm.zh-Hans.resx">
|
<EmbeddedResource Include="Forms\AddServerForm.zh-Hans.resx">
|
||||||
<DependentUpon>AddServerForm.cs</DependentUpon>
|
<DependentUpon>AddServerForm.cs</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
@@ -339,6 +293,12 @@
|
|||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\MainMsgControl.resx">
|
||||||
|
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\MainMsgControl.zh-Hans.resx">
|
||||||
|
<DependentUpon>MainMsgControl.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Forms\MsgFilterSetForm.resx">
|
<EmbeddedResource Include="Forms\MsgFilterSetForm.resx">
|
||||||
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@@ -429,10 +389,6 @@
|
|||||||
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
<DependentUpon>AddServer2Form.cs</DependentUpon>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Forms\AddServer3Form.resx">
|
|
||||||
<DependentUpon>AddServer3Form.cs</DependentUpon>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Include="Forms\SubSettingForm.zh-Hans.resx">
|
<EmbeddedResource Include="Forms\SubSettingForm.zh-Hans.resx">
|
||||||
<DependentUpon>SubSettingForm.cs</DependentUpon>
|
<DependentUpon>SubSettingForm.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@@ -519,6 +475,10 @@
|
|||||||
<None Include="Resources\minimize.png" />
|
<None Include="Resources\minimize.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Include="Resources\NotifyIcon1.ico" />
|
||||||
|
<Content Include="Resources\NotifyIcon2.ico" />
|
||||||
|
<Content Include="Resources\NotifyIcon3.ico" />
|
||||||
|
<EmbeddedResource Include="Sample\SampleInbound.txt" />
|
||||||
<None Include="Resources\share.png" />
|
<None Include="Resources\share.png" />
|
||||||
<None Include="Resources\promotion.png" />
|
<None Include="Resources\promotion.png" />
|
||||||
<None Include="Resources\sub.png" />
|
<None Include="Resources\sub.png" />
|
||||||
@@ -529,13 +489,13 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Google.Protobuf">
|
<PackageReference Include="Google.Protobuf">
|
||||||
<Version>3.19.4</Version>
|
<Version>3.20.0</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Grpc.Core">
|
<PackageReference Include="Grpc.Core">
|
||||||
<Version>2.44.0</Version>
|
<Version>2.45.0</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Grpc.Tools">
|
<PackageReference Include="Grpc.Tools">
|
||||||
<Version>2.44.0</Version>
|
<Version>2.45.0</Version>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 60 KiB |
Reference in New Issue
Block a user