Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2d538d02a | ||
|
|
b9435a4b01 | ||
|
|
d27566686c | ||
|
|
ca883c164d | ||
|
|
0f6cd76f28 | ||
|
|
7778af65aa | ||
|
|
828246130b | ||
|
|
4eb1801f50 | ||
|
|
80b68dcf84 | ||
|
|
685baa576b | ||
|
|
7cdead8cb1 | ||
|
|
f220825b80 | ||
|
|
2b00490dd6 | ||
|
|
d361afa3f3 | ||
|
|
8d5bd5a80c | ||
|
|
002283899f | ||
|
|
206b440966 | ||
|
|
b5b5eb25a1 | ||
|
|
f84e538b6a | ||
|
|
5b9cdec156 | ||
|
|
cf0bd7f1e6 | ||
|
|
f3a86a2173 | ||
|
|
0a1d4d5193 | ||
|
|
88e2288298 | ||
|
|
fec47d4b72 | ||
|
|
f7f23e7980 | ||
|
|
32100db3fc |
7
v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
generated
7
v2rayN/v2rayN/Forms/AddServer3Form.Designer.cs
generated
@@ -83,13 +83,6 @@
|
||||
//
|
||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbSecurity.FormattingEnabled = true;
|
||||
this.cmbSecurity.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbSecurity.Items"),
|
||||
resources.GetString("cmbSecurity.Items1"),
|
||||
resources.GetString("cmbSecurity.Items2"),
|
||||
resources.GetString("cmbSecurity.Items3"),
|
||||
resources.GetString("cmbSecurity.Items4"),
|
||||
resources.GetString("cmbSecurity.Items5")});
|
||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
||||
this.cmbSecurity.Name = "cmbSecurity";
|
||||
//
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace v2rayN.Forms
|
||||
|
||||
private void AddServer3Form_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbSecurity.Items.AddRange(Global.ssSecuritys.ToArray());
|
||||
if (EditIndex >= 0)
|
||||
{
|
||||
vmessItem = config.vmess[EditIndex];
|
||||
|
||||
@@ -174,24 +174,6 @@
|
||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items" xml:space="preserve">
|
||||
<value>aes-256-gcm</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items1" xml:space="preserve">
|
||||
<value>aes-128-gcm</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items2" xml:space="preserve">
|
||||
<value>chacha20-poly1305</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items3" xml:space="preserve">
|
||||
<value>chacha20-ietf-poly1305</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items4" xml:space="preserve">
|
||||
<value>none</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items5" xml:space="preserve">
|
||||
<value>plain</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 123</value>
|
||||
</data>
|
||||
|
||||
6
v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs
generated
6
v2rayN/v2rayN/Forms/AddServer5Form.Designer.cs
generated
@@ -88,12 +88,6 @@
|
||||
// cmbFlow
|
||||
//
|
||||
this.cmbFlow.FormattingEnabled = true;
|
||||
this.cmbFlow.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbFlow.Items"),
|
||||
resources.GetString("cmbFlow.Items1"),
|
||||
resources.GetString("cmbFlow.Items2"),
|
||||
resources.GetString("cmbFlow.Items3"),
|
||||
resources.GetString("cmbFlow.Items4")});
|
||||
resources.ApplyResources(this.cmbFlow, "cmbFlow");
|
||||
this.cmbFlow.Name = "cmbFlow";
|
||||
//
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace v2rayN.Forms
|
||||
|
||||
private void AddServer5Form_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbFlow.Items.AddRange(Global.xtlsFlows.ToArray());
|
||||
transportControl.AllowXtls = true;
|
||||
if (EditIndex >= 0)
|
||||
{
|
||||
|
||||
@@ -143,21 +143,6 @@
|
||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cmbFlow.Items1" xml:space="preserve">
|
||||
<value>xtls-rprx-origin</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items2" xml:space="preserve">
|
||||
<value>xtls-rprx-origin-udp443</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items3" xml:space="preserve">
|
||||
<value>xtls-rprx-direct</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items4" xml:space="preserve">
|
||||
<value>xtls-rprx-direct-udp443</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 123</value>
|
||||
</data>
|
||||
@@ -541,7 +526,7 @@
|
||||
<value>0, 10</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 226</value>
|
||||
<value>729, 221</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
@@ -589,7 +574,7 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 456</value>
|
||||
<value>0, 461</value>
|
||||
</data>
|
||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 60</value>
|
||||
@@ -640,7 +625,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 220</value>
|
||||
<value>729, 230</value>
|
||||
</data>
|
||||
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -661,10 +646,10 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 236</value>
|
||||
<value>0, 231</value>
|
||||
</data>
|
||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 220</value>
|
||||
<value>729, 230</value>
|
||||
</data>
|
||||
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
@@ -691,7 +676,7 @@
|
||||
<value>6, 12</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 516</value>
|
||||
<value>729, 521</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Edit or add a [VLESS] server</value>
|
||||
|
||||
6
v2rayN/v2rayN/Forms/AddServer6Form.Designer.cs
generated
6
v2rayN/v2rayN/Forms/AddServer6Form.Designer.cs
generated
@@ -80,12 +80,6 @@
|
||||
// cmbFlow
|
||||
//
|
||||
this.cmbFlow.FormattingEnabled = true;
|
||||
this.cmbFlow.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbFlow.Items"),
|
||||
resources.GetString("cmbFlow.Items1"),
|
||||
resources.GetString("cmbFlow.Items2"),
|
||||
resources.GetString("cmbFlow.Items3"),
|
||||
resources.GetString("cmbFlow.Items4")});
|
||||
resources.ApplyResources(this.cmbFlow, "cmbFlow");
|
||||
this.cmbFlow.Name = "cmbFlow";
|
||||
//
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace v2rayN.Forms
|
||||
|
||||
private void AddServer6Form_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbFlow.Items.AddRange(Global.xtlsFlows.ToArray());
|
||||
transportControl.AllowXtls = true;
|
||||
if (EditIndex >= 0)
|
||||
{
|
||||
|
||||
@@ -147,21 +147,6 @@
|
||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cmbFlow.Items1" xml:space="preserve">
|
||||
<value>xtls-rprx-origin</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items2" xml:space="preserve">
|
||||
<value>xtls-rprx-origin-udp443</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items3" xml:space="preserve">
|
||||
<value>xtls-rprx-direct</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Items4" xml:space="preserve">
|
||||
<value>xtls-rprx-direct-udp443</value>
|
||||
</data>
|
||||
<data name="cmbFlow.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 123</value>
|
||||
</data>
|
||||
@@ -454,7 +439,7 @@
|
||||
<value>0, 10</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>707, 195</value>
|
||||
<value>707, 191</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
@@ -481,7 +466,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>707, 220</value>
|
||||
<value>707, 230</value>
|
||||
</data>
|
||||
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -502,10 +487,10 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 205</value>
|
||||
<value>0, 201</value>
|
||||
</data>
|
||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>707, 220</value>
|
||||
<value>707, 230</value>
|
||||
</data>
|
||||
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
@@ -553,7 +538,7 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 425</value>
|
||||
<value>0, 431</value>
|
||||
</data>
|
||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>707, 60</value>
|
||||
@@ -604,180 +589,7 @@
|
||||
<value>6, 12</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>707, 485</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA
|
||||
CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA
|
||||
/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIoiI
|
||||
iIiIiIiIiIiIiIiIiIiCIigiIiIozMzMzMzMyCIogiIoIiIiKM7m5ubm5sgiKIIiKCIiIijObm5ubm7I
|
||||
IiiCIigiIiIozubm5ubmyCIogiIoIiIiKM5ubm5ubsgiKIIiKCIiIijO5ubm5ubIIiiIiIiIiIiIzm5u
|
||||
bm5uyCIogRERERERGM7u7u7u7sgiKIHZWVlZWRjMzMzMzMzIIiiB1ZWVlZUYiIiIiIiIiIiIgdlZWVlZ
|
||||
GDMzMzMzMzMzOIHVlZWVlRg/uLi4uLi4uDiB2VlZWVkYP7uLi4uLi4s4gdWVlZWVGD+4uLi4uLi4OIHZ
|
||||
WVlZWRg/u4uLi4uLiziB1ZWVlZUYP7i4uLi4uLg4gdlZWVlZGD+7i4uLi4uLOIHVlZWVlRg/uLi4uLi4
|
||||
uDiB3d3d3d0YP7uLi4uLi4s4gRERERERGD+4uLi4uLi4OIiIiIiIiIg/u4uLi4uLiziCIiIiIiIoP7i4
|
||||
uLi4uLg4giIiIiIiKD+7i4uLi4uLOIIiIiIiIig/uLi4uLi4uDiCIiIiIiIoP7u7u7u7u7s4giIiIiIi
|
||||
KD//////////OIIiIiIiIigzMzMzMzMzMziIiIiIiIiIiIiIiIiIiIiIIiIiIiIiIiIiIiIiIiIiIv//
|
||||
////////AAAAAHv4AA57+AAOe/gADnv4AA57+AAOe/gADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAB/+AAAf/gAAH/4AAB/+AAAf/gAAAAA
|
||||
AAD/////KAAAABAAAAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACA
|
||||
gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIoiI
|
||||
iIiIiIiIgigijMzMyCiCKCKM5mbIKIiIiIzu7sgogRERjMzMyCiB2ZGIiIiIiIHZkYMzMzM4gdmRg/u7
|
||||
uziB3dGD+7u7OIEREYP7u7s4iIiIg/u7uziCIiKD+7u7OIIiIoP///84giIigzMzMziIiIiIiIiIiP//
|
||||
KCIAACjObALm5mwCIigAAoiIAAKIzgAAbm4AACIoAAAREQAAGM4AAO7uAAAiKHwAWVl8ABjMfADMzAAA
|
||||
IigoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
|
||||
AACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/
|
||||
KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/
|
||||
KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVf
|
||||
VQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADf
|
||||
VQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8f
|
||||
fwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqf
|
||||
fwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUA
|
||||
qgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/
|
||||
qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/f
|
||||
qgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/
|
||||
1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/
|
||||
1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof
|
||||
/wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf
|
||||
/wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP//
|
||||
MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/
|
||||
AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/
|
||||
KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP39/f39/f39/f39/f39
|
||||
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39
|
||||
/f39/f39/f39/f39/f39/f39/f39/f39qoYIqoYIhqoIqgiqCaoIqgiqhqqGhoYIhoYIqv39/f0I/f39
|
||||
/ar9/f39/YY2Ng4yDg4ODgoOCgoKCgqG/f39/Yb9/f39CP39/f39qjY7Ozs3Nzc3NjMSMjIOCqr9/f39
|
||||
qv39/f2G/f39/f0IN19fOzs3Nzc3NjcODg4KCP39/f0I/f39/ar9/f39/ao6X19fXzs7Ozc3NzY3NgqG
|
||||
/f39/Yb9/f39CP39/f39hl9jY19jX187Ozs7Nzc3Dqr9/f39qv39/f2G/f39/f0IOodjh19jX19fXztf
|
||||
OzcOCP39/f0ICAmqCAiqCKoICapfCYdjh2ODY19fXzs7Ow6q/f39/QhITEwoSCUoKSQoqmMJCYcJCWNj
|
||||
Y2NfY19fNgj9/f39qkyZmZmYmJRwlCmqX19fXl9fX186WzY3Njc2gv39/f0JcJ2dmZmZlJmUJAmqCaoJ
|
||||
hggIqggICKoIqggI/f39/YZwnp2dnZmZmJVMqnx8fHx8fFR8VHhUVFRUVKr9/f39CHChoZ2dnZ2ZmUwJ
|
||||
fKSkxqSkxqSkpKSkpKBUCP39/f2qcKLDoqGdnZ2ZTKp8ysakxqSkxqSkxqSkpFSq/f39/QiUpqbDoqHE
|
||||
nZ1Mq3ykqMakyqSkxqSkpKSkVAj9/f39hpTIyKbHoqGhoXAIfMrLpMqkxqSkxqTGpKRUqv39/f0IlMym
|
||||
yKbIpcShcAh8y6jKpMqkxsqkpKSkxlQI/f39/aqUzMzMyKbIpqJwqnzLy8qpxsqkpMakxqSkeAj9/f39
|
||||
CJSUlJSUlJSUlJQJgMupy8qpysqkyqSkxqRUqv39/f2GCKoIqgiqCKoIhgigrcvPqcuoy8qkxsqkxnyG
|
||||
/f39/ar9/f39/f39/f39qnzPz6nLy8uoyqnKpKTKVAj9/f39CP39/f39/f39/f0IfNDPz8+py8upyqjG
|
||||
yqR8hv39/f2G/f39/f39/f39/Qik0K7P0M+ty8vLy6jKpXyq/f39/ar9/f39/f39/f39CHzQ09Ctz8/P
|
||||
qcupy6jKeAj9/f39CP39/f39/f39/f2qoNPQ0NPQ0M/Qz8vLy6l8CP39/f2G/f39/f39/f39/QmkfKR8
|
||||
oHx8fHx8fHx8fHyG/f39/aoIqgiqCKoIqgiqCKoIqgiqCKoIqgiqCKoIqgj9/f39/f39/f39/f39/f39
|
||||
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3/////////////
|
||||
///AAAAD3vgAA974AAPe+AAD3vgAA974AAPe+AADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAADwAAAA9/4AAPf+AAD3/gAA9/4AAPf+AAD3/gAA8AAAAP//////////ygA
|
||||
AAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA
|
||||
gACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpfKgD/XyoAAH8qAFV/KgCqfyoA/38qAACf
|
||||
KgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXfKgCq3yoA/98qAAD/KgBV/yoAqv8qAP//
|
||||
KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpf
|
||||
VQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+fVQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXf
|
||||
VQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoAfwD/AH8AAB9/AFUffwCqH38A/x9/AAA/
|
||||
fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/fwCqf38A/39/AACffwBVn38Aqp9/AP+f
|
||||
fwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoA
|
||||
qgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/
|
||||
qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/
|
||||
qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/
|
||||
1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/
|
||||
1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP//1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f
|
||||
/wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB//wBVf/8Aqn//AP9//wAAn/8AVZ//AKqf
|
||||
/wD/n/8AAL//AFW//wCqv/8A/7//AADf/wBV3/8Aqt//AP/f/wBV//8Aqv//AP/MzAD/zP8A//8zAP//
|
||||
ZgD//5kA///MAAB/AABVfwAAqn8AAP9/AAAAnwAAVZ8AAKqfAAD/nwAAAL8AAFW/AACqvwAA/78AAADf
|
||||
AABV3wAAqt8AAP/fAABV/wAAqv8AAAAAKgBVACoAqgAqAP8AKgAAHyoAVR8qAKofKgD/HyoAAD8qAFU/
|
||||
KgDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAAAAAAAP//AAD///8A/f39/f39/f39/f39/f39/f0I
|
||||
hgiqCKoICKoICKaGCP39qv39hv2GNg4ODjII/ar9/Yb9/ar9qjdjXzsOCP2G/f0IhquGCAleCWNfNob9
|
||||
qv39qkxMTEgIX19fX18I/Qj9/QhwnZlMqoYIqggIqgiG/f2qcKadcAl8fFQDVFQDqv39CHDMpnCqfMvL
|
||||
ysrKVAj9/QiUlHBwCYDPy8/LylSG/f2GqoYIqgig0M/Py8t8qv39CP39/f2GpNDQ0M/PfAn9/ar9/f39
|
||||
qqT20NDQ0Hyq/f2G/f39/QmkpKSloKR8CP39CKoIhgiqCIYIqgiGCKr9/f39/f39/f39/f39/f39/f//
|
||||
hv2AAf0ItAX9/bQFX2OABWNfgAU7O4ABNzeAAf39gAGq/YAB/YaAAf39vAE6h7wBX2O8AV9fgAE7N///
|
||||
/f0oAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADCv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
|
||||
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
|
||||
wf/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAwr/B/7Z3Sf+zckT/rm0//6toO/+nYjb/pF4y/6BZLv+dVCr/mlEn/5dNI/+VSiH/kkce/5FE
|
||||
HP+RRBz/kUUb/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAADCv8H/v4JS//+aZv//lWD/+5Bc//WLV//uh1P/54FO/997S//Wdkb/zXBD/8Vr
|
||||
QP+9Zj3/tGI5/65dN/+RRRz/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/AAAAAAAAAAAAAAAAAAAAAMK/
|
||||
wf8AAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf/GjFv//6Rz//+fbf//m2f//5Zh//yRXf/3jVj/8IhV/+mD
|
||||
UP/hfUz/2HhI/9ByRP/HbED/v2c9/5VJIf/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAA
|
||||
AAAAAAAAwr/B/wAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/86WZP//r4L//6p7//+mdf//oW7//5xo//+X
|
||||
Yv/9kl7/+I5a//KJVf/rhFH/4n5N/9t4SP/Sc0X/mlEm/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA
|
||||
AAAAAAAAAAAAAAAAAADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/1J9s//+4kf//tIv//6+E//+r
|
||||
ff//p3f//6Jw//+eav//mWT//pRf//qQWv/0i1b/7IVS/+V/Tv+gWC7/wr/B/wAAAAAAAAAAAAAAAAAA
|
||||
AADCv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf/apnP//7+d//+7
|
||||
mP//uJL//7WM//+whv//rH///6d4//+jcf//n2v//5ll//+VYP/6kVv/9YxY/6diN//Cv8H/AAAAAAAA
|
||||
AAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/96t
|
||||
eP//wqL//8Gi//+/nv//vJn//7mT//+2jv//sYj//66A//+pev//pHP//6Bt//+bZ///l2L/r20//8K/
|
||||
wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xYXev8XF3b/GBVx/xkUbf8ZFGr/GhNm/xoSY/8bEV//HBFd/xwQ
|
||||
W//Cv8H/4K96///Cov//wqL//8Ki///Cov//wJ///72b//+6lf//t4///7KJ//+ugv//qnv//6V0//+h
|
||||
bv+3d0n/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/FRqE/0dN1v8/RNL/Nz3Q/y40zv8nLcz/ISfK/xwh
|
||||
yf8WHMf/GxJh/8K/wf/gr3r/4K96/+Cvev/gr3r/3614/9yqdf/apnL/16Nw/9Sea//Rmmj/zZZk/8qR
|
||||
X//GjFz/w4dW/7+CUv/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8SHZD/WF3a/05U1/9FS9X/PUPS/zU7
|
||||
0P8uM83/JyzL/yAmyf8aFGn/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
|
||||
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xAfnP9obt7/YGTc/1Zb
|
||||
2f9NU9f/RUrU/ztB0v80OdD/LDHO/xgWcv/Cv8H/Dn+n/w18pP8MeqH/DHie/wt1m/8Kc5j/CXGV/wlv
|
||||
k/8JbJD/CGqN/wdpi/8HZ4j/BmWH/wZkhf8GYoP/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/DiKp/3l+
|
||||
4/9vdeH/Zmze/11i2/9UWtn/S1HW/0NI1P86P9H/Fhh9/8K/wf8Ogar/Barp/wGo6P8Apef/AKPm/wCi
|
||||
5P8An+L/AJ7h/wCd3/8AnN7/AJnc/wCY2/8AmNn/AJbX/wZjhP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/
|
||||
wf8MJbX/iI7n/4CF5v93fOP/bnPg/2Vr3f9bYdv/UljY/0lP1v8UGoj/wr/B/w+Erf8Lrur/Bqvq/wOo
|
||||
6f8Apuf/AKTm/wCi5f8AoOT/AJ/i/wCd4f8AnN//AJrd/wCZ2/8AmNr/BmWH/8K/wf8AAAAAAAAAAAAA
|
||||
AAAAAAAAwr/B/wkowP+WnOz/jpTq/4aL6P9+hOX/dXri/2xx4P9jaN3/WV/b/xEek//Cv8H/EIaw/xay
|
||||
7P8Or+z/Cavr/wWq6v8Bp+j/AKbn/wCj5f8AoeT/AJ/j/wCe4f8AnOD/AJve/wCa3f8HZ4n/wr/B/wAA
|
||||
AAAAAAAAAAAAAAAAAADCv8H/CCrK/6Ko7/+coe7/lZrr/42T6f+Fiub/fIHl/3N54v9rcN//ECGg/8K/
|
||||
wf8QiLP/I7nu/xq07f8Ssez/C63r/war6v8Cqen/AKbo/wCk5v8AouX/AKHk/wCf4f8AneH/AJzf/who
|
||||
i//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8GLNP/q7Hy/6as8P+hpu//mp/u/5OY6/+LkOj/g4nm/3qA
|
||||
5P8NI6z/wr/B/xCKtv8xvvD/J7rv/x627f8Vsuz/Dq/s/wmr6/8Equn/Aafo/wCl5/8Ao+X/AKHk/wCf
|
||||
4v8AnuH/CGqO/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wUu2/+vtPP/r7Tz/6qv8v+mq/D/oKXv/5me
|
||||
7f+Sl+v/io/p/wsmt//Cv8H/Eo24/0HF8f82wfD/LLzv/yK47v8atO3/EbHs/wut6/8Gq+r/A6np/wCm
|
||||
6P8Apeb/AKLl/wCh5P8IbJD/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/BC/h/wQv3/8FL9z/BS3Z/wYt
|
||||
1v8GLNL/ByvP/wgqy/8IKcb/CSnC/8K/wf8Sjrv/Uszy/0fH8f87w/H/Mb7v/ye67/8et+7/FbPt/w6v
|
||||
6/8IrOv/BKnp/wGo6P8Apef/AKPl/wluk//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/
|
||||
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/xKRvf9j0/P/WM/z/0zK8f9BxfH/N8Hw/yy8
|
||||
7/8iuO7/GbTt/xGx7P8Lruv/Bqrq/wOo6f8Apuf/CnGV/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/E5LA/3Ta8/9q1fP/XtHz/1LM
|
||||
8v9Hx/H/O8Pw/zG+7/8nu+//Hrbt/xay7f8Or+v/CKzq/wSq6f8Kc5j/wr/B/wAAAAAAAAAAAAAAAAAA
|
||||
AADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf8UlMH/hOD1/3rc
|
||||
9f9v2PP/ZNTy/1jO8v9NyvH/Qsbx/zbB8P8svO//I7ju/xm07f8SsOz/C67r/wt2m//Cv8H/AAAAAAAA
|
||||
AAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/xSW
|
||||
w/+T5vb/iuL1/3/e9P912vT/adbz/13R8/9SzPL/R8jx/zzD8P8xvvD/J7rv/x627v8Vsuz/C3ie/8K/
|
||||
wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AADCv8H/FJbG/57r9/+X6Pb/juT1/4Th9f963fX/b9j0/2PT8/9Yz/L/TMrx/0HF8f83wO//LLzv/yK4
|
||||
7v8MeqH/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAMK/wf8VmMf/qO/3/6Lt9/+b6vb/kub2/4rj9f9/3vX/dNrz/2rV8/9d0fP/Uszy/0fI
|
||||
8f88w/D/Mr7v/w19pP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAwr/B/xWZyP8UmMf/FZfF/xSVw/8TlML/E5K//xOQvf8Sjrv/EYy4/xGK
|
||||
tv8QiLL/D4Ww/w+Erf8Pgar/Dn+n/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/8K/wf/Cv8H/wr/B/8K/
|
||||
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
|
||||
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/////////////8AAAAPe+AAD3vgAA974AAPe+AAD3vgAA974AAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAD3/gAA9/4AAPf+AAD3/gAA9/4AAPf+AADwAAAA///
|
||||
////////KAAAABAAAAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDA/8DA
|
||||
wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP8AAAAAAAAAAMDA
|
||||
wP8AAAAAAAAAAMDAwP8AAAAAwMDA/8F2R/+9bj//umc6/7diNf+3YjX/wMDA/wAAAADAwMD/AAAAAAAA
|
||||
AADAwMD/AAAAAAAAAADAwMD/AAAAAMDAwP/RkmD//7aP//+ldP/8kl3/vW0//8DAwP8AAAAAwMDA/wAA
|
||||
AAAAAAAAwMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/3ap2///Cov//to7//6V0/8uJWP/AwMD/AAAAAMDA
|
||||
wP8AAAAAAAAAAMDAwP8THI7/FBqF/xYYfP8XFnP/wMDA/+Cvev/gr3r/4K96/92qdv/ao3D/wMDA/wAA
|
||||
AADAwMD/AAAAAAAAAADAwMD/ECCd/2Fn3P8zOc//FRmC/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DA
|
||||
wP/AwMD/wMDA/wAAAAAAAAAAwMDA/w0krP+Pler/YWbd/xIcj//AwMD/DHmf/wpzmP8Ib5L/B2uO/wdq
|
||||
jf8Gao3/B2qN/8DAwP8AAAAAAAAAAMDAwP8KJrv/r7Tz/5CU6v8PIJ//wMDA/w+Dq/87y/z/Kcb8/xrD
|
||||
/P8QwPv/EMD7/wdqjf/AwMD/AAAAAAAAAADAwMD/CCrI/woowP8LJrf/DSSu/8DAwP8Sjbj/Zdb9/0/Q
|
||||
/P88y/v/Kcf7/xrC+/8IbZD/wMDA/wAAAAAAAAAAwMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/FpfG/43h
|
||||
/f962/3/Zdb8/0/Q/P87zPz/CXSZ/8DAwP8AAAAAAAAAAMDAwP8AAAAAAAAAAAAAAAAAAAAAwMDA/xif
|
||||
z/+u6f7/n+X9/47h/f953P3/ZNb9/w19pP/AwMD/AAAAAAAAAADAwMD/AAAAAAAAAAAAAAAAAAAAAMDA
|
||||
wP8apNX/uez+/7ns/v+u6f7/oOX9/43h/f8Rh7H/wMDA/wAAAAAAAAAAwMDA/wAAAAAAAAAAAAAAAAAA
|
||||
AADAwMD/GqTV/xqk1f8apNX/GaHR/xecy/8WmMb/FJK+/8DAwP8AAAAAAAAAAMDAwP/AwMD/wMDA/8DA
|
||||
wP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAgAEAALQF
|
||||
wf+0BQAAgAUAAIAFAACAAQAAgAHB/4ABAACAAQAAgAEAALwBAAC8AQAAvAHB/4ABbP///5H/
|
||||
</value>
|
||||
<value>707, 491</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Edit or add a [Trojan] server</value>
|
||||
|
||||
@@ -121,24 +121,11 @@
|
||||
<value>取消(&C)</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label21.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>167, 12</value>
|
||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>65, 12</value>
|
||||
</data>
|
||||
<data name="label21.Text" xml:space="preserve">
|
||||
<value>跳过证书验证(allowInsecure)</value>
|
||||
</data>
|
||||
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>406, 185</value>
|
||||
</data>
|
||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>107, 12</value>
|
||||
</data>
|
||||
<data name="label15.Text" xml:space="preserve">
|
||||
<value>底层传输安全(tls)</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cmbStreamSecurity.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
<data name="label4.Text" xml:space="preserve">
|
||||
<value>流控(flow)</value>
|
||||
</data>
|
||||
<data name="label13.Text" xml:space="preserve">
|
||||
<value>*手填,方便识别管理</value>
|
||||
|
||||
6
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
6
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
@@ -113,12 +113,6 @@
|
||||
//
|
||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbSecurity.FormattingEnabled = true;
|
||||
this.cmbSecurity.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbSecurity.Items"),
|
||||
resources.GetString("cmbSecurity.Items1"),
|
||||
resources.GetString("cmbSecurity.Items2"),
|
||||
resources.GetString("cmbSecurity.Items3"),
|
||||
resources.GetString("cmbSecurity.Items4")});
|
||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
||||
this.cmbSecurity.Name = "cmbSecurity";
|
||||
//
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace v2rayN.Forms
|
||||
|
||||
private void AddServerForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray());
|
||||
if (EditIndex >= 0)
|
||||
{
|
||||
vmessItem = config.vmess[EditIndex];
|
||||
@@ -82,11 +83,6 @@ namespace v2rayN.Forms
|
||||
UI.Show(UIRes.I18N("FillUUID"));
|
||||
return;
|
||||
}
|
||||
if (Utils.IsNullOrEmpty(alterId) || !Utils.IsNumberic(alterId))
|
||||
{
|
||||
UI.Show(UIRes.I18N("FillCorrectAlterId"));
|
||||
return;
|
||||
}
|
||||
|
||||
transportControl.EndBindingServer();
|
||||
|
||||
|
||||
@@ -221,21 +221,6 @@
|
||||
<data name=">>label8.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items" xml:space="preserve">
|
||||
<value>aes-128-gcm</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items1" xml:space="preserve">
|
||||
<value>chacha20-poly1305</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items2" xml:space="preserve">
|
||||
<value>auto</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items3" xml:space="preserve">
|
||||
<value>none</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Items4" xml:space="preserve">
|
||||
<value>zero</value>
|
||||
</data>
|
||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>195, 143</value>
|
||||
</data>
|
||||
@@ -532,7 +517,7 @@
|
||||
<value>0, 35</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 219</value>
|
||||
<value>729, 216</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
@@ -580,7 +565,7 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 474</value>
|
||||
<value>0, 481</value>
|
||||
</data>
|
||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 60</value>
|
||||
@@ -682,7 +667,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="transportControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 220</value>
|
||||
<value>729, 230</value>
|
||||
</data>
|
||||
<data name="transportControl.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -703,10 +688,10 @@
|
||||
<value>Bottom</value>
|
||||
</data>
|
||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 254</value>
|
||||
<value>0, 251</value>
|
||||
</data>
|
||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 220</value>
|
||||
<value>729, 230</value>
|
||||
</data>
|
||||
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
@@ -733,7 +718,7 @@
|
||||
<value>6, 12</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>729, 534</value>
|
||||
<value>729, 541</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Edit or add a [VMess] server</value>
|
||||
|
||||
1
v2rayN/v2rayN/Forms/BaseServerForm.Designer.cs
generated
1
v2rayN/v2rayN/Forms/BaseServerForm.Designer.cs
generated
@@ -36,7 +36,6 @@
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(292, 273);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "BaseServerForm";
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
79
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
79
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -64,8 +64,8 @@
|
||||
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
||||
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
||||
@@ -74,11 +74,14 @@
|
||||
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);
|
||||
@@ -89,10 +92,12 @@
|
||||
this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuRoutings = 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.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuUpdateSubscriptions = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuUpdateSubViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.menuExit = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.bgwScan = new System.ComponentModel.BackgroundWorker();
|
||||
@@ -102,6 +107,7 @@
|
||||
this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tsbSubUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton();
|
||||
@@ -129,8 +135,6 @@
|
||||
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
|
||||
this.scMain.Panel1.SuspendLayout();
|
||||
this.scMain.Panel2.SuspendLayout();
|
||||
@@ -219,7 +223,6 @@
|
||||
this.menuExport2ShareUrl,
|
||||
this.menuExport2SubContent});
|
||||
this.cmsLv.Name = "cmsLv";
|
||||
this.cmsLv.OwnerItem = this.tsbServer;
|
||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
||||
//
|
||||
// menuAddVmessServer
|
||||
@@ -404,6 +407,11 @@
|
||||
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
||||
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
||||
//
|
||||
// qrCodeControl
|
||||
//
|
||||
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
||||
this.qrCodeControl.Name = "qrCodeControl";
|
||||
//
|
||||
// tsbServer
|
||||
//
|
||||
this.tsbServer.DropDown = this.cmsLv;
|
||||
@@ -411,11 +419,6 @@
|
||||
resources.ApplyResources(this.tsbServer, "tsbServer");
|
||||
this.tsbServer.Name = "tsbServer";
|
||||
//
|
||||
// qrCodeControl
|
||||
//
|
||||
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
||||
this.qrCodeControl.Name = "qrCodeControl";
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
resources.ApplyResources(this.splitContainer1, "splitContainer1");
|
||||
@@ -461,6 +464,7 @@
|
||||
this.menuMsgBoxSelectAll,
|
||||
this.menuMsgBoxCopy,
|
||||
this.menuMsgBoxCopyAll,
|
||||
this.menuMsgBoxClear,
|
||||
this.menuMsgBoxAddRoutingRule,
|
||||
this.menuMsgBoxFilter});
|
||||
this.cmsMsgBox.Name = "cmsMsgBox";
|
||||
@@ -484,6 +488,12 @@
|
||||
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";
|
||||
@@ -521,6 +531,17 @@
|
||||
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");
|
||||
@@ -546,10 +567,12 @@
|
||||
this.menuSysAgentMode,
|
||||
this.menuRoutings,
|
||||
this.menuServers,
|
||||
this.menuServers2,
|
||||
this.toolStripSeparator13,
|
||||
this.menuAddServers2,
|
||||
this.menuScanScreen2,
|
||||
this.menuUpdateSubscriptions,
|
||||
this.menuUpdateSubViaProxy,
|
||||
this.toolStripSeparator2,
|
||||
this.menuExit});
|
||||
this.cmsMain.Name = "contextMenuStrip1";
|
||||
@@ -594,6 +617,14 @@
|
||||
this.menuServers.Name = "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
|
||||
//
|
||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
||||
@@ -617,6 +648,12 @@
|
||||
resources.ApplyResources(this.menuUpdateSubscriptions, "menuUpdateSubscriptions");
|
||||
this.menuUpdateSubscriptions.Click += new System.EventHandler(this.menuUpdateSubscriptions_Click);
|
||||
//
|
||||
// menuUpdateSubViaProxy
|
||||
//
|
||||
this.menuUpdateSubViaProxy.Name = "menuUpdateSubViaProxy";
|
||||
resources.ApplyResources(this.menuUpdateSubViaProxy, "menuUpdateSubViaProxy");
|
||||
this.menuUpdateSubViaProxy.Click += new System.EventHandler(this.menuUpdateSubViaProxy_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
@@ -671,7 +708,8 @@
|
||||
//
|
||||
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbSubSetting,
|
||||
this.tsbSubUpdate});
|
||||
this.tsbSubUpdate,
|
||||
this.tsbSubUpdateViaProxy});
|
||||
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
|
||||
resources.ApplyResources(this.tsbSub, "tsbSub");
|
||||
this.tsbSub.Name = "tsbSub";
|
||||
@@ -688,6 +726,12 @@
|
||||
resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
|
||||
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
|
||||
//
|
||||
// tsbSubUpdateViaProxy
|
||||
//
|
||||
this.tsbSubUpdateViaProxy.Name = "tsbSubUpdateViaProxy";
|
||||
resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy");
|
||||
this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click);
|
||||
//
|
||||
// tsbQRCodeSwitch
|
||||
//
|
||||
this.tsbQRCodeSwitch.CheckOnClick = true;
|
||||
@@ -865,17 +909,6 @@
|
||||
this.tsbClose.Name = "tsbClose";
|
||||
this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click);
|
||||
//
|
||||
// toolSslRoutingRule
|
||||
//
|
||||
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
||||
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
||||
//
|
||||
// toolSslBlank2
|
||||
//
|
||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
||||
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
||||
this.toolSslBlank2.Spring = true;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
@@ -1017,6 +1050,10 @@
|
||||
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 menuUpdateSubViaProxy;
|
||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -199,11 +199,12 @@ namespace v2rayN.Forms
|
||||
lvServers.Columns.Add(UIRes.I18N("LvServiceType"), 80);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvAlias"), 100);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvAddress"), 120);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvPort"), 50);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 90);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 70);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 50);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 70, HorizontalAlignment.Right);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvPort"), 100);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvEncryptionMethod"), 120);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvTransportProtocol"), 120);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvTLS"), 100);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvSubscription"), 100);
|
||||
lvServers.Columns.Add(UIRes.I18N("LvTestResults"), 120, HorizontalAlignment.Right);
|
||||
|
||||
if (statistics != null && statistics.Enable)
|
||||
{
|
||||
@@ -258,6 +259,7 @@ namespace v2rayN.Forms
|
||||
Utils.AddSubItem(lvItem, EServerColName.port.ToString(), item.port.ToString());
|
||||
Utils.AddSubItem(lvItem, EServerColName.security.ToString(), item.security);
|
||||
Utils.AddSubItem(lvItem, EServerColName.network.ToString(), item.network);
|
||||
Utils.AddSubItem(lvItem, EServerColName.streamSecurity.ToString(), item.streamSecurity);
|
||||
Utils.AddSubItem(lvItem, EServerColName.subRemarks.ToString(), item.getSubRemarks(config));
|
||||
Utils.AddSubItem(lvItem, EServerColName.testResult.ToString(), item.testResult);
|
||||
if (stats)
|
||||
@@ -296,25 +298,56 @@ namespace v2rayN.Forms
|
||||
private void RefreshServersMenu()
|
||||
{
|
||||
menuServers.DropDownItems.Clear();
|
||||
menuServers2.SelectedIndexChanged -= MenuServers2_SelectedIndexChanged;
|
||||
menuServers2.Items.Clear();
|
||||
menuServers.Visible = false;
|
||||
menuServers2.Visible = false;
|
||||
|
||||
List<ToolStripMenuItem> lst = new List<ToolStripMenuItem>();
|
||||
for (int k = 0; k < config.vmess.Count; k++)
|
||||
if (config.vmess.Count > 20)
|
||||
{
|
||||
VmessItem item = config.vmess[k];
|
||||
string name = item.getSummary();
|
||||
for (int k = 0; k < config.vmess.Count; k++)
|
||||
{
|
||||
VmessItem item = config.vmess[k];
|
||||
string name = item.getSummary();
|
||||
|
||||
if (config.index.Equals(k))
|
||||
{
|
||||
name = $"√ {name}";
|
||||
}
|
||||
menuServers2.Items.Add(name);
|
||||
|
||||
ToolStripMenuItem ts = new ToolStripMenuItem(name)
|
||||
{
|
||||
Tag = k
|
||||
};
|
||||
if (config.index.Equals(k))
|
||||
{
|
||||
ts.Checked = true;
|
||||
}
|
||||
ts.Click += new EventHandler(ts_Click);
|
||||
lst.Add(ts);
|
||||
menuServers2.SelectedIndex = config.index;
|
||||
menuServers2.SelectedIndexChanged += MenuServers2_SelectedIndexChanged;
|
||||
menuServers2.Visible = true;
|
||||
}
|
||||
menuServers.DropDownItems.AddRange(lst.ToArray());
|
||||
else
|
||||
{
|
||||
List<ToolStripMenuItem> lst = new List<ToolStripMenuItem>();
|
||||
for (int k = 0; k < config.vmess.Count; k++)
|
||||
{
|
||||
VmessItem item = config.vmess[k];
|
||||
string name = item.getSummary();
|
||||
|
||||
ToolStripMenuItem ts = new ToolStripMenuItem(name)
|
||||
{
|
||||
Tag = k
|
||||
};
|
||||
if (config.index.Equals(k))
|
||||
{
|
||||
ts.Checked = true;
|
||||
}
|
||||
ts.Click += new EventHandler(ts_Click);
|
||||
lst.Add(ts);
|
||||
}
|
||||
menuServers.DropDownItems.AddRange(lst.ToArray());
|
||||
menuServers.Visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void MenuServers2_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetDefaultServer(((ToolStripComboBox)sender).SelectedIndex);
|
||||
}
|
||||
|
||||
private void ts_Click(object sender, EventArgs e)
|
||||
@@ -374,6 +407,15 @@ namespace v2rayN.Forms
|
||||
|
||||
try
|
||||
{
|
||||
if ((EServerColName)e.Column == EServerColName.def)
|
||||
{
|
||||
foreach (ColumnHeader it in lvServers.Columns)
|
||||
{
|
||||
it.Width = -2;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var tag = lvServers.Columns[e.Column].Tag?.ToString();
|
||||
bool asc = Utils.IsNullOrEmpty(tag) ? true : !Convert.ToBoolean(tag);
|
||||
if (ConfigHandler.SortServers(ref config, (EServerColName)e.Column, asc) != 0)
|
||||
@@ -427,7 +469,7 @@ namespace v2rayN.Forms
|
||||
ConfigHandler.SaveConfig(ref config, false);
|
||||
statistics?.SaveToFile();
|
||||
|
||||
ChangePACButtonStatus(0);
|
||||
ChangePACButtonStatus(ESysProxyType.ForcedClear);
|
||||
|
||||
v2rayHandler.V2rayStop();
|
||||
}
|
||||
@@ -882,7 +924,11 @@ namespace v2rayN.Forms
|
||||
|
||||
private void menuUpdateSubscriptions_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateSubscriptionProcess();
|
||||
UpdateSubscriptionProcess(false);
|
||||
}
|
||||
private void menuUpdateSubViaProxy_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateSubscriptionProcess(true);
|
||||
}
|
||||
|
||||
private void tsbBackupGuiNConfig_Click(object sender, EventArgs e)
|
||||
@@ -1169,14 +1215,6 @@ namespace v2rayN.Forms
|
||||
private void ChangePACButtonStatus(ESysProxyType type)
|
||||
{
|
||||
HttpProxyHandle.UpdateSysProxy(config, false);
|
||||
//if (type != ListenerType.noHttpProxy)
|
||||
//{
|
||||
// HttpProxyHandle.RestartHttpAgent(config, false);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// HttpProxyHandle.CloseHttpAgent(config);
|
||||
//}
|
||||
|
||||
for (int k = 0; k < menuSysAgentMode.DropDownItems.Count; k++)
|
||||
{
|
||||
@@ -1328,13 +1366,18 @@ namespace v2rayN.Forms
|
||||
|
||||
private void tsbSubUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateSubscriptionProcess();
|
||||
UpdateSubscriptionProcess(false);
|
||||
}
|
||||
|
||||
private void tsbSubUpdateViaProxy_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateSubscriptionProcess(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// the subscription update process
|
||||
/// </summary>
|
||||
private void UpdateSubscriptionProcess()
|
||||
private void UpdateSubscriptionProcess(bool blProxy)
|
||||
{
|
||||
void _updateUI(bool success, string msg)
|
||||
{
|
||||
@@ -1342,10 +1385,17 @@ namespace v2rayN.Forms
|
||||
if (success)
|
||||
{
|
||||
RefreshServers();
|
||||
if (config.uiItem.enableAutoAdjustMainLvColWidth)
|
||||
{
|
||||
foreach (ColumnHeader it in lvServers.Columns)
|
||||
{
|
||||
it.Width = -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
(new UpdateHandle()).UpdateSubscriptionProcess(config, _updateUI);
|
||||
(new UpdateHandle()).UpdateSubscriptionProcess(config, blProxy, _updateUI);
|
||||
}
|
||||
|
||||
private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e)
|
||||
@@ -1457,6 +1507,10 @@ namespace v2rayN.Forms
|
||||
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);
|
||||
|
||||
@@ -302,18 +302,6 @@
|
||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
||||
<value>Export subscription (base64) share to clipboard</value>
|
||||
</data>
|
||||
<data name="tsbServer.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>64, 53</value>
|
||||
</data>
|
||||
<data name="tsbServer.Text" xml:space="preserve">
|
||||
<value>Servers</value>
|
||||
</data>
|
||||
<data name="tsbServer.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
|
||||
<value>ImageAboveText</value>
|
||||
</data>
|
||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>356, 622</value>
|
||||
</data>
|
||||
@@ -440,6 +428,18 @@
|
||||
<data name=">>scMain.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tsbServer.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>64, 53</value>
|
||||
</data>
|
||||
<data name="tsbServer.Text" xml:space="preserve">
|
||||
<value>Servers</value>
|
||||
</data>
|
||||
<data name="tsbServer.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
|
||||
<value>ImageAboveText</value>
|
||||
</data>
|
||||
<data name="splitContainer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
@@ -509,6 +509,12 @@
|
||||
<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>
|
||||
@@ -522,7 +528,7 @@
|
||||
<value>Set message filters</value>
|
||||
</data>
|
||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>228, 114</value>
|
||||
<value>228, 136</value>
|
||||
</data>
|
||||
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
||||
<value>cmsMsgBox</value>
|
||||
@@ -576,13 +582,13 @@
|
||||
<value>微软雅黑, 8pt</value>
|
||||
</data>
|
||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>285, 21</value>
|
||||
<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>285, 21</value>
|
||||
<value>300, 21</value>
|
||||
</data>
|
||||
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
@@ -734,6 +740,18 @@
|
||||
<data name="menuServers.Text" xml:space="preserve">
|
||||
<value>Server</value>
|
||||
</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">
|
||||
<value>261, 6</value>
|
||||
</data>
|
||||
@@ -755,6 +773,12 @@
|
||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||
<value>Update subscriptions</value>
|
||||
</data>
|
||||
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>264, 22</value>
|
||||
</data>
|
||||
<data name="menuUpdateSubViaProxy.Text" xml:space="preserve">
|
||||
<value>Update subscriptions via proxy</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>261, 6</value>
|
||||
</data>
|
||||
@@ -765,7 +789,7 @@
|
||||
<value>Exit</value>
|
||||
</data>
|
||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>265, 170</value>
|
||||
<value>265, 243</value>
|
||||
</data>
|
||||
<data name=">>cmsMain.Name" xml:space="preserve">
|
||||
<value>cmsMain</value>
|
||||
@@ -813,17 +837,23 @@
|
||||
<value>6, 56</value>
|
||||
</data>
|
||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
<value>182, 22</value>
|
||||
</data>
|
||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 22</value>
|
||||
<value>182, 22</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||
<value>Updates</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>182, 22</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
||||
<value>Updates via proxy</value>
|
||||
</data>
|
||||
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
|
||||
<value>Magenta</value>
|
||||
</data>
|
||||
@@ -1065,7 +1095,7 @@
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>65</value>
|
||||
<value>88</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 12</value>
|
||||
@@ -1289,6 +1319,12 @@
|
||||
<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>
|
||||
@@ -1313,6 +1349,18 @@
|
||||
<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>
|
||||
@@ -1367,6 +1415,12 @@
|
||||
<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>
|
||||
</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">
|
||||
<value>toolStripSeparator13</value>
|
||||
</data>
|
||||
@@ -1391,6 +1445,12 @@
|
||||
<data name=">>menuUpdateSubscriptions.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=">>menuUpdateSubViaProxy.Name" xml:space="preserve">
|
||||
<value>menuUpdateSubViaProxy</value>
|
||||
</data>
|
||||
<data name=">>menuUpdateSubViaProxy.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=">>toolStripSeparator2.Name" xml:space="preserve">
|
||||
<value>toolStripSeparator2</value>
|
||||
</data>
|
||||
@@ -1433,6 +1493,12 @@
|
||||
<data name=">>tsbSubUpdate.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=">>tsbSubUpdateViaProxy.Name" xml:space="preserve">
|
||||
<value>tsbSubUpdateViaProxy</value>
|
||||
</data>
|
||||
<data name=">>tsbSubUpdateViaProxy.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=">>tsbQRCodeSwitch.Name" xml:space="preserve">
|
||||
<value>tsbQRCodeSwitch</value>
|
||||
</data>
|
||||
@@ -1595,18 +1661,6 @@
|
||||
<data name=">>tsbClose.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripButton, 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=">>$this.Name" xml:space="preserve">
|
||||
<value>MainForm</value>
|
||||
</data>
|
||||
|
||||
@@ -379,68 +379,83 @@
|
||||
<value>不改变系统代理</value>
|
||||
</data>
|
||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
||||
<value>系统代理</value>
|
||||
</data>
|
||||
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuRoutings.Text" xml:space="preserve">
|
||||
<value>路由</value>
|
||||
</data>
|
||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuServers.Text" xml:space="preserve">
|
||||
<value>服务器</value>
|
||||
</data>
|
||||
<data name="menuServers2.ToolTipText" xml:space="preserve">
|
||||
<value>服务器</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>192, 6</value>
|
||||
<value>257, 6</value>
|
||||
</data>
|
||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
||||
<value>从剪贴板导入批量URL</value>
|
||||
</data>
|
||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
||||
<value>扫描屏幕上的二维码</value>
|
||||
</data>
|
||||
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
||||
<value>更新订阅</value>
|
||||
</data>
|
||||
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuUpdateSubViaProxy.Text" xml:space="preserve">
|
||||
<value>更新订阅(通过代理)</value>
|
||||
</data>
|
||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>192, 6</value>
|
||||
<value>257, 6</value>
|
||||
</data>
|
||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
<value>260, 22</value>
|
||||
</data>
|
||||
<data name="menuExit.Text" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
</data>
|
||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>196, 170</value>
|
||||
<value>261, 227</value>
|
||||
</data>
|
||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>124, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
||||
<value>订阅设置</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>124, 22</value>
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
||||
<value>更新订阅</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>180, 22</value>
|
||||
</data>
|
||||
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
||||
<value>更新订阅(通过代理)</value>
|
||||
</data>
|
||||
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>61, 53</value>
|
||||
</data>
|
||||
|
||||
49
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
49
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -69,6 +69,8 @@
|
||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
||||
this.btnSetLoopback = new System.Windows.Forms.Button();
|
||||
this.txtautoUpdateInterval = new System.Windows.Forms.TextBox();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
||||
@@ -101,32 +103,33 @@
|
||||
//
|
||||
// btnClose
|
||||
//
|
||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
resources.ApplyResources(this.btnClose, "btnClose");
|
||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnClose.Name = "btnClose";
|
||||
this.btnClose.UseVisualStyleBackColor = true;
|
||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Controls.Add(this.tabPage6);
|
||||
this.tabControl1.Controls.Add(this.tabPage7);
|
||||
this.tabControl1.Controls.Add(this.tabPage3);
|
||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.groupBox1);
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Controls.Add(this.groupBox1);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
||||
this.groupBox1.Controls.Add(this.chksniffingEnabled2);
|
||||
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
||||
@@ -144,7 +147,6 @@
|
||||
this.groupBox1.Controls.Add(this.label5);
|
||||
this.groupBox1.Controls.Add(this.txtlocalPort);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
@@ -187,12 +189,12 @@
|
||||
//
|
||||
// cmbprotocol2
|
||||
//
|
||||
resources.ApplyResources(this.cmbprotocol2, "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
|
||||
@@ -207,8 +209,8 @@
|
||||
//
|
||||
// cmbprotocol
|
||||
//
|
||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbprotocol.FormattingEnabled = true;
|
||||
this.cmbprotocol.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbprotocol.Items"),
|
||||
@@ -234,6 +236,7 @@
|
||||
//
|
||||
// cmbloglevel
|
||||
//
|
||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
||||
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbloglevel.FormattingEnabled = true;
|
||||
this.cmbloglevel.Items.AddRange(new object[] {
|
||||
@@ -242,7 +245,6 @@
|
||||
resources.GetString("cmbloglevel.Items2"),
|
||||
resources.GetString("cmbloglevel.Items3"),
|
||||
resources.GetString("cmbloglevel.Items4")});
|
||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
||||
this.cmbloglevel.Name = "cmbloglevel";
|
||||
//
|
||||
// label5
|
||||
@@ -262,10 +264,10 @@
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
||||
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
||||
this.tabPage2.Controls.Add(this.label14);
|
||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -288,6 +290,7 @@
|
||||
//
|
||||
// tabPage6
|
||||
//
|
||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
||||
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
||||
this.tabPage6.Controls.Add(this.label10);
|
||||
@@ -301,7 +304,6 @@
|
||||
this.tabPage6.Controls.Add(this.label7);
|
||||
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
||||
this.tabPage6.Controls.Add(this.label6);
|
||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
||||
this.tabPage6.Name = "tabPage6";
|
||||
this.tabPage6.UseVisualStyleBackColor = true;
|
||||
//
|
||||
@@ -373,6 +375,9 @@
|
||||
//
|
||||
// tabPage7
|
||||
//
|
||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
||||
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
||||
this.tabPage7.Controls.Add(this.txtautoUpdateInterval);
|
||||
this.tabPage7.Controls.Add(this.label15);
|
||||
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
||||
@@ -384,10 +389,22 @@
|
||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
||||
this.tabPage7.Controls.Add(this.chkAllowLANConn);
|
||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
||||
this.tabPage7.Name = "tabPage7";
|
||||
this.tabPage7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkEnableAutoAdjustMainLvColWidth
|
||||
//
|
||||
resources.ApplyResources(this.chkEnableAutoAdjustMainLvColWidth, "chkEnableAutoAdjustMainLvColWidth");
|
||||
this.chkEnableAutoAdjustMainLvColWidth.Name = "chkEnableAutoAdjustMainLvColWidth";
|
||||
this.chkEnableAutoAdjustMainLvColWidth.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnSetLoopback
|
||||
//
|
||||
resources.ApplyResources(this.btnSetLoopback, "btnSetLoopback");
|
||||
this.btnSetLoopback.Name = "btnSetLoopback";
|
||||
this.btnSetLoopback.UseVisualStyleBackColor = true;
|
||||
this.btnSetLoopback.Click += new System.EventHandler(this.btnSetLoopback_Click);
|
||||
//
|
||||
// txtautoUpdateInterval
|
||||
//
|
||||
resources.ApplyResources(this.txtautoUpdateInterval, "txtautoUpdateInterval");
|
||||
@@ -406,12 +423,12 @@
|
||||
//
|
||||
// cmbCoreType
|
||||
//
|
||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCoreType.FormattingEnabled = true;
|
||||
this.cmbCoreType.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbCoreType.Items"),
|
||||
resources.GetString("cmbCoreType.Items1")});
|
||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
||||
this.cmbCoreType.Name = "cmbCoreType";
|
||||
//
|
||||
// label4
|
||||
@@ -427,9 +444,9 @@
|
||||
//
|
||||
// cbFreshrate
|
||||
//
|
||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
||||
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbFreshrate.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
|
||||
this.cbFreshrate.Name = "cbFreshrate";
|
||||
//
|
||||
// lbFreshrate
|
||||
@@ -457,17 +474,17 @@
|
||||
//
|
||||
// tabPage3
|
||||
//
|
||||
this.tabPage3.Controls.Add(this.groupBox2);
|
||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
||||
this.tabPage3.Controls.Add(this.groupBox2);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Controls.Add(this.label13);
|
||||
this.groupBox2.Controls.Add(this.label12);
|
||||
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
@@ -488,9 +505,9 @@
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
resources.ApplyResources(this.panel2, "panel2");
|
||||
this.panel2.Controls.Add(this.btnClose);
|
||||
this.panel2.Controls.Add(this.btnOK);
|
||||
resources.ApplyResources(this.panel2, "panel2");
|
||||
this.panel2.Name = "panel2";
|
||||
//
|
||||
// btnOK
|
||||
@@ -595,5 +612,7 @@
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.TextBox txtautoUpdateInterval;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.Button btnSetLoopback;
|
||||
private System.Windows.Forms.CheckBox chkEnableAutoAdjustMainLvColWidth;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ using v2rayN.Handler;
|
||||
using v2rayN.Base;
|
||||
using v2rayN.HttpProxyHandler;
|
||||
using v2rayN.Mode;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace v2rayN.Forms
|
||||
{
|
||||
@@ -124,6 +125,7 @@ namespace v2rayN.Forms
|
||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
||||
cmbCoreType.SelectedIndex = (int)config.coreType;
|
||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
||||
}
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -307,6 +309,7 @@ namespace v2rayN.Forms
|
||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
||||
config.coreType = (ECoreType)cmbCoreType.SelectedIndex;
|
||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
||||
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -330,7 +333,12 @@ namespace v2rayN.Forms
|
||||
|
||||
private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
System.Diagnostics.Process.Start("https://www.v2fly.org/config/dns.html#dnsobject");
|
||||
Process.Start("https://www.v2fly.org/config/dns.html#dnsobject");
|
||||
}
|
||||
|
||||
private void btnSetLoopback_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -121,23 +121,11 @@
|
||||
<value>取消(&C)</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>662, 469</value>
|
||||
</data>
|
||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value> Core:基础设置 </value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>648, 437</value>
|
||||
</data>
|
||||
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>336, 16</value>
|
||||
<value>324, 16</value>
|
||||
</data>
|
||||
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
||||
<value>底层传输安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
||||
<value>传输层安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
||||
</data>
|
||||
<data name="chksniffingEnabled2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>96, 16</value>
|
||||
@@ -205,11 +193,14 @@
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>本地监听端口</value>
|
||||
</data>
|
||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>648, 437</value>
|
||||
</data>
|
||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage2.Text" xml:space="preserve">
|
||||
<value> Core:DNS设置 </value>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value> Core:基础设置 </value>
|
||||
</data>
|
||||
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>161, 12</value>
|
||||
@@ -223,17 +214,26 @@
|
||||
<data name="label14.Text" xml:space="preserve">
|
||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
||||
</data>
|
||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage2.Text" xml:space="preserve">
|
||||
<value> Core:DNS设置 </value>
|
||||
</data>
|
||||
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage6.Text" xml:space="preserve">
|
||||
<value> Core:KCP设置 </value>
|
||||
</data>
|
||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>204, 16</value>
|
||||
</data>
|
||||
<data name="tabPage7.Text" xml:space="preserve">
|
||||
<value> v2rayN设置 </value>
|
||||
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
||||
<value>自动调整服务器列宽在更新订阅后</value>
|
||||
</data>
|
||||
<data name="btnSetLoopback.Text" xml:space="preserve">
|
||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
||||
</data>
|
||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>255, 156</value>
|
||||
@@ -286,17 +286,11 @@
|
||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
||||
<value>开机自动启动(可能会不成功)</value>
|
||||
</data>
|
||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="tabPage3.Text" xml:space="preserve">
|
||||
<value> 系统代理设置 </value>
|
||||
</data>
|
||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>654, 443</value>
|
||||
</data>
|
||||
<data name="groupBox2.Text" xml:space="preserve">
|
||||
<value>例外</value>
|
||||
<data name="tabPage7.Text" xml:space="preserve">
|
||||
<value> v2rayN设置 </value>
|
||||
</data>
|
||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>95, 12</value>
|
||||
@@ -310,12 +304,27 @@
|
||||
<data name="label12.Text" xml:space="preserve">
|
||||
<value>对于下列字符开头的地址不使用代理服务器:</value>
|
||||
</data>
|
||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 479</value>
|
||||
<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="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="btnOK.Text" xml:space="preserve">
|
||||
<value>确定(&O)</value>
|
||||
</data>
|
||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 479</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>662, 539</value>
|
||||
</data>
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerTransportControl));
|
||||
this.gbTransport = new System.Windows.Forms.GroupBox();
|
||||
this.panTlsMore = new System.Windows.Forms.Panel();
|
||||
this.clbAlpn = new System.Windows.Forms.CheckedListBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtSNI = new System.Windows.Forms.TextBox();
|
||||
this.labSNI = new System.Windows.Forms.Label();
|
||||
this.labAllowInsecure = new System.Windows.Forms.Label();
|
||||
@@ -76,6 +78,8 @@
|
||||
//
|
||||
// panTlsMore
|
||||
//
|
||||
this.panTlsMore.Controls.Add(this.clbAlpn);
|
||||
this.panTlsMore.Controls.Add(this.label1);
|
||||
this.panTlsMore.Controls.Add(this.txtSNI);
|
||||
this.panTlsMore.Controls.Add(this.labSNI);
|
||||
this.panTlsMore.Controls.Add(this.labAllowInsecure);
|
||||
@@ -83,6 +87,22 @@
|
||||
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
||||
this.panTlsMore.Name = "panTlsMore";
|
||||
//
|
||||
// clbAlpn
|
||||
//
|
||||
this.clbAlpn.CheckOnClick = true;
|
||||
resources.ApplyResources(this.clbAlpn, "clbAlpn");
|
||||
this.clbAlpn.FormattingEnabled = true;
|
||||
this.clbAlpn.Items.AddRange(new object[] {
|
||||
resources.GetString("clbAlpn.Items"),
|
||||
resources.GetString("clbAlpn.Items1")});
|
||||
this.clbAlpn.MultiColumn = true;
|
||||
this.clbAlpn.Name = "clbAlpn";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// txtSNI
|
||||
//
|
||||
resources.ApplyResources(this.txtSNI, "txtSNI");
|
||||
@@ -123,13 +143,6 @@
|
||||
//
|
||||
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbNetwork.FormattingEnabled = true;
|
||||
this.cmbNetwork.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbNetwork.Items"),
|
||||
resources.GetString("cmbNetwork.Items1"),
|
||||
resources.GetString("cmbNetwork.Items2"),
|
||||
resources.GetString("cmbNetwork.Items3"),
|
||||
resources.GetString("cmbNetwork.Items4"),
|
||||
resources.GetString("cmbNetwork.Items5")});
|
||||
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
||||
this.cmbNetwork.Name = "cmbNetwork";
|
||||
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
||||
@@ -191,14 +204,6 @@
|
||||
//
|
||||
this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbHeaderType.FormattingEnabled = true;
|
||||
this.cmbHeaderType.Items.AddRange(new object[] {
|
||||
resources.GetString("cmbHeaderType.Items"),
|
||||
resources.GetString("cmbHeaderType.Items1"),
|
||||
resources.GetString("cmbHeaderType.Items2"),
|
||||
resources.GetString("cmbHeaderType.Items3"),
|
||||
resources.GetString("cmbHeaderType.Items4"),
|
||||
resources.GetString("cmbHeaderType.Items5"),
|
||||
resources.GetString("cmbHeaderType.Items6")});
|
||||
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
||||
this.cmbHeaderType.Name = "cmbHeaderType";
|
||||
//
|
||||
@@ -239,5 +244,7 @@
|
||||
private System.Windows.Forms.Label labHeaderType;
|
||||
private System.Windows.Forms.Label labRequestHost;
|
||||
private System.Windows.Forms.ComboBox cmbHeaderType;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckedListBox clbAlpn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using v2rayN.Mode;
|
||||
|
||||
@@ -21,6 +22,8 @@ namespace v2rayN.Forms
|
||||
{
|
||||
vmessItem = item;
|
||||
|
||||
cmbNetwork.Items.AddRange(Global.networks.ToArray());
|
||||
|
||||
cmbStreamSecurity.Items.Clear();
|
||||
cmbStreamSecurity.Items.Add(string.Empty);
|
||||
cmbStreamSecurity.Items.Add(Global.StreamSecurity);
|
||||
@@ -41,6 +44,17 @@ namespace v2rayN.Forms
|
||||
cmbStreamSecurity.Text = vmessItem.streamSecurity;
|
||||
cmbAllowInsecure.Text = vmessItem.allowInsecure;
|
||||
txtSNI.Text = vmessItem.sni;
|
||||
|
||||
if (vmessItem.alpn != null)
|
||||
{
|
||||
for (int i = 0; i < clbAlpn.Items.Count; i++)
|
||||
{
|
||||
if (vmessItem.alpn.Contains(clbAlpn.Items[i].ToString()))
|
||||
{
|
||||
clbAlpn.SetItemChecked(i, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearServer(VmessItem item)
|
||||
@@ -54,6 +68,10 @@ namespace v2rayN.Forms
|
||||
cmbAllowInsecure.Text = "";
|
||||
txtPath.Text = "";
|
||||
txtSNI.Text = "";
|
||||
for (int i = 0; i < clbAlpn.Items.Count; i++)
|
||||
{
|
||||
clbAlpn.SetItemChecked(i, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void EndBindingServer()
|
||||
@@ -73,6 +91,16 @@ namespace v2rayN.Forms
|
||||
vmessItem.streamSecurity = streamSecurity;
|
||||
vmessItem.allowInsecure = allowInsecure;
|
||||
vmessItem.sni = sni;
|
||||
|
||||
var alpn = new List<string>();
|
||||
for (int i = 0; i < clbAlpn.Items.Count; i++)
|
||||
{
|
||||
if (clbAlpn.GetItemChecked(i))
|
||||
{
|
||||
alpn.Add(clbAlpn.Items[i].ToString());
|
||||
}
|
||||
}
|
||||
vmessItem.alpn = alpn;
|
||||
}
|
||||
|
||||
private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e)
|
||||
@@ -100,11 +128,7 @@ namespace v2rayN.Forms
|
||||
else if (network.Equals("kcp") || network.Equals("quic"))
|
||||
{
|
||||
cmbHeaderType.Items.Add(Global.None);
|
||||
cmbHeaderType.Items.Add("srtp");
|
||||
cmbHeaderType.Items.Add("utp");
|
||||
cmbHeaderType.Items.Add("wechat-video");
|
||||
cmbHeaderType.Items.Add("dtls");
|
||||
cmbHeaderType.Items.Add("wireguard");
|
||||
cmbHeaderType.Items.AddRange(Global.kcpHeaderTypes.ToArray());
|
||||
}
|
||||
else if (network.Equals("grpc"))
|
||||
{
|
||||
@@ -138,6 +162,7 @@ namespace v2rayN.Forms
|
||||
else if (network.Equals("kcp"))
|
||||
{
|
||||
tipHeaderType.Text = UIRes.I18N("TransportHeaderTypeTip2");
|
||||
tipPath.Text = UIRes.I18N("TransportPathTip5");
|
||||
}
|
||||
else if (network.Equals("ws"))
|
||||
{
|
||||
|
||||
@@ -117,14 +117,75 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="clbAlpn.ColumnWidth" type="System.Int32, mscorlib">
|
||||
<value>70</value>
|
||||
</data>
|
||||
<data name="clbAlpn.Items" xml:space="preserve">
|
||||
<value>h2</value>
|
||||
</data>
|
||||
<data name="clbAlpn.Items1" xml:space="preserve">
|
||||
<value>http/1.1</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="clbAlpn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>313, 7</value>
|
||||
</data>
|
||||
<data name="clbAlpn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>172, 20</value>
|
||||
</data>
|
||||
<data name="clbAlpn.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>44</value>
|
||||
</data>
|
||||
<data name=">>clbAlpn.Name" xml:space="preserve">
|
||||
<value>clbAlpn</value>
|
||||
</data>
|
||||
<data name=">>clbAlpn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>clbAlpn.Parent" xml:space="preserve">
|
||||
<value>panTlsMore</value>
|
||||
</data>
|
||||
<data name=">>clbAlpn.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label1.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="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>241, 11</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>29, 12</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>43</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>alpn</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>panTlsMore</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="txtSNI.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>300, 7</value>
|
||||
<value>100, 39</value>
|
||||
</data>
|
||||
<data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>197, 21</value>
|
||||
<value>385, 21</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="txtSNI.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
@@ -138,17 +199,16 @@
|
||||
<value>panTlsMore</value>
|
||||
</data>
|
||||
<data name=">>txtSNI.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="labSNI.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="labSNI.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labSNI.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>270, 11</value>
|
||||
<value>12, 43</value>
|
||||
</data>
|
||||
<data name="labSNI.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 12</value>
|
||||
@@ -169,7 +229,7 @@
|
||||
<value>panTlsMore</value>
|
||||
</data>
|
||||
<data name=">>labSNI.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="labAllowInsecure.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -199,7 +259,7 @@
|
||||
<value>panTlsMore</value>
|
||||
</data>
|
||||
<data name=">>labAllowInsecure.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="cmbAllowInsecure.Items" xml:space="preserve">
|
||||
<value />
|
||||
@@ -229,13 +289,13 @@
|
||||
<value>panTlsMore</value>
|
||||
</data>
|
||||
<data name=">>cmbAllowInsecure.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="panTlsMore.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>200, 171</value>
|
||||
<value>200, 149</value>
|
||||
</data>
|
||||
<data name="panTlsMore.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>500, 35</value>
|
||||
<value>500, 71</value>
|
||||
</data>
|
||||
<data name="panTlsMore.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>33</value>
|
||||
@@ -283,7 +343,7 @@
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="txtPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 136</value>
|
||||
<value>127, 124</value>
|
||||
</data>
|
||||
<data name="txtPath.Multiline" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -306,24 +366,6 @@
|
||||
<data name=">>txtPath.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Items" xml:space="preserve">
|
||||
<value>tcp</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Items1" xml:space="preserve">
|
||||
<value>kcp</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Items2" xml:space="preserve">
|
||||
<value>ws</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Items3" xml:space="preserve">
|
||||
<value>h2</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Items4" xml:space="preserve">
|
||||
<value>quic</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Items5" xml:space="preserve">
|
||||
<value>grpc</value>
|
||||
</data>
|
||||
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>192, 28</value>
|
||||
</data>
|
||||
@@ -382,7 +424,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 140</value>
|
||||
<value>9, 128</value>
|
||||
</data>
|
||||
<data name="labPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>29, 12</value>
|
||||
@@ -412,7 +454,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="tipPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>529, 140</value>
|
||||
<value>529, 128</value>
|
||||
</data>
|
||||
<data name="tipPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>11, 12</value>
|
||||
@@ -442,7 +484,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="tipRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>464, 104</value>
|
||||
<value>464, 96</value>
|
||||
</data>
|
||||
<data name="tipRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>11, 12</value>
|
||||
@@ -472,7 +514,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 182</value>
|
||||
<value>9, 160</value>
|
||||
</data>
|
||||
<data name="labStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 12</value>
|
||||
@@ -496,7 +538,7 @@
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 178</value>
|
||||
<value>127, 156</value>
|
||||
</data>
|
||||
<data name="cmbStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 20</value>
|
||||
@@ -523,7 +565,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="tipHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>282, 66</value>
|
||||
<value>282, 64</value>
|
||||
</data>
|
||||
<data name="tipHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>11, 12</value>
|
||||
@@ -547,7 +589,7 @@
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>158, 100</value>
|
||||
<value>158, 92</value>
|
||||
</data>
|
||||
<data name="txtRequestHost.Multiline" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -577,7 +619,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 66</value>
|
||||
<value>9, 64</value>
|
||||
</data>
|
||||
<data name="labHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>95, 12</value>
|
||||
@@ -607,7 +649,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 104</value>
|
||||
<value>9, 96</value>
|
||||
</data>
|
||||
<data name="labRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>143, 12</value>
|
||||
@@ -630,29 +672,8 @@
|
||||
<data name=">>labRequestHost.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items" xml:space="preserve">
|
||||
<value>none</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items1" xml:space="preserve">
|
||||
<value>http</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items2" xml:space="preserve">
|
||||
<value>srtp</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items3" xml:space="preserve">
|
||||
<value>utp</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items4" xml:space="preserve">
|
||||
<value>wechat-video</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items5" xml:space="preserve">
|
||||
<value>dtls</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Items6" xml:space="preserve">
|
||||
<value>wireguard</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 64</value>
|
||||
<value>127, 60</value>
|
||||
</data>
|
||||
<data name="cmbHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>143, 20</value>
|
||||
@@ -679,7 +700,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="gbTransport.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>723, 220</value>
|
||||
<value>723, 223</value>
|
||||
</data>
|
||||
<data name="gbTransport.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>22</value>
|
||||
@@ -706,7 +727,7 @@
|
||||
<value>6, 12</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>723, 220</value>
|
||||
<value>723, 223</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>ServerTransportControl</value>
|
||||
|
||||
@@ -118,15 +118,6 @@
|
||||
<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="labAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>167, 12</value>
|
||||
</data>
|
||||
<data name="labAllowInsecure.Text" xml:space="preserve">
|
||||
<value>跳过证书验证(allowInsecure)</value>
|
||||
</data>
|
||||
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>183, 7</value>
|
||||
</data>
|
||||
<data name="tipNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>143, 12</value>
|
||||
</data>
|
||||
@@ -155,13 +146,10 @@
|
||||
<value>107, 12</value>
|
||||
</data>
|
||||
<data name="labStreamSecurity.Text" xml:space="preserve">
|
||||
<value>底层传输安全(tls)</value>
|
||||
</data>
|
||||
<data name="tipHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 12</value>
|
||||
<value>传输层安全(tls)</value>
|
||||
</data>
|
||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 100</value>
|
||||
<value>127, 92</value>
|
||||
</data>
|
||||
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>331, 20</value>
|
||||
@@ -181,4 +169,25 @@
|
||||
<data name="gbTransport.Text" xml:space="preserve">
|
||||
<value>底层传输方式(transport)</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>282, 11</value>
|
||||
</data>
|
||||
<data name="clbAlpn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>331, 7</value>
|
||||
</data>
|
||||
<data name="clbAlpn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>160, 20</value>
|
||||
</data>
|
||||
<data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>391, 21</value>
|
||||
</data>
|
||||
<data name="labAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>167, 12</value>
|
||||
</data>
|
||||
<data name="labAllowInsecure.Text" xml:space="preserve">
|
||||
<value>跳过证书验证(allowInsecure)</value>
|
||||
</data>
|
||||
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>183, 7</value>
|
||||
</data>
|
||||
</root>
|
||||
19
v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs
generated
19
v2rayN/v2rayN/Forms/SubSettingControl.Designer.cs
generated
@@ -30,6 +30,8 @@
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl));
|
||||
this.grbMain = new System.Windows.Forms.GroupBox();
|
||||
this.txtUserAgent = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnShare = new System.Windows.Forms.Button();
|
||||
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
||||
this.btnRemove = new System.Windows.Forms.Button();
|
||||
@@ -44,6 +46,9 @@
|
||||
//
|
||||
// grbMain
|
||||
//
|
||||
resources.ApplyResources(this.grbMain, "grbMain");
|
||||
this.grbMain.Controls.Add(this.txtUserAgent);
|
||||
this.grbMain.Controls.Add(this.label1);
|
||||
this.grbMain.Controls.Add(this.btnShare);
|
||||
this.grbMain.Controls.Add(this.chkEnabled);
|
||||
this.grbMain.Controls.Add(this.btnRemove);
|
||||
@@ -51,10 +56,20 @@
|
||||
this.grbMain.Controls.Add(this.txtRemarks);
|
||||
this.grbMain.Controls.Add(this.label2);
|
||||
this.grbMain.Controls.Add(this.label3);
|
||||
resources.ApplyResources(this.grbMain, "grbMain");
|
||||
this.grbMain.Name = "grbMain";
|
||||
this.grbMain.TabStop = false;
|
||||
//
|
||||
// txtUserAgent
|
||||
//
|
||||
resources.ApplyResources(this.txtUserAgent, "txtUserAgent");
|
||||
this.txtUserAgent.Name = "txtUserAgent";
|
||||
this.txtUserAgent.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// btnShare
|
||||
//
|
||||
resources.ApplyResources(this.btnShare, "btnShare");
|
||||
@@ -130,5 +145,7 @@
|
||||
private System.Windows.Forms.CheckBox chkEnabled;
|
||||
private System.Windows.Forms.Button btnShare;
|
||||
private System.Windows.Forms.PictureBox picQRCode;
|
||||
private System.Windows.Forms.TextBox txtUserAgent;
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace v2rayN.Forms
|
||||
txtRemarks.Text = subItem.remarks.ToString();
|
||||
txtUrl.Text = subItem.url.ToString();
|
||||
chkEnabled.Checked = subItem.enabled;
|
||||
txtUserAgent.Text = subItem.userAgent;
|
||||
}
|
||||
}
|
||||
private void EndBindingSub()
|
||||
@@ -44,6 +45,7 @@ namespace v2rayN.Forms
|
||||
subItem.remarks = txtRemarks.Text.TrimEx();
|
||||
subItem.url = txtUrl.Text.TrimEx();
|
||||
subItem.enabled = chkEnabled.Checked;
|
||||
subItem.userAgent = txtUserAgent.Text.TrimEx();
|
||||
}
|
||||
}
|
||||
private void txtRemarks_Leave(object sender, EventArgs e)
|
||||
|
||||
@@ -117,215 +117,305 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>User Agent(optional)</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="btnShare.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<data name="label2.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="btnShare.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>434, 21</value>
|
||||
</data>
|
||||
<data name="btnShare.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="btnShare.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>26</value>
|
||||
</data>
|
||||
<data name="btnShare.Text" xml:space="preserve">
|
||||
<value>Share</value>
|
||||
</data>
|
||||
<data name=">>btnShare.Name" xml:space="preserve">
|
||||
<value>btnShare</value>
|
||||
</data>
|
||||
<data name=">>btnShare.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnShare.Parent" xml:space="preserve">
|
||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>btnShare.ZOrder" xml:space="preserve">
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>619, 162</value>
|
||||
</data>
|
||||
<data name=">>txtUserAgent.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>368, 23</value>
|
||||
</data>
|
||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 16</value>
|
||||
</data>
|
||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
||||
<value>txtUrl</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
||||
<value>picQRCode</value>
|
||||
</data>
|
||||
<data name=">>btnShare.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="btnRemove.Text" xml:space="preserve">
|
||||
<value>Remove</value>
|
||||
</data>
|
||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>525, 21</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name=">>txtUserAgent.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="txtUserAgent.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 111</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>SubSettingControl</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name="grbMain.Text" xml:space="preserve">
|
||||
<value>Subscription details</value>
|
||||
</data>
|
||||
<data name="btnShare.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>26</value>
|
||||
</data>
|
||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name="btnShare.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>434, 21</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 12</value>
|
||||
</data>
|
||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>232, 21</value>
|
||||
</data>
|
||||
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 12</value>
|
||||
</data>
|
||||
<data name=">>label3.Name" xml:space="preserve">
|
||||
<value>label3</value>
|
||||
</data>
|
||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 21</value>
|
||||
</data>
|
||||
<data name="btnShare.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="btnShare.Text" xml:space="preserve">
|
||||
<value>Share</value>
|
||||
</data>
|
||||
<data name=">>label1.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 53</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>27</value>
|
||||
</data>
|
||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 12</value>
|
||||
</data>
|
||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 53</value>
|
||||
</data>
|
||||
<data name="txtUserAgent.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>label2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>47, 12</value>
|
||||
</data>
|
||||
<data name="txtUrl.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
||||
<value>Vertical</value>
|
||||
</data>
|
||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
||||
<value>btnRemove</value>
|
||||
</data>
|
||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="chkEnabled.Text" xml:space="preserve">
|
||||
<value>Enable</value>
|
||||
</data>
|
||||
<data name=">>chkEnabled.Name" xml:space="preserve">
|
||||
<value>chkEnabled</value>
|
||||
</data>
|
||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>525, 21</value>
|
||||
</data>
|
||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name="btnRemove.Text" xml:space="preserve">
|
||||
<value>Remove</value>
|
||||
</data>
|
||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
||||
<value>btnRemove</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>127, 55</value>
|
||||
</data>
|
||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="txtUrl.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
||||
<value>Vertical</value>
|
||||
</data>
|
||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>473, 46</value>
|
||||
</data>
|
||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>23</value>
|
||||
</data>
|
||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
||||
<value>txtUrl</value>
|
||||
</data>
|
||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</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>232, 21</value>
|
||||
</data>
|
||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
||||
<value>txtRemarks</value>
|
||||
</data>
|
||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 148</value>
|
||||
</data>
|
||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
||||
<data name="btnShare.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
||||
<value>4</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">
|
||||
<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">
|
||||
<data name=">>btnShare.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 55</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 12</value>
|
||||
</data>
|
||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>Address (url)</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">
|
||||
<data name=">>txtUserAgent.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>619, 110</value>
|
||||
</data>
|
||||
<data name="grbMain.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="grbMain.Text" xml:space="preserve">
|
||||
<value>Subscription details</value>
|
||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>label2.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name="txtUserAgent.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>473, 21</value>
|
||||
</data>
|
||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>368, 23</value>
|
||||
</data>
|
||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>label2.Name" xml:space="preserve">
|
||||
<value>label2</value>
|
||||
</data>
|
||||
<data name=">>grbMain.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label3.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>619, 148</value>
|
||||
</data>
|
||||
<data name=">>btnShare.Name" xml:space="preserve">
|
||||
<value>btnShare</value>
|
||||
</data>
|
||||
<data name=">>btnShare.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="chkEnabled.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, 115</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>619, 310</value>
|
||||
</data>
|
||||
<data name=">>txtUserAgent.Name" xml:space="preserve">
|
||||
<value>txtUserAgent</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>Remarks</value>
|
||||
</data>
|
||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="picQRCode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>473, 46</value>
|
||||
</data>
|
||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 25</value>
|
||||
</data>
|
||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
</data>
|
||||
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>Address (url)</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<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>
|
||||
</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=">>picQRCode.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>grbMain.Name" xml:space="preserve">
|
||||
<value>grbMain</value>
|
||||
@@ -333,55 +423,16 @@
|
||||
<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>
|
||||
</data>
|
||||
<data name=">>grbMain.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<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=">>grbMain.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="picQRCode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 110</value>
|
||||
</data>
|
||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>619, 200</value>
|
||||
</data>
|
||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
||||
<value>picQRCode</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<data 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>
|
||||
<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.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>619, 310</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>SubSettingControl</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>
|
||||
@@ -117,10 +117,16 @@
|
||||
<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="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>101, 12</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>User Agent(可选)</value>
|
||||
</data>
|
||||
<data name="btnShare.Text" xml:space="preserve">
|
||||
<value>分享</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>48, 16</value>
|
||||
</data>
|
||||
|
||||
@@ -21,7 +21,6 @@ namespace v2rayN
|
||||
/// </summary>
|
||||
public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test";
|
||||
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
||||
public const string AvailabilityTestUrl = @"https://www.google.com/generate_204";
|
||||
|
||||
/// <summary>
|
||||
/// CustomRoutingListUrl
|
||||
@@ -177,6 +176,10 @@ namespace v2rayN
|
||||
/// </summary>
|
||||
public const string MyRegKeyLanguage = "CurrentLanguage";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public const string MyRegKeySecurityProtocolTls13 = "SecurityProtocolTls13";
|
||||
/// <summary>
|
||||
/// Icon
|
||||
/// </summary>
|
||||
public const string CustomIconName = "v2rayN.ico";
|
||||
@@ -193,7 +196,11 @@ namespace v2rayN
|
||||
|
||||
public const string RoutingRuleComma = "<COMMA>";
|
||||
|
||||
public static readonly IEnumerable<string> ssSecuritys = new HashSet<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
||||
public static readonly List<string> vmessSecuritys = new List<string> { "aes-128-gcm", "chacha20-poly1305", "auto", "none", "zero" };
|
||||
public static readonly List<string> ssSecuritys = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
||||
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> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
||||
|
||||
public const string GrpcgunMode = "gun";
|
||||
public const string GrpcmultiMode = "multi";
|
||||
|
||||
@@ -121,25 +121,32 @@ namespace v2rayN.Handler
|
||||
}
|
||||
if (config.uiItem == null)
|
||||
{
|
||||
config.uiItem = new UIItem();
|
||||
config.uiItem = new UIItem()
|
||||
{
|
||||
enableAutoAdjustMainLvColWidth = true
|
||||
};
|
||||
}
|
||||
if (config.uiItem.mainLvColWidth == null)
|
||||
{
|
||||
config.uiItem.mainLvColWidth = new Dictionary<string, int>();
|
||||
}
|
||||
|
||||
//// 如果是用户升级,首次会有端口号为0的情况,不可用,这里处理
|
||||
//if (config.pacPort == 0)
|
||||
//{
|
||||
// config.pacPort = 8888;
|
||||
//}
|
||||
if (Utils.IsNullOrEmpty(config.speedTestUrl))
|
||||
|
||||
if (config.constItem == null)
|
||||
{
|
||||
config.speedTestUrl = Global.SpeedTestUrl;
|
||||
config.constItem = new ConstItem();
|
||||
}
|
||||
if (Utils.IsNullOrEmpty(config.speedPingTestUrl))
|
||||
if (Utils.IsNullOrEmpty(config.constItem.speedTestUrl))
|
||||
{
|
||||
config.speedPingTestUrl = Global.SpeedPingTestUrl;
|
||||
config.constItem.speedTestUrl = Global.SpeedTestUrl;
|
||||
}
|
||||
if (Utils.IsNullOrEmpty(config.constItem.speedPingTestUrl))
|
||||
{
|
||||
config.constItem.speedPingTestUrl = Global.SpeedPingTestUrl;
|
||||
}
|
||||
if (Utils.IsNullOrEmpty(config.constItem.defIEProxyExceptions))
|
||||
{
|
||||
config.constItem.defIEProxyExceptions = Global.IEProxyExceptions;
|
||||
}
|
||||
//if (Utils.IsNullOrEmpty(config.remoteDNS))
|
||||
//{
|
||||
@@ -168,6 +175,11 @@ namespace v2rayN.Handler
|
||||
{
|
||||
VmessItem vmessItem = config.vmess[i];
|
||||
UpgradeServerVersion(ref vmessItem);
|
||||
|
||||
if (string.IsNullOrEmpty(vmessItem.indexId))
|
||||
{
|
||||
vmessItem.indexId = Utils.GetGUID(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +199,6 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int AddServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true)
|
||||
{
|
||||
vmessItem.configVersion = 2;
|
||||
vmessItem.configType = (int)EConfigType.Vmess;
|
||||
|
||||
vmessItem.address = vmessItem.address.TrimEx();
|
||||
@@ -199,6 +210,11 @@ namespace v2rayN.Handler
|
||||
vmessItem.path = vmessItem.path.TrimEx();
|
||||
vmessItem.streamSecurity = vmessItem.streamSecurity.TrimEx();
|
||||
|
||||
if (!Global.vmessSecuritys.Contains(vmessItem.security))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (index >= 0)
|
||||
{
|
||||
//修改
|
||||
@@ -210,17 +226,7 @@ namespace v2rayN.Handler
|
||||
}
|
||||
else
|
||||
{
|
||||
//添加
|
||||
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
||||
{
|
||||
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
||||
}
|
||||
config.vmess.Add(vmessItem);
|
||||
if (config.vmess.Count == 1)
|
||||
{
|
||||
config.index = 0;
|
||||
Global.reloadV2ray = true;
|
||||
}
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
}
|
||||
|
||||
if (toFile)
|
||||
@@ -238,7 +244,7 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int RemoveServer(ref Config config, List<int> indexs)
|
||||
{
|
||||
var itemId = config.getItemId();
|
||||
var indexId = config.indexId();
|
||||
|
||||
for (int k = indexs.Count - 1; k >= 0; k--)
|
||||
{
|
||||
@@ -251,23 +257,7 @@ namespace v2rayN.Handler
|
||||
config.vmess.RemoveAt(index);
|
||||
}
|
||||
|
||||
var index_ = config.vmess.FindIndex(it => it.getItemId() == itemId);
|
||||
if (index_ >= 0)
|
||||
{
|
||||
config.index = index_;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (config.vmess.Count > 0)
|
||||
{
|
||||
config.index = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
config.index = -1;
|
||||
}
|
||||
}
|
||||
Global.reloadV2ray = true;
|
||||
SetIndex(ref config, indexId);
|
||||
|
||||
ToJsonFile(config);
|
||||
|
||||
@@ -542,7 +532,6 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int AddShadowsocksServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true)
|
||||
{
|
||||
vmessItem.configVersion = 2;
|
||||
vmessItem.configType = (int)EConfigType.Shadowsocks;
|
||||
|
||||
vmessItem.address = vmessItem.address.TrimEx();
|
||||
@@ -565,13 +554,7 @@ namespace v2rayN.Handler
|
||||
}
|
||||
else
|
||||
{
|
||||
//添加
|
||||
config.vmess.Add(vmessItem);
|
||||
if (config.vmess.Count == 1)
|
||||
{
|
||||
config.index = 0;
|
||||
Global.reloadV2ray = true;
|
||||
}
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
}
|
||||
|
||||
if (toFile)
|
||||
@@ -591,7 +574,6 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int AddSocksServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true)
|
||||
{
|
||||
vmessItem.configVersion = 2;
|
||||
vmessItem.configType = (int)EConfigType.Socks;
|
||||
|
||||
vmessItem.address = vmessItem.address.TrimEx();
|
||||
@@ -607,13 +589,7 @@ namespace v2rayN.Handler
|
||||
}
|
||||
else
|
||||
{
|
||||
//添加
|
||||
config.vmess.Add(vmessItem);
|
||||
if (config.vmess.Count == 1)
|
||||
{
|
||||
config.index = 0;
|
||||
Global.reloadV2ray = true;
|
||||
}
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
}
|
||||
|
||||
if (toFile)
|
||||
@@ -634,7 +610,6 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int AddTrojanServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true)
|
||||
{
|
||||
vmessItem.configVersion = 2;
|
||||
vmessItem.configType = (int)EConfigType.Trojan;
|
||||
|
||||
vmessItem.address = vmessItem.address.TrimEx();
|
||||
@@ -659,13 +634,7 @@ namespace v2rayN.Handler
|
||||
}
|
||||
else
|
||||
{
|
||||
//添加
|
||||
config.vmess.Add(vmessItem);
|
||||
if (config.vmess.Count == 1)
|
||||
{
|
||||
config.index = 0;
|
||||
Global.reloadV2ray = true;
|
||||
}
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
}
|
||||
|
||||
if (toFile)
|
||||
@@ -765,7 +734,7 @@ namespace v2rayN.Handler
|
||||
foreach (string str in arrData)
|
||||
{
|
||||
//maybe sub
|
||||
if (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol))
|
||||
if (string.IsNullOrEmpty(subid) && (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol)))
|
||||
{
|
||||
if (AddSubItem(ref config, str) == 0)
|
||||
{
|
||||
@@ -828,12 +797,9 @@ namespace v2rayN.Handler
|
||||
public static int AddSubItem(ref Config config, string url)
|
||||
{
|
||||
//already exists
|
||||
foreach (SubItem sub in config.subItem)
|
||||
if (config.subItem.FindIndex(e => e.url == url) >= 0)
|
||||
{
|
||||
if (url == sub.url)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
SubItem subItem = new SubItem
|
||||
@@ -863,7 +829,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
if (Utils.IsNullOrEmpty(sub.id))
|
||||
{
|
||||
sub.id = Utils.GetGUID();
|
||||
sub.id = Utils.GetGUID(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -879,6 +845,7 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int RemoveServerViaSubid(ref Config config, string subid)
|
||||
{
|
||||
var indexId = config.indexId();
|
||||
if (Utils.IsNullOrEmpty(subid) || config.vmess.Count <= 0)
|
||||
{
|
||||
return -1;
|
||||
@@ -891,6 +858,8 @@ namespace v2rayN.Handler
|
||||
}
|
||||
}
|
||||
|
||||
SetIndex(ref config, indexId);
|
||||
|
||||
ToJsonFile(config);
|
||||
return 0;
|
||||
}
|
||||
@@ -901,6 +870,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
var propertyName = string.Empty;
|
||||
switch (name)
|
||||
{
|
||||
case EServerColName.configType:
|
||||
@@ -909,28 +879,30 @@ namespace v2rayN.Handler
|
||||
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;
|
||||
}
|
||||
string itemId = config.getItemId();
|
||||
|
||||
var indexId = config.indexId();
|
||||
var items = config.vmess.AsQueryable();
|
||||
|
||||
if (asc)
|
||||
{
|
||||
config.vmess = items.OrderBy(name.ToString()).ToList();
|
||||
config.vmess = items.OrderBy(propertyName).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
config.vmess = items.OrderByDescending(name.ToString()).ToList();
|
||||
config.vmess = items.OrderByDescending(propertyName).ToList();
|
||||
}
|
||||
|
||||
var index_ = config.vmess.FindIndex(it => it.getItemId() == itemId);
|
||||
if (index_ >= 0)
|
||||
{
|
||||
config.index = index_;
|
||||
}
|
||||
SetIndex(ref config, indexId);
|
||||
|
||||
ToJsonFile(config);
|
||||
return 0;
|
||||
@@ -945,7 +917,6 @@ namespace v2rayN.Handler
|
||||
/// <returns></returns>
|
||||
public static int AddVlessServer(ref Config config, VmessItem vmessItem, int index, bool toFile = true)
|
||||
{
|
||||
vmessItem.configVersion = 2;
|
||||
vmessItem.configType = (int)EConfigType.VLESS;
|
||||
|
||||
vmessItem.address = vmessItem.address.TrimEx();
|
||||
@@ -968,17 +939,7 @@ namespace v2rayN.Handler
|
||||
}
|
||||
else
|
||||
{
|
||||
//添加
|
||||
if (Utils.IsNullOrEmpty(vmessItem.allowInsecure))
|
||||
{
|
||||
vmessItem.allowInsecure = config.defAllowInsecure.ToString();
|
||||
}
|
||||
config.vmess.Add(vmessItem);
|
||||
if (config.vmess.Count == 1)
|
||||
{
|
||||
config.index = 0;
|
||||
Global.reloadV2ray = true;
|
||||
}
|
||||
AddServerCommon(ref config, vmessItem);
|
||||
}
|
||||
|
||||
if (toFile)
|
||||
@@ -991,7 +952,7 @@ namespace v2rayN.Handler
|
||||
|
||||
public static int DedupServerList(ref Config config)
|
||||
{
|
||||
var itemId = config.getItemId();
|
||||
var indexId = config.indexId();
|
||||
|
||||
List<Mode.VmessItem> source = config.vmess;
|
||||
bool keepOlder = config.keepOlderDedupl;
|
||||
@@ -1025,8 +986,42 @@ namespace v2rayN.Handler
|
||||
if (!keepOlder) list.Reverse();
|
||||
config.vmess = list;
|
||||
|
||||
var index_ = config.vmess.FindIndex(it => it.getItemId() == itemId);
|
||||
if (index_ >= 0)
|
||||
SetIndex(ref config, indexId);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static int AddServerCommon(ref Config config, VmessItem vmessItem)
|
||||
{
|
||||
vmessItem.indexId = Utils.GetGUID(false);
|
||||
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;
|
||||
}
|
||||
|
||||
config.vmess.Add(vmessItem);
|
||||
if (config.vmess.Count == 1)
|
||||
{
|
||||
config.index = 0;
|
||||
Global.reloadV2ray = true;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static int SetIndex(ref Config config, string indexId)
|
||||
{
|
||||
var index_ = config.FindIndexId(indexId);
|
||||
|
||||
if (config.index == index_)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if (index_ >= 0)
|
||||
{
|
||||
config.index = index_;
|
||||
}
|
||||
@@ -1042,7 +1037,6 @@ namespace v2rayN.Handler
|
||||
}
|
||||
}
|
||||
Global.reloadV2ray = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1125,6 +1119,13 @@ namespace v2rayN.Handler
|
||||
else
|
||||
{
|
||||
config.routings.Add(item);
|
||||
int indexLocked = config.routings.FindIndex(it => it.locked == true);
|
||||
if (indexLocked != -1)
|
||||
{
|
||||
var itemLocked = Utils.DeepCopy(config.routings[indexLocked]);
|
||||
config.routings.RemoveAt(indexLocked);
|
||||
config.routings.Add(itemLocked);
|
||||
}
|
||||
}
|
||||
ToJsonFile(config);
|
||||
|
||||
@@ -1263,15 +1264,6 @@ namespace v2rayN.Handler
|
||||
|
||||
if (config.routings.Count(it => it.locked != true) <= 0)
|
||||
{
|
||||
//Global
|
||||
var item1 = new RoutingItem()
|
||||
{
|
||||
remarks = "全局(Global)",
|
||||
url = string.Empty,
|
||||
};
|
||||
AddBatchRoutingRules(ref item1, Utils.GetEmbedText(Global.CustomRoutingFileName + "global"));
|
||||
config.routings.Add(item1);
|
||||
|
||||
//Bypass the mainland
|
||||
var item2 = new RoutingItem()
|
||||
{
|
||||
@@ -1290,6 +1282,15 @@ namespace v2rayN.Handler
|
||||
AddBatchRoutingRules(ref item3, Utils.GetEmbedText(Global.CustomRoutingFileName + "black"));
|
||||
config.routings.Add(item3);
|
||||
|
||||
//Global
|
||||
var item1 = new RoutingItem()
|
||||
{
|
||||
remarks = "全局(Global)",
|
||||
url = string.Empty,
|
||||
};
|
||||
AddBatchRoutingRules(ref item1, Utils.GetEmbedText(Global.CustomRoutingFileName + "global"));
|
||||
config.routings.Add(item1);
|
||||
|
||||
config.routingIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ namespace v2rayN.Handler
|
||||
/// DownloadString
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
public void WebDownloadString(string url)
|
||||
public void WebDownloadString(string url, WebProxy webProxy, string userAgent)
|
||||
{
|
||||
string source = string.Empty;
|
||||
try
|
||||
@@ -139,6 +139,17 @@ namespace v2rayN.Handler
|
||||
Utils.SetSecurityProtocol();
|
||||
|
||||
WebClientEx ws = new WebClientEx();
|
||||
if (webProxy != null)
|
||||
{
|
||||
ws.Proxy = webProxy;
|
||||
}
|
||||
|
||||
if (Utils.IsNullOrEmpty(userAgent))
|
||||
{
|
||||
userAgent = $"{Utils.GetVersion(false)}";
|
||||
}
|
||||
ws.Headers.Add("user-agent", userAgent);
|
||||
|
||||
ws.DownloadStringCompleted += Ws_DownloadStringCompleted;
|
||||
ws.DownloadStringAsync(new Uri(url));
|
||||
}
|
||||
|
||||
@@ -185,15 +185,16 @@ namespace v2rayN.Handler
|
||||
|
||||
public void BackupGuiNConfig(Config config, bool auto = false)
|
||||
{
|
||||
string fileName = string.Empty;
|
||||
string fileName = $"guiNConfig_{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff")}.json";
|
||||
if (auto)
|
||||
{
|
||||
fileName = Utils.GetTempPath($"guiNConfig{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.json");
|
||||
fileName = Utils.GetTempPath(fileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveFileDialog fileDialog = new SaveFileDialog
|
||||
{
|
||||
FileName = fileName,
|
||||
Filter = "guiNConfig|*.json",
|
||||
FilterIndex = 2,
|
||||
RestoreDirectory = true
|
||||
|
||||
@@ -76,7 +76,8 @@ namespace v2rayN.Handler
|
||||
host = item.requestHost,
|
||||
path = item.path,
|
||||
tls = item.streamSecurity,
|
||||
sni = item.sni
|
||||
sni = item.sni,
|
||||
alpn = Utils.List2String(item.alpn)
|
||||
};
|
||||
|
||||
url = Utils.ToJson(vmessQRCode);
|
||||
@@ -95,15 +96,15 @@ namespace v2rayN.Handler
|
||||
{
|
||||
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||
}
|
||||
url = string.Format("{0}:{1}@{2}:{3}",
|
||||
item.security,
|
||||
item.id,
|
||||
item.address,
|
||||
item.port);
|
||||
url = Utils.Base64Encode(url);
|
||||
//new
|
||||
//var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
||||
//url = $"{pw}@{item.address}:{ item.port}";
|
||||
//url = string.Format("{0}:{1}@{2}:{3}",
|
||||
// item.security,
|
||||
// item.id,
|
||||
// item.address,
|
||||
// item.port);
|
||||
//url = Utils.Base64Encode(url);
|
||||
//new Sip002
|
||||
var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
||||
url = $"{pw}@{GetIpv6(item.address)}:{ item.port}";
|
||||
url = string.Format("{0}{1}{2}", Global.ssProtocol, url, remark);
|
||||
return url;
|
||||
}
|
||||
@@ -116,12 +117,15 @@ namespace v2rayN.Handler
|
||||
{
|
||||
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||
}
|
||||
url = string.Format("{0}:{1}@{2}:{3}",
|
||||
item.security,
|
||||
item.id,
|
||||
item.address,
|
||||
item.port);
|
||||
url = Utils.Base64Encode(url);
|
||||
//url = string.Format("{0}:{1}@{2}:{3}",
|
||||
// item.security,
|
||||
// item.id,
|
||||
// item.address,
|
||||
// item.port);
|
||||
//url = Utils.Base64Encode(url);
|
||||
//new
|
||||
var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
||||
url = $"{pw}@{GetIpv6(item.address)}:{ item.port}";
|
||||
url = string.Format("{0}{1}{2}", Global.socksProtocol, url, remark);
|
||||
return url;
|
||||
}
|
||||
@@ -134,15 +138,14 @@ namespace v2rayN.Handler
|
||||
{
|
||||
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||
}
|
||||
string query = string.Empty;
|
||||
if (!Utils.IsNullOrEmpty(item.sni))
|
||||
{
|
||||
query = string.Format("?sni={0}", Utils.UrlEncode(item.sni));
|
||||
}
|
||||
var dicQuery = new Dictionary<string, string>();
|
||||
GetStdTransport(item, null, ref dicQuery);
|
||||
string query = "?" + string.Join("&", dicQuery.Select(x => x.Key + "=" + x.Value).ToArray());
|
||||
|
||||
url = string.Format("{0}@{1}:{2}",
|
||||
item.id,
|
||||
GetIpv6(item.address),
|
||||
item.port);
|
||||
item.id,
|
||||
GetIpv6(item.address),
|
||||
item.port);
|
||||
url = string.Format("{0}{1}{2}{3}", Global.trojanProtocol, url, query, remark);
|
||||
return url;
|
||||
}
|
||||
@@ -156,10 +159,6 @@ namespace v2rayN.Handler
|
||||
remark = "#" + Utils.UrlEncode(item.remarks);
|
||||
}
|
||||
var dicQuery = new Dictionary<string, string>();
|
||||
if (!Utils.IsNullOrEmpty(item.flow))
|
||||
{
|
||||
dicQuery.Add("flow", item.flow);
|
||||
}
|
||||
if (!Utils.IsNullOrEmpty(item.security))
|
||||
{
|
||||
dicQuery.Add("encryption", item.security);
|
||||
@@ -168,18 +167,47 @@ namespace v2rayN.Handler
|
||||
{
|
||||
dicQuery.Add("encryption", "none");
|
||||
}
|
||||
GetStdTransport(item, "none", ref dicQuery);
|
||||
string query = "?" + string.Join("&", dicQuery.Select(x => x.Key + "=" + x.Value).ToArray());
|
||||
|
||||
url = string.Format("{0}@{1}:{2}",
|
||||
item.id,
|
||||
GetIpv6(item.address),
|
||||
item.port);
|
||||
url = string.Format("{0}{1}{2}{3}", Global.vlessProtocol, url, query, remark);
|
||||
return url;
|
||||
}
|
||||
private static string GetIpv6(string address)
|
||||
{
|
||||
return Utils.IsIpv6(address) ? $"[{address}]" : address;
|
||||
}
|
||||
|
||||
private static int GetStdTransport(VmessItem item, string securityDef, ref Dictionary<string, string> dicQuery)
|
||||
{
|
||||
if (!Utils.IsNullOrEmpty(item.flow))
|
||||
{
|
||||
dicQuery.Add("flow", item.flow);
|
||||
}
|
||||
|
||||
if (!Utils.IsNullOrEmpty(item.streamSecurity))
|
||||
{
|
||||
dicQuery.Add("security", item.streamSecurity);
|
||||
}
|
||||
else
|
||||
{
|
||||
dicQuery.Add("security", "none");
|
||||
if (securityDef != null)
|
||||
{
|
||||
dicQuery.Add("security", securityDef);
|
||||
}
|
||||
}
|
||||
if (!Utils.IsNullOrEmpty(item.sni))
|
||||
{
|
||||
dicQuery.Add("sni", item.sni);
|
||||
}
|
||||
if (item.alpn != null && item.alpn.Count > 0)
|
||||
{
|
||||
dicQuery.Add("alpn", Utils.UrlEncode(Utils.List2String(item.alpn)));
|
||||
}
|
||||
if (!Utils.IsNullOrEmpty(item.network))
|
||||
{
|
||||
dicQuery.Add("type", item.network);
|
||||
@@ -267,19 +295,9 @@ namespace v2rayN.Handler
|
||||
}
|
||||
break;
|
||||
}
|
||||
string query = "?" + string.Join("&", dicQuery.Select(x => x.Key + "=" + x.Value).ToArray());
|
||||
return 0;
|
||||
}
|
||||
|
||||
url = string.Format("{0}@{1}:{2}",
|
||||
item.id,
|
||||
GetIpv6(item.address),
|
||||
item.port);
|
||||
url = string.Format("{0}{1}{2}{3}", Global.vlessProtocol, url, query, remark);
|
||||
return url;
|
||||
}
|
||||
private static string GetIpv6(string address)
|
||||
{
|
||||
return Utils.IsIpv6(address) ? $"[{address}]" : address;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ImportShareUrl
|
||||
@@ -344,7 +362,21 @@ namespace v2rayN.Handler
|
||||
{
|
||||
msg = UIRes.I18N("ConfigurationFormatIncorrect");
|
||||
|
||||
vmessItem = ResolveSocks(result);
|
||||
vmessItem = ResolveSocksNew(result);
|
||||
if (vmessItem == null)
|
||||
{
|
||||
vmessItem = ResolveSocks(result);
|
||||
}
|
||||
if (vmessItem == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (vmessItem.address.Length == 0 || vmessItem.port == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
vmessItem.configType = (int)EConfigType.Socks;
|
||||
}
|
||||
else if (result.StartsWith(Global.trojanProtocol))
|
||||
{
|
||||
@@ -422,6 +454,7 @@ namespace v2rayN.Handler
|
||||
vmessItem.path = Utils.ToString(vmessQRCode.path);
|
||||
vmessItem.streamSecurity = Utils.ToString(vmessQRCode.tls);
|
||||
vmessItem.sni = Utils.ToString(vmessQRCode.sni);
|
||||
vmessItem.alpn = Utils.String2List(vmessQRCode.alpn);
|
||||
|
||||
return vmessItem;
|
||||
}
|
||||
@@ -460,7 +493,6 @@ namespace v2rayN.Handler
|
||||
vmessItem.network = Global.DefaultNetwork;
|
||||
vmessItem.headerType = Global.None;
|
||||
vmessItem.remarks = "Alien";
|
||||
vmessItem.alterId = 0;
|
||||
|
||||
return vmessItem;
|
||||
}
|
||||
@@ -477,18 +509,13 @@ namespace v2rayN.Handler
|
||||
|
||||
i.address = u.IdnHost;
|
||||
i.port = u.Port;
|
||||
i.remarks = u.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||
i.remarks = Utils.UrlDecode(u.GetComponents(UriComponents.Fragment, UriFormat.Unescaped));
|
||||
var q = HttpUtility.ParseQueryString(u.Query);
|
||||
|
||||
var m = StdVmessUserInfo.Match(u.UserInfo);
|
||||
if (!m.Success) return null;
|
||||
|
||||
i.id = m.Groups["id"].Value;
|
||||
if (!int.TryParse(m.Groups["alterId"].Value, out int aid))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
i.alterId = aid;
|
||||
|
||||
if (m.Groups["streamSecurity"].Success)
|
||||
{
|
||||
@@ -564,24 +591,14 @@ namespace v2rayN.Handler
|
||||
}
|
||||
VmessItem server = new VmessItem
|
||||
{
|
||||
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
||||
remarks = Utils.UrlDecode(parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)),
|
||||
address = parsedUrl.IdnHost,
|
||||
port = parsedUrl.Port,
|
||||
};
|
||||
|
||||
// parse base64 UserInfo
|
||||
string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.Unescaped);
|
||||
string base64 = rawUserInfo.Replace('-', '+').Replace('_', '/'); // Web-safe base64 to normal base64
|
||||
string userInfo;
|
||||
try
|
||||
{
|
||||
userInfo = Encoding.UTF8.GetString(Convert.FromBase64String(
|
||||
base64.PadRight(base64.Length + (4 - base64.Length % 4) % 4, '=')));
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
string userInfo = Utils.Base64Decode(rawUserInfo);
|
||||
string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2);
|
||||
if (userInfoParts.Length != 2)
|
||||
{
|
||||
@@ -618,8 +635,7 @@ namespace v2rayN.Handler
|
||||
Match details;
|
||||
try
|
||||
{
|
||||
details = DetailsParser.Match(Encoding.UTF8.GetString(Convert.FromBase64String(
|
||||
base64.PadRight(base64.Length + (4 - base64.Length % 4) % 4, '='))));
|
||||
details = DetailsParser.Match(Utils.Base64Decode(base64));
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
@@ -636,7 +652,7 @@ namespace v2rayN.Handler
|
||||
|
||||
|
||||
private static readonly Regex StdVmessUserInfo = new Regex(
|
||||
@"^(?<network>[a-z]+)(\+(?<streamSecurity>[a-z]+))?:(?<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})-(?<alterId>[0-9]+)$");
|
||||
@"^(?<network>[a-z]+)(\+(?<streamSecurity>[a-z]+))?:(?<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$");
|
||||
|
||||
private static VmessItem ResolveSocks(string result)
|
||||
{
|
||||
@@ -684,30 +700,55 @@ namespace v2rayN.Handler
|
||||
return vmessItem;
|
||||
}
|
||||
|
||||
private static VmessItem ResolveSocksNew(string result)
|
||||
{
|
||||
Uri parsedUrl;
|
||||
try
|
||||
{
|
||||
parsedUrl = new Uri(result);
|
||||
}
|
||||
catch (UriFormatException)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
VmessItem server = new VmessItem
|
||||
{
|
||||
remarks = Utils.UrlDecode(parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped)),
|
||||
address = parsedUrl.IdnHost,
|
||||
port = parsedUrl.Port,
|
||||
};
|
||||
|
||||
// parse base64 UserInfo
|
||||
string rawUserInfo = parsedUrl.GetComponents(UriComponents.UserInfo, UriFormat.Unescaped);
|
||||
string userInfo = Utils.Base64Decode(rawUserInfo);
|
||||
string[] userInfoParts = userInfo.Split(new char[] { ':' }, 2);
|
||||
if (userInfoParts.Length == 2)
|
||||
{
|
||||
server.security = userInfoParts[0];
|
||||
server.id = userInfoParts[1];
|
||||
}
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
private static VmessItem ResolveTrojan(string result)
|
||||
{
|
||||
VmessItem vmessItem = new VmessItem();
|
||||
|
||||
vmessItem.configType = (int)EConfigType.Trojan;
|
||||
|
||||
Uri uri = new Uri(result);
|
||||
vmessItem.address = uri.IdnHost;
|
||||
vmessItem.port = uri.Port;
|
||||
vmessItem.id = uri.UserInfo;
|
||||
|
||||
var qurery = HttpUtility.ParseQueryString(uri.Query);
|
||||
vmessItem.sni = qurery["sni"] ?? "";
|
||||
|
||||
var remarks = uri.Fragment.Replace("#", "");
|
||||
if (Utils.IsNullOrEmpty(remarks))
|
||||
VmessItem item = new VmessItem
|
||||
{
|
||||
vmessItem.remarks = "NONE";
|
||||
}
|
||||
else
|
||||
{
|
||||
vmessItem.remarks = Utils.UrlDecode(remarks);
|
||||
}
|
||||
return vmessItem;
|
||||
configType = (int)EConfigType.Trojan
|
||||
};
|
||||
|
||||
Uri url = new Uri(result);
|
||||
|
||||
item.address = url.IdnHost;
|
||||
item.port = url.Port;
|
||||
item.remarks = Utils.UrlDecode(url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped));
|
||||
item.id = url.UserInfo;
|
||||
|
||||
var query = HttpUtility.ParseQueryString(url.Query);
|
||||
ResolveStdTransport(query, ref item);
|
||||
|
||||
return item;
|
||||
}
|
||||
private static VmessItem ResolveStdVLESS(string result)
|
||||
{
|
||||
@@ -721,15 +762,23 @@ namespace v2rayN.Handler
|
||||
|
||||
item.address = url.IdnHost;
|
||||
item.port = url.Port;
|
||||
item.remarks = url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped);
|
||||
item.remarks = Utils.UrlDecode(url.GetComponents(UriComponents.Fragment, UriFormat.Unescaped));
|
||||
item.id = url.UserInfo;
|
||||
|
||||
var query = HttpUtility.ParseQueryString(url.Query);
|
||||
|
||||
item.flow = query["flow"] ?? "";
|
||||
item.security = query["encryption"] ?? "none";
|
||||
item.streamSecurity = query["security"] ?? "";
|
||||
ResolveStdTransport(query, ref item);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
private static int ResolveStdTransport(NameValueCollection query, ref VmessItem item)
|
||||
{
|
||||
item.flow = query["flow"] ?? "";
|
||||
item.streamSecurity = query["security"] ?? "";
|
||||
item.sni = query["sni"] ?? "";
|
||||
item.alpn = Utils.String2List(Utils.UrlDecode(query["alpn"] ?? ""));
|
||||
item.network = query["type"] ?? "tcp";
|
||||
switch (item.network)
|
||||
{
|
||||
@@ -765,10 +814,9 @@ namespace v2rayN.Handler
|
||||
item.headerType = Utils.UrlDecode(query["mode"] ?? Global.GrpcgunMode);
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
break;
|
||||
}
|
||||
|
||||
return item;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
private Config _config;
|
||||
private V2rayHandler _v2rayHandler;
|
||||
private List<int> _selecteds;
|
||||
private List<ServerTestItem> _selecteds;
|
||||
Action<int, string> _updateFunc;
|
||||
|
||||
public SpeedtestHandler(ref Config config)
|
||||
@@ -25,9 +25,22 @@ namespace v2rayN.Handler
|
||||
{
|
||||
_config = config;
|
||||
_v2rayHandler = v2rayHandler;
|
||||
_selecteds = Utils.DeepCopy(selecteds);
|
||||
//_selecteds = Utils.DeepCopy(selecteds);
|
||||
_updateFunc = update;
|
||||
|
||||
_selecteds = new List<ServerTestItem>();
|
||||
foreach (var it in selecteds)
|
||||
{
|
||||
_selecteds.Add(new ServerTestItem()
|
||||
{
|
||||
selected = it,
|
||||
indexId = config.vmess[it].indexId,
|
||||
address = config.vmess[it].address,
|
||||
port = config.vmess[it].port,
|
||||
configType = config.vmess[it].configType
|
||||
});
|
||||
}
|
||||
|
||||
if (actionType == "ping")
|
||||
{
|
||||
Task.Run(() => RunPing());
|
||||
@@ -46,19 +59,19 @@ namespace v2rayN.Handler
|
||||
}
|
||||
}
|
||||
|
||||
private void RunPingSub(Action<int> updateFun)
|
||||
private void RunPingSub(Action<ServerTestItem> updateFun)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (int index in _selecteds)
|
||||
foreach (var it in _selecteds)
|
||||
{
|
||||
if (_config.vmess[index].configType == (int)EConfigType.Custom)
|
||||
if (it.configType == (int)EConfigType.Custom)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
try
|
||||
{
|
||||
updateFun(index);
|
||||
updateFun(it);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -77,18 +90,22 @@ namespace v2rayN.Handler
|
||||
|
||||
private void RunPing()
|
||||
{
|
||||
RunPingSub((int index) =>
|
||||
RunPingSub((ServerTestItem it) =>
|
||||
{
|
||||
long time = Utils.Ping(_config.vmess[index].address);
|
||||
long time = Utils.Ping(it.address);
|
||||
var index = _config.FindIndexId(it.indexId);
|
||||
if (index < 0) return;
|
||||
_updateFunc(index, FormatOut(time, "ms"));
|
||||
});
|
||||
}
|
||||
|
||||
private void RunTcping()
|
||||
{
|
||||
RunPingSub((int index) =>
|
||||
RunPingSub((ServerTestItem it) =>
|
||||
{
|
||||
int time = GetTcpingTime(_config.vmess[index].address, _config.vmess[index].port);
|
||||
int time = GetTcpingTime(it.address, it.port);
|
||||
var index = _config.FindIndexId(it.indexId);
|
||||
if (index < 0) return;
|
||||
_updateFunc(index, FormatOut(time, "ms"));
|
||||
});
|
||||
}
|
||||
@@ -103,16 +120,19 @@ namespace v2rayN.Handler
|
||||
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
_updateFunc(_selecteds[0], UIRes.I18N("OperationFailed"));
|
||||
_updateFunc(_selecteds[0].selected, UIRes.I18N("OperationFailed"));
|
||||
return;
|
||||
}
|
||||
|
||||
//Thread.Sleep(5000);
|
||||
int httpPort = _config.GetLocalPort("speedtest");
|
||||
List<Task> tasks = new List<Task>();
|
||||
foreach (int itemIndex in _selecteds)
|
||||
foreach (var it in _selecteds)
|
||||
{
|
||||
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||
if (it.configType == (int)EConfigType.Custom)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (it.port <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -120,11 +140,13 @@ namespace v2rayN.Handler
|
||||
{
|
||||
try
|
||||
{
|
||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
||||
WebProxy webProxy = new WebProxy(Global.Loopback, it.port);
|
||||
int responseTime = -1;
|
||||
string status = GetRealPingTime(_config.speedPingTestUrl, webProxy, out responseTime);
|
||||
string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : FormatOut(status, "");
|
||||
_updateFunc(itemIndex, output);
|
||||
string status = GetRealPingTime(_config.constItem.speedPingTestUrl, webProxy, out responseTime);
|
||||
string output = Utils.IsNullOrEmpty(status) ? FormatOut(responseTime, "ms") : status;
|
||||
var index = _config.FindIndexId(it.indexId);
|
||||
if (index < 0) return;
|
||||
_updateFunc(index, output);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -157,7 +179,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||
int responseTime = -1;
|
||||
string status = GetRealPingTime(Global.AvailabilityTestUrl, webProxy, out responseTime);
|
||||
string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out responseTime);
|
||||
bool noError = Utils.IsNullOrEmpty(status);
|
||||
return noError ? responseTime : -1;
|
||||
}
|
||||
@@ -178,7 +200,7 @@ namespace v2rayN.Handler
|
||||
|
||||
private void RunSpeedTest()
|
||||
{
|
||||
int testCounter = 0;
|
||||
string testIndexId = string.Empty;
|
||||
int pid = -1;
|
||||
|
||||
if (_config.vmess.Count <= 0)
|
||||
@@ -189,37 +211,40 @@ namespace v2rayN.Handler
|
||||
pid = _v2rayHandler.LoadV2rayConfigString(_config, _selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
_updateFunc(_selecteds[0], UIRes.I18N("OperationFailed"));
|
||||
_updateFunc(_selecteds[0].selected, UIRes.I18N("OperationFailed"));
|
||||
return;
|
||||
}
|
||||
|
||||
string url = _config.speedTestUrl;
|
||||
string url = _config.constItem.speedTestUrl;
|
||||
DownloadHandle downloadHandle2 = new DownloadHandle();
|
||||
downloadHandle2.UpdateCompleted += (sender2, args) =>
|
||||
{
|
||||
_updateFunc(testCounter, args.Msg);
|
||||
var index = _config.FindIndexId(testIndexId);
|
||||
if (index < 0) return;
|
||||
_updateFunc(index, args.Msg);
|
||||
};
|
||||
downloadHandle2.Error += (sender2, args) =>
|
||||
{
|
||||
_updateFunc(testCounter, args.GetException().Message);
|
||||
var index = _config.FindIndexId(testIndexId);
|
||||
if (index < 0) return;
|
||||
_updateFunc(index, args.GetException().Message);
|
||||
};
|
||||
|
||||
var timeout = 10;
|
||||
foreach (int itemIndex in _selecteds)
|
||||
foreach (var it in _selecteds)
|
||||
{
|
||||
if (itemIndex >= _config.vmess.Count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (_config.vmess[itemIndex].configType == (int)EConfigType.Custom)
|
||||
if (it.configType == (int)EConfigType.Custom)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
testCounter = itemIndex;
|
||||
int httpPort = _config.GetLocalPort("speedtest");
|
||||
if (it.port <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
testIndexId = it.indexId;
|
||||
if (_config.FindIndexId(it.indexId) < 0) continue;
|
||||
|
||||
WebProxy webProxy = new WebProxy(Global.Loopback, httpPort + itemIndex);
|
||||
WebProxy webProxy = new WebProxy(Global.Loopback, it.port);
|
||||
var ws = downloadHandle2.DownloadDataAsync(url, webProxy, timeout - 2);
|
||||
|
||||
Thread.Sleep(1000 * timeout);
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace v2rayN.Handler
|
||||
_updateFunc = update;
|
||||
var url = string.Empty;
|
||||
|
||||
DownloadHandle downloadHandle = null;
|
||||
DownloadHandle downloadHandle = null;
|
||||
if (downloadHandle == null)
|
||||
{
|
||||
downloadHandle = new DownloadHandle();
|
||||
@@ -162,7 +162,7 @@ namespace v2rayN.Handler
|
||||
}
|
||||
|
||||
|
||||
public void UpdateSubscriptionProcess(Config config, Action<bool, string> update)
|
||||
public void UpdateSubscriptionProcess(Config config, bool blProxy, Action<bool, string> update)
|
||||
{
|
||||
_config = config;
|
||||
_updateFunc = update;
|
||||
@@ -179,6 +179,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
string id = config.subItem[k - 1].id.Trim();
|
||||
string url = config.subItem[k - 1].url.Trim();
|
||||
string userAgent = config.subItem[k - 1].userAgent.Trim();
|
||||
string hashCode = $"{k}->";
|
||||
if (config.subItem[k - 1].enabled == false)
|
||||
{
|
||||
@@ -227,7 +228,9 @@ namespace v2rayN.Handler
|
||||
_updateFunc(false, args.GetException().Message);
|
||||
};
|
||||
|
||||
downloadHandle3.WebDownloadString(url);
|
||||
WebProxy webProxy = blProxy ? new WebProxy(Global.Loopback, _config.GetLocalPort(Global.InboundHttp)) : null;
|
||||
downloadHandle3.WebDownloadString(url, webProxy, userAgent);
|
||||
|
||||
_updateFunc(false, $"{hashCode}{UIRes.I18N("MsgStartGettingSubscriptions")}");
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using v2rayN.Mode;
|
||||
|
||||
namespace v2rayN.Handler
|
||||
@@ -363,7 +365,14 @@ namespace v2rayN.Handler
|
||||
usersItem.id = config.id();
|
||||
usersItem.alterId = config.alterId();
|
||||
usersItem.email = Global.userEMail;
|
||||
usersItem.security = config.security();
|
||||
if (Global.vmessSecuritys.Contains(config.security()))
|
||||
{
|
||||
usersItem.security = config.security();
|
||||
}
|
||||
else
|
||||
{
|
||||
usersItem.security = Global.DefaultSecurity;
|
||||
}
|
||||
|
||||
//Mux
|
||||
outbound.mux.enabled = config.muxEnabled;
|
||||
@@ -477,7 +486,6 @@ namespace v2rayN.Handler
|
||||
}
|
||||
//远程服务器用户ID
|
||||
usersItem.id = config.id();
|
||||
usersItem.alterId = 0;
|
||||
usersItem.flow = string.Empty;
|
||||
usersItem.email = Global.userEMail;
|
||||
usersItem.encryption = config.security();
|
||||
@@ -495,7 +503,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
if (Utils.IsNullOrEmpty(config.flow()))
|
||||
{
|
||||
usersItem.flow = "xtls-rprx-origin";
|
||||
usersItem.flow = Global.xtlsFlows[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -535,7 +543,7 @@ namespace v2rayN.Handler
|
||||
{
|
||||
if (Utils.IsNullOrEmpty(config.flow()))
|
||||
{
|
||||
serversItem.flow = "xtls-rprx-origin";
|
||||
serversItem.flow = Global.xtlsFlows[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -587,7 +595,8 @@ namespace v2rayN.Handler
|
||||
|
||||
TlsSettings tlsSettings = new TlsSettings
|
||||
{
|
||||
allowInsecure = config.allowInsecure()
|
||||
allowInsecure = config.allowInsecure(),
|
||||
alpn = config.alpn()
|
||||
};
|
||||
if (!string.IsNullOrWhiteSpace(sni))
|
||||
{
|
||||
@@ -607,7 +616,8 @@ namespace v2rayN.Handler
|
||||
|
||||
TlsSettings xtlsSettings = new TlsSettings
|
||||
{
|
||||
allowInsecure = config.allowInsecure()
|
||||
allowInsecure = config.allowInsecure(),
|
||||
alpn = config.alpn()
|
||||
};
|
||||
if (!string.IsNullOrWhiteSpace(sni))
|
||||
{
|
||||
@@ -1027,7 +1037,6 @@ namespace v2rayN.Handler
|
||||
else if (config.configType() == (int)EConfigType.VLESS)
|
||||
{
|
||||
inbound.protocol = Global.vlessProtocolLite;
|
||||
usersItem.alterId = 0;
|
||||
usersItem.flow = config.flow();
|
||||
inbound.settings.decryption = config.security();
|
||||
}
|
||||
@@ -1385,7 +1394,7 @@ namespace v2rayN.Handler
|
||||
#region Gen speedtest config
|
||||
|
||||
|
||||
public static string GenerateClientSpeedtestConfigString(Config config, List<int> selecteds, out string msg)
|
||||
public static string GenerateClientSpeedtestConfigString(Config config, List<ServerTestItem> selecteds, out string msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1416,6 +1425,12 @@ namespace v2rayN.Handler
|
||||
msg = UIRes.I18N("FailedGenDefaultConfiguration");
|
||||
return "";
|
||||
}
|
||||
List<IPEndPoint> lstIpEndPoints = null;
|
||||
try
|
||||
{
|
||||
lstIpEndPoints = new List<IPEndPoint>(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners());
|
||||
}
|
||||
catch { }
|
||||
|
||||
log(configCopy, ref v2rayConfig, false);
|
||||
//routing(config, ref v2rayConfig);
|
||||
@@ -1424,19 +1439,44 @@ namespace v2rayN.Handler
|
||||
v2rayConfig.inbounds.Clear(); // Remove "proxy" service for speedtest, avoiding port conflicts.
|
||||
|
||||
int httpPort = configCopy.GetLocalPort("speedtest");
|
||||
foreach (int index in selecteds)
|
||||
|
||||
foreach (var it in selecteds)
|
||||
{
|
||||
if (configCopy.vmess[index].configType == (int)EConfigType.Custom)
|
||||
if (it.configType == (int)EConfigType.Custom)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (it.port <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
configCopy.index = index;
|
||||
//find unuse port
|
||||
var port = httpPort;
|
||||
for (int k = httpPort; k < 65536; k++)
|
||||
{
|
||||
if (lstIpEndPoints != null && lstIpEndPoints.FindIndex(_it => _it.Port == k) >= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
//found
|
||||
port = k;
|
||||
httpPort = port + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
//Port In Used
|
||||
if (lstIpEndPoints != null && lstIpEndPoints.FindIndex(_it => _it.Port == port) >= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
configCopy.index = it.selected;
|
||||
it.port = port;
|
||||
|
||||
Inbounds inbound = new Inbounds
|
||||
{
|
||||
listen = Global.Loopback,
|
||||
port = httpPort + index,
|
||||
port = port,
|
||||
protocol = Global.InboundHttp
|
||||
};
|
||||
inbound.tag = Global.InboundHttp + inbound.port.ToString();
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace v2rayN.Handler
|
||||
/// 新建进程,载入V2ray配置文件字符串
|
||||
/// 返回新进程pid。
|
||||
/// </summary>
|
||||
public int LoadV2rayConfigString(Config config, List<int> _selecteds)
|
||||
public int LoadV2rayConfigString(Config config, List<ServerTestItem> _selecteds)
|
||||
{
|
||||
int pid = -1;
|
||||
string configStr = V2rayConfigHandler.GenerateClientSpeedtestConfigString(config, _selecteds, out string msg);
|
||||
|
||||
@@ -166,7 +166,8 @@ namespace v2rayN.HttpProxyHandler
|
||||
}
|
||||
if (type == ESysProxyType.ForcedChange)
|
||||
{
|
||||
SysProxyHandle.SetIEProxy(true, $"{Global.Loopback}:{port}", config.systemProxyExceptions);
|
||||
var strExceptions = $"{config.constItem.defIEProxyExceptions};{config.systemProxyExceptions}";
|
||||
SysProxyHandle.SetIEProxy(true, $"{Global.Loopback}:{port}", strExceptions);
|
||||
}
|
||||
else if (type == ESysProxyType.ForcedClear)
|
||||
{
|
||||
|
||||
@@ -85,15 +85,6 @@ namespace v2rayN.HttpProxyHandler
|
||||
|
||||
public static void SetIEProxy(bool global, string strProxy, string strExceptions)
|
||||
{
|
||||
if (Utils.IsNullOrEmpty(strExceptions))
|
||||
{
|
||||
strExceptions = Global.IEProxyExceptions;
|
||||
}
|
||||
else
|
||||
{
|
||||
strExceptions = $"{Global.IEProxyExceptions};{strExceptions}";
|
||||
}
|
||||
|
||||
string arguments = global
|
||||
? $"global {strProxy} {strExceptions}"
|
||||
: $"pac {strProxy}";
|
||||
|
||||
@@ -76,21 +76,6 @@ namespace v2rayN.Mode
|
||||
get; set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 自定义服务器下载测速url
|
||||
/// </summary>
|
||||
public string speedTestUrl
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
/// <summary>
|
||||
/// 自定义“服务器真连接延迟”测试url
|
||||
/// </summary>
|
||||
public string speedPingTestUrl
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 允许来自局域网的连接
|
||||
/// </summary>
|
||||
@@ -200,6 +185,10 @@ namespace v2rayN.Mode
|
||||
get; set;
|
||||
} = 0;
|
||||
|
||||
public ConstItem constItem
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
#region 函数
|
||||
|
||||
public string address()
|
||||
@@ -257,7 +246,7 @@ namespace v2rayN.Mode
|
||||
}
|
||||
public string network()
|
||||
{
|
||||
if (index < 0 || Utils.IsNullOrEmpty(vmess[index].network))
|
||||
if (index < 0 || Utils.IsNullOrEmpty(vmess[index].network) || !Global.networks.Contains(vmess[index].network))
|
||||
{
|
||||
return Global.DefaultNetwork;
|
||||
}
|
||||
@@ -371,6 +360,37 @@ namespace v2rayN.Mode
|
||||
}
|
||||
return vmess[index].sni.TrimEx();
|
||||
}
|
||||
public List<string> alpn()
|
||||
{
|
||||
if (index < 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (vmess[index].alpn != null && vmess[index].alpn.Count > 0)
|
||||
{
|
||||
return vmess[index].alpn;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public string indexId()
|
||||
{
|
||||
if (index < 0)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return vmess[index].indexId.TrimEx();
|
||||
}
|
||||
public int FindIndexId(string indexId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(indexId))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return vmess.FindIndex(it => it.indexId == indexId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
@@ -380,6 +400,7 @@ namespace v2rayN.Mode
|
||||
{
|
||||
public VmessItem()
|
||||
{
|
||||
indexId = string.Empty;
|
||||
configVersion = 1;
|
||||
address = string.Empty;
|
||||
port = 0;
|
||||
@@ -466,6 +487,10 @@ namespace v2rayN.Mode
|
||||
itemId = Utils.Base64Encode(itemId);
|
||||
return itemId;
|
||||
}
|
||||
public string indexId
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 版本(现在=2)
|
||||
@@ -550,7 +575,7 @@ namespace v2rayN.Mode
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 底层传输安全
|
||||
/// 传输层安全
|
||||
/// </summary>
|
||||
public string streamSecurity
|
||||
{
|
||||
@@ -604,6 +629,13 @@ namespace v2rayN.Mode
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
/// <summary>
|
||||
/// tls alpn
|
||||
/// </summary>
|
||||
public List<string> alpn
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
@@ -725,12 +757,23 @@ namespace v2rayN.Mode
|
||||
/// enable
|
||||
/// </summary>
|
||||
public bool enabled { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string userAgent
|
||||
{
|
||||
get; set;
|
||||
} = string.Empty;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class UIItem
|
||||
{
|
||||
|
||||
public bool enableAutoAdjustMainLvColWidth
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public System.Drawing.Size mainSize
|
||||
{
|
||||
@@ -742,4 +785,27 @@ namespace v2rayN.Mode
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ConstItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 自定义服务器下载测速url
|
||||
/// </summary>
|
||||
public string speedTestUrl
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
/// <summary>
|
||||
/// 自定义“服务器真连接延迟”测试url
|
||||
/// </summary>
|
||||
public string speedPingTestUrl
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public string defIEProxyExceptions
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace v2rayN.Mode
|
||||
port,
|
||||
security,
|
||||
network,
|
||||
streamSecurity,
|
||||
subRemarks,
|
||||
testResult,
|
||||
|
||||
|
||||
29
v2rayN/v2rayN/Mode/ServerTestItem.cs
Normal file
29
v2rayN/v2rayN/Mode/ServerTestItem.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
|
||||
namespace v2rayN.Mode
|
||||
{
|
||||
[Serializable]
|
||||
class ServerTestItem
|
||||
{
|
||||
public int selected
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public string indexId
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public string address
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public int port
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public int configType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -404,6 +404,13 @@ namespace v2rayN.Mode
|
||||
///
|
||||
/// </summary>
|
||||
public string serverName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<string> alpn
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
}
|
||||
|
||||
public class TcpSettings
|
||||
|
||||
@@ -2,61 +2,68 @@
|
||||
|
||||
namespace v2rayN.Mode
|
||||
{
|
||||
/// <summary>
|
||||
/// https://github.com/2dust/v2rayN/wiki/
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
class VmessQRCode
|
||||
{
|
||||
/// <summary>
|
||||
/// 版本
|
||||
///
|
||||
/// </summary>
|
||||
public string v { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 备注
|
||||
///
|
||||
/// </summary>
|
||||
public string ps { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// VMess 远程服务器地址
|
||||
///
|
||||
/// </summary>
|
||||
public string add { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// VMess 远程服务器端口
|
||||
///
|
||||
/// </summary>
|
||||
public string port { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// VMess 远程服务器ID
|
||||
///
|
||||
/// </summary>
|
||||
public string id { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// VMess 远程服务器额外ID
|
||||
///
|
||||
/// </summary>
|
||||
public string aid { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// VMess Security
|
||||
///
|
||||
/// </summary>
|
||||
public string scy { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 传输协议tcp,kcp,ws
|
||||
///
|
||||
/// </summary>
|
||||
public string net { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 伪装类型
|
||||
///
|
||||
/// </summary>
|
||||
public string type { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 伪装的域名
|
||||
///
|
||||
/// </summary>
|
||||
public string host { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// path
|
||||
///
|
||||
/// </summary>
|
||||
public string path { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 底层传输安全
|
||||
/// TLS
|
||||
/// </summary>
|
||||
public string tls { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// SNI
|
||||
/// TLS SNI
|
||||
/// </summary>
|
||||
public string sni { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// TLS alpn
|
||||
/// </summary>
|
||||
public string alpn { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
||||
// 方法是按如下所示使用“*”:
|
||||
//[assembly: AssemblyVersion("1.0.*")]
|
||||
//[assembly: AssemblyVersion("1.0.0")]
|
||||
[assembly: AssemblyFileVersion("4.26")]
|
||||
[assembly: AssemblyFileVersion("4.33")]
|
||||
|
||||
55
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
55
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
@@ -47,8 +47,8 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写当前线程的 CurrentUICulture 属性
|
||||
/// 重写当前线程的 CurrentUICulture 属性。
|
||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
@@ -186,15 +186,6 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Please fill in the correct format extra ID 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string FillCorrectAlterId {
|
||||
get {
|
||||
return ResourceManager.GetString("FillCorrectAlterId", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Please fill in the correct custom DNS 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -402,6 +393,15 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 TLS 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string LvTLS {
|
||||
get {
|
||||
return ResourceManager.GetString("LvTLS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Today download traffic 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -908,7 +908,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 1)tcp camouflage type 的本地化字符串。
|
||||
/// 查找类似 *tcp camouflage type 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportHeaderTypeTip1 {
|
||||
get {
|
||||
@@ -917,7 +917,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 2)kcp camouflage type 的本地化字符串。
|
||||
/// 查找类似 *kcp camouflage type 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportHeaderTypeTip2 {
|
||||
get {
|
||||
@@ -926,7 +926,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 3)QUIC camouflage type 的本地化字符串。
|
||||
/// 查找类似 *QUIC camouflage type 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportHeaderTypeTip3 {
|
||||
get {
|
||||
@@ -935,7 +935,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 4)grpc mode 的本地化字符串。
|
||||
/// 查找类似 *grpc mode 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportHeaderTypeTip4 {
|
||||
get {
|
||||
@@ -944,7 +944,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 1)ws path 的本地化字符串。
|
||||
/// 查找类似 *ws path 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportPathTip1 {
|
||||
get {
|
||||
@@ -953,7 +953,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 2)h2 path 的本地化字符串。
|
||||
/// 查找类似 *h2 path 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportPathTip2 {
|
||||
get {
|
||||
@@ -962,7 +962,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 3)QUIC key/Kcp seed 的本地化字符串。
|
||||
/// 查找类似 *QUIC key/Kcp seed 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportPathTip3 {
|
||||
get {
|
||||
@@ -971,7 +971,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 4)grpc serviceName 的本地化字符串。
|
||||
/// 查找类似 *grpc serviceName 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportPathTip4 {
|
||||
get {
|
||||
@@ -980,7 +980,16 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 1)http host Separated by commas (,) 的本地化字符串。
|
||||
/// 查找类似 *Kcp seed 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportPathTip5 {
|
||||
get {
|
||||
return ResourceManager.GetString("TransportPathTip5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 *http host Separated by commas (,) 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportRequestHostTip1 {
|
||||
get {
|
||||
@@ -989,7 +998,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 2)ws host 的本地化字符串。
|
||||
/// 查找类似 *ws host 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportRequestHostTip2 {
|
||||
get {
|
||||
@@ -998,7 +1007,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 3)h2 host Separated by commas (,) 的本地化字符串。
|
||||
/// 查找类似 *h2 host Separated by commas (,) 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportRequestHostTip3 {
|
||||
get {
|
||||
@@ -1007,7 +1016,7 @@ namespace v2rayN.Resx {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 4)QUIC securty 的本地化字符串。
|
||||
/// 查找类似 *QUIC securty 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TransportRequestHostTip4 {
|
||||
get {
|
||||
|
||||
@@ -156,9 +156,6 @@
|
||||
<data name="FailedReadConfiguration" xml:space="preserve">
|
||||
<value>Failed to read configuration file</value>
|
||||
</data>
|
||||
<data name="FillCorrectAlterId" xml:space="preserve">
|
||||
<value>Please fill in the correct format extra ID</value>
|
||||
</data>
|
||||
<data name="FillCorrectServerPort" xml:space="preserve">
|
||||
<value>Please fill in the correct format server port</value>
|
||||
</data>
|
||||
@@ -401,39 +398,45 @@
|
||||
<value>Please fill in the correct custom DNS</value>
|
||||
</data>
|
||||
<data name="TransportPathTip1" xml:space="preserve">
|
||||
<value>1)ws path</value>
|
||||
<value>*ws path</value>
|
||||
</data>
|
||||
<data name="TransportPathTip2" xml:space="preserve">
|
||||
<value>2)h2 path</value>
|
||||
<value>*h2 path</value>
|
||||
</data>
|
||||
<data name="TransportPathTip3" xml:space="preserve">
|
||||
<value>3)QUIC key/Kcp seed</value>
|
||||
<value>*QUIC key/Kcp seed</value>
|
||||
</data>
|
||||
<data name="TransportPathTip4" xml:space="preserve">
|
||||
<value>4)grpc serviceName</value>
|
||||
<value>*grpc serviceName</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip1" xml:space="preserve">
|
||||
<value>1)http host Separated by commas (,)</value>
|
||||
<value>*http host Separated by commas (,)</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip2" xml:space="preserve">
|
||||
<value>2)ws host</value>
|
||||
<value>*ws host</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip3" xml:space="preserve">
|
||||
<value>3)h2 host Separated by commas (,)</value>
|
||||
<value>*h2 host Separated by commas (,)</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip4" xml:space="preserve">
|
||||
<value>4)QUIC securty</value>
|
||||
<value>*QUIC securty</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip1" xml:space="preserve">
|
||||
<value>1)tcp camouflage type</value>
|
||||
<value>*tcp camouflage type</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip2" xml:space="preserve">
|
||||
<value>2)kcp camouflage type</value>
|
||||
<value>*kcp camouflage type</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip3" xml:space="preserve">
|
||||
<value>3)QUIC camouflage type</value>
|
||||
<value>*QUIC camouflage type</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip4" xml:space="preserve">
|
||||
<value>4)grpc mode</value>
|
||||
<value>*grpc mode</value>
|
||||
</data>
|
||||
<data name="LvTLS" xml:space="preserve">
|
||||
<value>TLS</value>
|
||||
</data>
|
||||
<data name="TransportPathTip5" xml:space="preserve">
|
||||
<value>*Kcp seed</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -156,9 +156,6 @@
|
||||
<data name="FailedReadConfiguration" xml:space="preserve">
|
||||
<value>读取配置文件失败</value>
|
||||
</data>
|
||||
<data name="FillCorrectAlterId" xml:space="preserve">
|
||||
<value>请填写正确格式额外ID</value>
|
||||
</data>
|
||||
<data name="FillCorrectServerPort" xml:space="preserve">
|
||||
<value>请填写正确格式服务器端口</value>
|
||||
</data>
|
||||
@@ -401,39 +398,45 @@
|
||||
<value>请填写正确的自定义DNS</value>
|
||||
</data>
|
||||
<data name="TransportPathTip1" xml:space="preserve">
|
||||
<value>1)ws path</value>
|
||||
<value>*ws path</value>
|
||||
</data>
|
||||
<data name="TransportPathTip2" xml:space="preserve">
|
||||
<value>2)h2 path</value>
|
||||
<value>*h2 path</value>
|
||||
</data>
|
||||
<data name="TransportPathTip3" xml:space="preserve">
|
||||
<value>3)QUIC 加密密钥/Kcp seed</value>
|
||||
<value>*QUIC 加密密钥</value>
|
||||
</data>
|
||||
<data name="TransportPathTip4" xml:space="preserve">
|
||||
<value>4)grpc serviceName</value>
|
||||
<value>*grpc serviceName</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip1" xml:space="preserve">
|
||||
<value>1)http host中间逗号(,)隔开</value>
|
||||
<value>*http host中间逗号(,)隔开</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip2" xml:space="preserve">
|
||||
<value>2)ws host</value>
|
||||
<value>*ws host</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip3" xml:space="preserve">
|
||||
<value>3)h2 host中间逗号(,)隔开</value>
|
||||
<value>*h2 host中间逗号(,)隔开</value>
|
||||
</data>
|
||||
<data name="TransportRequestHostTip4" xml:space="preserve">
|
||||
<value>4)QUIC 加密方式</value>
|
||||
<value>*QUIC 加密方式</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip1" xml:space="preserve">
|
||||
<value>1)tcp伪装类型</value>
|
||||
<value>*tcp伪装类型</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip2" xml:space="preserve">
|
||||
<value>2)kcp伪装类型</value>
|
||||
<value>*kcp伪装类型</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip3" xml:space="preserve">
|
||||
<value>3)QUIC伪装类型</value>
|
||||
<value>*QUIC伪装类型</value>
|
||||
</data>
|
||||
<data name="TransportHeaderTypeTip4" xml:space="preserve">
|
||||
<value>4)grpc 模式</value>
|
||||
<value>*grpc 模式</value>
|
||||
</data>
|
||||
<data name="LvTLS" xml:space="preserve">
|
||||
<value>传输层安全</value>
|
||||
</data>
|
||||
<data name="TransportPathTip5" xml:space="preserve">
|
||||
<value>*Kcp seed</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -47,7 +47,6 @@
|
||||
"port": 10086,
|
||||
"users": [{
|
||||
"id": "a3482e88-686a-4a58-8126-99c9df64b7bf",
|
||||
"alterId": 64,
|
||||
"security": "auto"
|
||||
}]
|
||||
}],
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
"clients": [{
|
||||
"id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
|
||||
"level": 1,
|
||||
"alterId": 64,
|
||||
"email": "t@t.tt"
|
||||
}]
|
||||
},
|
||||
|
||||
@@ -180,6 +180,10 @@ namespace v2rayN
|
||||
{
|
||||
try
|
||||
{
|
||||
if (lst == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
if (wrap)
|
||||
{
|
||||
return string.Join("," + Environment.NewLine, lst.ToArray());
|
||||
@@ -627,6 +631,26 @@ namespace v2rayN
|
||||
regKey?.Close();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断.Net Framework的Release是否符合
|
||||
/// (.Net Framework 版本在4.0及以上)
|
||||
/// </summary>
|
||||
/// <param name="release">需要的版本4.6.2=394802;4.8=528040</param>
|
||||
/// <returns></returns>
|
||||
public static bool GetDotNetRelease(int release)
|
||||
{
|
||||
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
|
||||
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
|
||||
{
|
||||
if (ndpKey != null && ndpKey.GetValue("Release") != null)
|
||||
{
|
||||
return (int)ndpKey.GetValue("Release") >= release ? true : false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 测速
|
||||
@@ -693,13 +717,45 @@ namespace v2rayN
|
||||
|
||||
public static void SetSecurityProtocol()
|
||||
{
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
|
||||
| SecurityProtocolType.Tls
|
||||
| SecurityProtocolType.Tls11
|
||||
| SecurityProtocolType.Tls12
|
||||
| SecurityProtocolType.Tls13;
|
||||
string securityProtocolTls13 = RegReadValue(Global.MyRegPath, Global.MyRegKeySecurityProtocolTls13, "0");
|
||||
|
||||
if (securityProtocolTls13.Equals("1"))
|
||||
{
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
|
||||
| SecurityProtocolType.Tls
|
||||
| SecurityProtocolType.Tls11
|
||||
| SecurityProtocolType.Tls12
|
||||
| SecurityProtocolType.Tls13;
|
||||
}
|
||||
else
|
||||
{
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
|
||||
| SecurityProtocolType.Tls
|
||||
| SecurityProtocolType.Tls11
|
||||
| SecurityProtocolType.Tls12;
|
||||
}
|
||||
ServicePointManager.DefaultConnectionLimit = 256;
|
||||
}
|
||||
|
||||
public static bool PortInUse(int port)
|
||||
{
|
||||
bool inUse = false;
|
||||
|
||||
IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
|
||||
IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();
|
||||
|
||||
var lstIpEndPoints = new List<IPEndPoint>(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners());
|
||||
|
||||
foreach (IPEndPoint endPoint in ipEndPoints)
|
||||
{
|
||||
if (endPoint.Port == port)
|
||||
{
|
||||
inUse = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return inUse;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 杂项
|
||||
@@ -708,14 +764,22 @@ namespace v2rayN
|
||||
/// 取得版本
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetVersion()
|
||||
public static string GetVersion(bool blFull = true)
|
||||
{
|
||||
try
|
||||
{
|
||||
string location = GetExePath();
|
||||
return string.Format("v2rayN - V{0} - {1}",
|
||||
FileVersionInfo.GetVersionInfo(location).FileVersion.ToString(),
|
||||
File.GetLastWriteTime(location).ToString("yyyy/MM/dd"));
|
||||
if (blFull)
|
||||
{
|
||||
return string.Format("v2rayN - V{0} - {1}",
|
||||
FileVersionInfo.GetVersionInfo(location).FileVersion.ToString(),
|
||||
File.GetLastWriteTime(location).ToString("yyyy/MM/dd"));
|
||||
}
|
||||
else
|
||||
{
|
||||
return string.Format("v2rayN/{0}",
|
||||
FileVersionInfo.GetVersionInfo(location).FileVersion.ToString());
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -788,11 +852,18 @@ namespace v2rayN
|
||||
/// 取得GUID
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetGUID()
|
||||
public static string GetGUID(bool full = true)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Guid.NewGuid().ToString("D");
|
||||
if (full)
|
||||
{
|
||||
return Guid.NewGuid().ToString("D");
|
||||
}
|
||||
else
|
||||
{
|
||||
return BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0).ToString();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -214,6 +214,7 @@
|
||||
<Compile Include="Mode\ServerStatistics.cs" />
|
||||
<Compile Include="Mode\SysproxyConfig.cs" />
|
||||
<Compile Include="Mode\EConfigType.cs" />
|
||||
<Compile Include="Mode\ServerTestItem.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
@@ -306,6 +307,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\BaseServerForm.resx">
|
||||
<DependentUpon>BaseServerForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
@@ -487,24 +489,24 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Protobuf">
|
||||
<Version>3.11.4</Version>
|
||||
<Version>3.19.4</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Grpc.Core">
|
||||
<Version>2.27.0</Version>
|
||||
<Version>2.43.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Grpc.Tools">
|
||||
<Version>2.27.0</Version>
|
||||
<Version>2.43.0</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="log4net">
|
||||
<Version>2.0.13</Version>
|
||||
<Version>2.0.14</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Newtonsoft.Json">
|
||||
<Version>12.0.3</Version>
|
||||
<Version>13.0.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="ZXing.Net">
|
||||
<Version>0.16.5</Version>
|
||||
<Version>0.16.8</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
Reference in New Issue
Block a user