Compare commits

...

43 Commits
5.30 ... 5.35

Author SHA1 Message Date
2dust
272de5f34d Update v2rayN.csproj 2022-09-08 20:52:51 +08:00
2dust
60a319a482 Add v2fly_v5 support 2022-09-08 20:52:44 +08:00
2dust
9e440fd5e6 bug fix 2022-08-21 20:15:15 +08:00
2dust
235f20813d Update v2rayN.csproj 2022-08-18 20:31:03 +08:00
2dust
55ce8a3e97 bug fix 2022-08-18 17:11:54 +08:00
2dust
b7ac15ad55 fix 2022-08-18 17:11:36 +08:00
2dust
038b64a416 Merge pull request #2557 from InterestingDarkness/master
Upgrade to SDK-style project format
2022-08-17 20:40:08 +08:00
Computer Idiot
ec2fbca979 Enable v2rayUpgrade dpiAware 2022-08-16 12:45:24 +08:00
Computer Idiot
7f28b1d2c9 Remove unneeded files 2022-08-15 22:27:19 +08:00
Computer Idiot
6a0ec7d294 Remove redundant dependencies introduced by .NET Upgrade Assistant 2022-08-15 22:18:07 +08:00
Computer Idiot
217215b035 Simplify v2rayN.csproj 2022-08-15 21:42:05 +08:00
Computer Idiot
a6fefcacc9 Simplify v2rayUpgrade.csproj 2022-08-15 21:35:38 +08:00
Computer Idiot
03023c04fc Upgrade to SDK-style project format with .NET Upgrade Assistant 2022-08-15 21:33:06 +08:00
2dust
8dadfe6579 Update AssemblyInfo.cs 2022-08-15 19:54:08 +08:00
2dust
6c06de63e4 Restore gui config 2022-08-15 19:53:38 +08:00
2dust
54a122ae34 Improve core tip 2022-08-14 19:36:20 +08:00
2dust
7a0daee443 Merge pull request #2556 from qianxu2001/master
适配 hysteria v1.2.0
2022-08-14 19:15:40 +08:00
qianxu2001
88b5e29092 适配 hysteria v1.2.0
适配 hysteria v1.2.0
2022-08-14 11:01:33 +08:00
2dust
b3ea08dd99 Update v2rayN.csproj 2022-08-13 19:35:56 +08:00
2dust
95794bc5b2 Remove restore location on startup 2022-08-12 20:24:52 +08:00
2dust
3275454bd6 clear auto run 2022-08-12 20:24:15 +08:00
2dust
7f5bb86127 Update v2rayN.csproj 2022-08-06 19:46:47 +08:00
2dust
cf1ae8f240 Update AssemblyInfo.cs 2022-08-05 20:54:04 +08:00
2dust
9b2261918f Refactor UI 2022-08-05 20:53:40 +08:00
2dust
f74071691f Update current group subscription 2022-08-05 20:52:08 +08:00
2dust
6d5e02860e Remember the information filter 2022-08-05 20:50:58 +08:00
2dust
ffa2acb2f5 fix UI 2022-08-05 20:38:03 +08:00
2dust
25b4ff771e fix Pre-Release Updates 2022-08-05 20:28:20 +08:00
2dust
7a48617fea Merge pull request #2530 from InterestingDarkness/master
Add Check for Pre-Release Updates
2022-08-05 20:18:04 +08:00
InterestingDarkness
800807b47a Add Check for Pre-Release Updates 2022-08-05 15:06:44 +08:00
2dust
eaf11c6998 bug fix 2022-08-04 17:07:50 +08:00
2dust
e2053d5a77 Update AssemblyInfo.cs 2022-07-31 20:55:36 +08:00
2dust
ae6b3ef7fb DomainMatcher can be set to empty 2022-07-30 20:27:27 +08:00
2dust
359c6e0f02 delete temporary file 2022-07-30 20:16:13 +08:00
2dust
9a8b4593e1 Fix some issues with update core 2022-07-30 20:12:14 +08:00
2dust
02fc631e3c Merge pull request #2513 from FrzMtrsprt/patch-1
Better README
2022-07-30 19:18:53 +08:00
2dust
19e03a1fdd Merge pull request #2510 from InterestingDarkness/master
Add SagerNet/v2ray-core support
2022-07-30 19:17:57 +08:00
FrzMtrsprt
5ea6279711 Better README
Add release link
Fix grammar
2022-07-30 11:36:54 +08:00
InterestingDarkness
c44578c341 Add update SagerNet-Core functionality 2022-07-29 21:50:37 +08:00
InterestingDarkness
ab34d3fe30 Merge branch '2dust:master' into master 2022-07-29 21:10:59 +08:00
2dust
5aa27c14c6 Update ListViewFlickerFree.cs 2022-07-29 20:59:12 +08:00
2dust
a5e9edb2e5 CheckForDotNetVersion 2022-07-29 20:59:07 +08:00
InterestingDarkness
bbd8ef1f26 Add SagerNet/v2ray-core support 2022-07-29 20:11:39 +08:00
43 changed files with 3730 additions and 3552 deletions

4
.gitignore vendored
View File

@@ -13,6 +13,6 @@
.vs/slnx.sqlite
.vs/VSWorkspaceState.json
/v2rayN/v2rayUpgrade/bin/Debug
/v2rayN/v2rayUpgrade/obj/Debug
/v2rayN/v2rayUpgrade/bin/Release
/v2rayN/v2rayUpgrade/obj/Release
/v2rayN/v2rayUpgrade/obj/
*.user

View File

@@ -8,11 +8,11 @@ A V2Ray client for Windows, support [Xray core](https://github.com/XTLS/Xray-cor
[![Chat on Telegram](https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg)](https://t.me/v2rayn)
### How to use
- If you are newbie please download v2rayN-Core.zip from releases
- Otherwise please download v2rayN.zip (Also need to download v2ray core in the same folder)
- If you are new to this, please download v2rayN-Core.zip from [releases](https://github.com/2dust/v2rayN/releases)
- Otherwise please download v2rayN.zip (you will also need to download v2ray core into the same folder with v2rayN.exe)
- Run v2rayN.exe
### Requirements
- Microsoft [.NET Framework 4.8](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/thank-you/net48-web-installer)
- Microsoft [.NET Framework 4.8 Runtime](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/thank-you/net48-offline-installer)
- v2fly core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
- Xray core [https://github.com/XTLS/Xray-core/releases](https://github.com/XTLS/Xray-core/releases)

View File

@@ -93,5 +93,20 @@ namespace v2rayN.Base
DoDragDrop(e.Item, DragDropEffects.Move);
InsertionMark.Index = -1;
}
public void SetScrollPosition(int pos)
{
pos = Math.Min(Items.Count - 1, pos);
if (pos < 0 || pos >= Items.Count)
return;
EnsureVisible(pos);
for (int i = 0; i < 10; i++)
{
if (TopItem != null && TopItem.Index != pos)
TopItem = Items[pos];
}
}
}
}

View File

@@ -35,7 +35,7 @@ namespace v2rayN.Forms
//panTran.Visible = false;
//this.Height = this.Height - panTran.Height;
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys().ToArray());
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).ToArray());
break;
case EConfigType.Socks:
panSocks.Dock = DockStyle.Fill;

View File

@@ -42,11 +42,11 @@
this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem();
this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.menuServerFilter = new System.Windows.Forms.ToolStripMenuItem();
this.menuRemoveServer = new System.Windows.Forms.ToolStripMenuItem();
this.menuRemoveDuplicateServer = new System.Windows.Forms.ToolStripMenuItem();
this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem();
this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem();
this.menuServerFilter = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.menuMoveToGroup = new System.Windows.Forms.ToolStripMenuItem();
this.menuMoveEvent = new System.Windows.Forms.ToolStripMenuItem();
@@ -96,6 +96,8 @@
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
this.tsbSubUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem();
this.tsbSubGroupUpdate = new System.Windows.Forms.ToolStripMenuItem();
this.tsbSubGroupUpdateViaProxy = 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();
@@ -105,12 +107,14 @@
this.tsbGroupSetting = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();
this.tsbBackupGuiNConfig = new System.Windows.Forms.ToolStripMenuItem();
this.tsbRestoreGuiNConfig = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.tsbReload = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
this.tsbCheckUpdateSagerNetCore = new System.Windows.Forms.ToolStripMenuItem();
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
this.tsbCheckUpdateClashCore = new System.Windows.Forms.ToolStripMenuItem();
@@ -190,11 +194,11 @@
this.menuAddServers,
this.menuScanScreen,
this.toolStripSeparator1,
this.menuServerFilter,
this.menuRemoveServer,
this.menuRemoveDuplicateServer,
this.menuCopyServer,
this.menuSetDefaultServer,
this.menuServerFilter,
this.toolStripSeparator3,
this.menuMoveToGroup,
this.menuMoveEvent,
@@ -269,6 +273,12 @@
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// menuServerFilter
//
this.menuServerFilter.Name = "menuServerFilter";
resources.ApplyResources(this.menuServerFilter, "menuServerFilter");
this.menuServerFilter.Click += new System.EventHandler(this.menuServerFilter_Click);
//
// menuRemoveServer
//
this.menuRemoveServer.Name = "menuRemoveServer";
@@ -293,12 +303,6 @@
resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
//
// menuServerFilter
//
this.menuServerFilter.Name = "menuServerFilter";
resources.ApplyResources(this.menuServerFilter, "menuServerFilter");
this.menuServerFilter.Click += new System.EventHandler(this.menuServerFilter_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
@@ -611,7 +615,9 @@
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbSubSetting,
this.tsbSubUpdate,
this.tsbSubUpdateViaProxy});
this.tsbSubUpdateViaProxy,
this.tsbSubGroupUpdate,
this.tsbSubGroupUpdateViaProxy});
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
resources.ApplyResources(this.tsbSub, "tsbSub");
this.tsbSub.Name = "tsbSub";
@@ -634,6 +640,18 @@
resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy");
this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click);
//
// tsbSubGroupUpdate
//
this.tsbSubGroupUpdate.Name = "tsbSubGroupUpdate";
resources.ApplyResources(this.tsbSubGroupUpdate, "tsbSubGroupUpdate");
this.tsbSubGroupUpdate.Click += new System.EventHandler(this.tsbSubGroupUpdate_Click);
//
// tsbSubGroupUpdateViaProxy
//
this.tsbSubGroupUpdateViaProxy.Name = "tsbSubGroupUpdateViaProxy";
resources.ApplyResources(this.tsbSubGroupUpdateViaProxy, "tsbSubGroupUpdateViaProxy");
this.tsbSubGroupUpdateViaProxy.Click += new System.EventHandler(this.tsbSubGroupUpdateViaProxy_Click);
//
// tsbQRCodeSwitch
//
this.tsbQRCodeSwitch.CheckOnClick = true;
@@ -656,7 +674,8 @@
this.tsbGlobalHotkeySetting,
this.tsbGroupSetting,
this.toolStripSeparator14,
this.tsbBackupGuiNConfig});
this.tsbBackupGuiNConfig,
this.tsbRestoreGuiNConfig});
this.tsbSetting.Image = global::v2rayN.Properties.Resources.option;
resources.ApplyResources(this.tsbSetting, "tsbSetting");
this.tsbSetting.Name = "tsbSetting";
@@ -696,6 +715,12 @@
resources.ApplyResources(this.tsbBackupGuiNConfig, "tsbBackupGuiNConfig");
this.tsbBackupGuiNConfig.Click += new System.EventHandler(this.tsbBackupGuiNConfig_Click);
//
// tsbRestoreGuiNConfig
//
this.tsbRestoreGuiNConfig.Name = "tsbRestoreGuiNConfig";
resources.ApplyResources(this.tsbRestoreGuiNConfig, "tsbRestoreGuiNConfig");
this.tsbRestoreGuiNConfig.Click += new System.EventHandler(this.tsbRestoreGuiNConfig_Click);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
@@ -718,6 +743,7 @@
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbCheckUpdateN,
this.tsbCheckUpdateCore,
this.tsbCheckUpdateSagerNetCore,
this.tsbCheckUpdateXrayCore,
this.toolStripSeparator16,
this.tsbCheckUpdateClashCore,
@@ -740,6 +766,12 @@
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
//
// tsbCheckUpdateSagerNetCore
//
this.tsbCheckUpdateSagerNetCore.Name = "tsbCheckUpdateSagerNetCore";
resources.ApplyResources(this.tsbCheckUpdateSagerNetCore, "tsbCheckUpdateSagerNetCore");
this.tsbCheckUpdateSagerNetCore.Click += new System.EventHandler(this.tsbCheckUpdateSagerNetCore_Click);
//
// tsbCheckUpdateXrayCore
//
this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore";
@@ -972,6 +1004,10 @@
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashMetaCore;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
private System.Windows.Forms.ToolStripMenuItem menuSortServerResult;
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateSagerNetCore;
private System.Windows.Forms.ToolStripMenuItem tsbSubGroupUpdate;
private System.Windows.Forms.ToolStripMenuItem tsbSubGroupUpdateViaProxy;
private System.Windows.Forms.ToolStripMenuItem tsbRestoreGuiNConfig;
}
}

View File

@@ -20,7 +20,7 @@ namespace v2rayN.Forms
private List<VmessItem> lstSelecteds = new List<VmessItem>();
private StatisticsHandler statistics;
private List<VmessItem> lstVmess;
private string groupId = string.Empty;
private string _groupId = string.Empty;
private string serverFilter = string.Empty;
#region Window
@@ -87,6 +87,12 @@ namespace v2rayN.Forms
MainFormHandler.Instance.RegisterGlobalHotkey(config, OnHotkeyHandler, UpdateTaskHandler);
_ = LoadV2ray();
if (!Utils.CheckForDotNetVersion())
{
UI.ShowWarning(ResUI.NetFrameworkRequirementsTip);
AppendText(false, ResUI.NetFrameworkRequirementsTip);
}
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
@@ -152,10 +158,18 @@ namespace v2rayN.Forms
{
scServers.Panel2Collapsed = true;
if (!config.uiItem.mainLocation.IsEmpty)
{
Location = config.uiItem.mainLocation;
}
//if (!config.uiItem.mainLocation.IsEmpty)
//{
// if (config.uiItem.mainLocation.X >= SystemInformation.WorkingArea.Width
// || config.uiItem.mainLocation.Y >= SystemInformation.WorkingArea.Height)
// {
// Location = new Point(0, 0);
// }
// else
// {
// Location = config.uiItem.mainLocation;
// }
//}
if (!config.uiItem.mainSize.IsEmpty)
{
Width = config.uiItem.mainSize.Width;
@@ -212,13 +226,17 @@ namespace v2rayN.Forms
private void RefreshServers()
{
lstVmess = config.vmess
.Where(it => Utils.IsNullOrEmpty(groupId) || it.groupId == groupId)
.Where(it => Utils.IsNullOrEmpty(_groupId) || it.groupId == _groupId)
.Where(it => Utils.IsNullOrEmpty(serverFilter) || it.remarks.Contains(serverFilter))
.OrderBy(it => it.sort)
.ToList();
ConfigHandler.SetDefaultServer(config, lstVmess);
RefreshServersView();
BeginInvoke(new Action(() =>
{
RefreshServersView();
}));
RefreshServersMenu();
}
@@ -283,11 +301,11 @@ namespace v2rayN.Forms
for (int k = 0; k < lstVmess.Count; k++)
{
string def = string.Empty;
string def = (k + 1).ToString();
VmessItem item = lstVmess[k];
if (config.IsActiveNode(item))
{
def = "√";
def = Global.CheckMark;
}
ListViewItem lvItem = new ListViewItem(def);
@@ -340,7 +358,7 @@ namespace v2rayN.Forms
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
{
lvServers.Items[index].Selected = true;
lvServers.EnsureVisible(index); // workaround
lvServers.SetScrollPosition(index);
}
}
@@ -477,9 +495,9 @@ namespace v2rayN.Forms
{
return;
}
groupId = string.Empty;
_groupId = string.Empty;
//groupId = tabGroup.TabPages[tabGroup.SelectedIndex].Name;
groupId = tabGroup.SelectedTab.Name;
_groupId = tabGroup.SelectedTab.Name;
RefreshServers();
@@ -590,7 +608,7 @@ namespace v2rayN.Forms
fm = new AddServerForm();
}
fm.vmessItem = index >= 0 ? lstVmess[index] : null;
fm.groupId = groupId;
fm.groupId = _groupId;
fm.eConfigType = configType;
if (fm.ShowDialog() == DialogResult.OK)
{
@@ -793,6 +811,7 @@ namespace v2rayN.Forms
if (statistics != null)
{
statistics.ClearAllServerStatistics();
RefreshServers();
}
}
@@ -937,13 +956,13 @@ namespace v2rayN.Forms
{
if (config.IsActiveNode(lstVmess[k]))
{
lvServers.Items[k].SubItems[0].Text = "√";
lvServers.Items[k].SubItems[0].Text = Global.CheckMark;
lvServers.Items[k].ForeColor = Color.DodgerBlue;
lvServers.Items[k].Font = new Font(lvServers.Font, FontStyle.Bold);
}
else
{
lvServers.Items[k].SubItems[0].Text = "";
lvServers.Items[k].SubItems[0].Text = (k + 1).ToString();
lvServers.Items[k].ForeColor = lvServers.ForeColor;
lvServers.Items[k].Font = new Font(lvServers.Font, FontStyle.Regular);
}
@@ -1012,7 +1031,7 @@ namespace v2rayN.Forms
private void menuAddServers_Click(object sender, EventArgs e)
{
string clipboardData = Utils.GetClipboardData();
int ret = ConfigHandler.AddBatchServers(ref config, clipboardData, "", groupId);
int ret = ConfigHandler.AddBatchServers(ref config, clipboardData, "", _groupId);
if (ret > 0)
{
RefreshServers();
@@ -1042,7 +1061,7 @@ namespace v2rayN.Forms
}
else
{
int ret = ConfigHandler.AddBatchServers(ref config, result, "", groupId);
int ret = ConfigHandler.AddBatchServers(ref config, result, "", _groupId);
if (ret > 0)
{
RefreshServers();
@@ -1053,17 +1072,25 @@ namespace v2rayN.Forms
private void menuUpdateSubscriptions_Click(object sender, EventArgs e)
{
UpdateSubscriptionProcess(false);
UpdateSubscriptionProcess("", false);
}
private void menuUpdateSubViaProxy_Click(object sender, EventArgs e)
{
UpdateSubscriptionProcess(true);
UpdateSubscriptionProcess("", true);
}
private void tsbBackupGuiNConfig_Click(object sender, EventArgs e)
{
MainFormHandler.Instance.BackupGuiNConfig(config);
}
private void tsbRestoreGuiNConfig_Click(object sender, EventArgs e)
{
if (MainFormHandler.Instance.RestoreGuiNConfig(ref config))
{
RefreshServers();
}
}
#endregion
@@ -1139,7 +1166,7 @@ namespace v2rayN.Forms
if (index >= 0 && index < lvServers.Items.Count && lvServers.Items.Count > 0)
{
lvServers.Items[index].Selected = true;
lvServers.EnsureVisible(index); // workaround
lvServers.SetScrollPosition(index);
}
SetVisibleCore(true);
@@ -1350,12 +1377,17 @@ namespace v2rayN.Forms
menuExit_Click(null, null);
}
};
(new UpdateHandle()).CheckUpdateGuiN(config, _updateUI);
(new UpdateHandle()).CheckUpdateGuiN(config, _updateUI, config.checkPreReleaseUpdate);
}
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
{
CheckUpdateCore(ECoreType.v2fly);
CheckUpdateCore(ECoreType.v2fly_v5);
}
private void tsbCheckUpdateSagerNetCore_Click(object sender, EventArgs e)
{
CheckUpdateCore(ECoreType.SagerNet);
}
private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e)
@@ -1393,7 +1425,7 @@ namespace v2rayN.Forms
AppendText(false, ResUI.MsgUpdateV2rayCoreSuccessfully);
}
};
(new UpdateHandle()).CheckUpdateCore(type, config, _updateUI);
(new UpdateHandle()).CheckUpdateCore(type, config, _updateUI, config.checkPreReleaseUpdate);
}
private void tsbCheckUpdateGeo_Click(object sender, EventArgs e)
@@ -1439,18 +1471,27 @@ namespace v2rayN.Forms
private void tsbSubUpdate_Click(object sender, EventArgs e)
{
UpdateSubscriptionProcess(false);
UpdateSubscriptionProcess("", false);
}
private void tsbSubUpdateViaProxy_Click(object sender, EventArgs e)
{
UpdateSubscriptionProcess(true);
UpdateSubscriptionProcess("", true);
}
private void tsbSubGroupUpdate_Click(object sender, EventArgs e)
{
UpdateSubscriptionProcess(_groupId, true);
}
private void tsbSubGroupUpdateViaProxy_Click(object sender, EventArgs e)
{
UpdateSubscriptionProcess(_groupId, true);
}
/// <summary>
/// the subscription update process
/// </summary>
private void UpdateSubscriptionProcess(bool blProxy)
private void UpdateSubscriptionProcess(string groupId, bool blProxy)
{
void _updateUI(bool success, string msg)
{
@@ -1468,7 +1509,7 @@ namespace v2rayN.Forms
}
};
(new UpdateHandle()).UpdateSubscriptionProcess(config, blProxy, _updateUI);
(new UpdateHandle()).UpdateSubscriptionProcess(config, groupId, blProxy, _updateUI);
}
private void tsbQRCodeSwitch_CheckedChanged(object sender, EventArgs e)
@@ -1559,4 +1600,4 @@ namespace v2rayN.Forms
#endregion
}
}
}

View File

@@ -123,205 +123,205 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="scServers.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 17</value>
<value>3, 21</value>
</data>
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<data name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing">
<value>226, 19</value>
</metadata>
</data>
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddVmessServer.Text" xml:space="preserve">
<value>Add [VMess] server</value>
</data>
<data name="menuAddVlessServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddVlessServer.Text" xml:space="preserve">
<value>Add [VLESS] server</value>
</data>
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
<value>Add [Shadowsocks] server</value>
</data>
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddSocksServer.Text" xml:space="preserve">
<value>Add [Socks] server</value>
</data>
<data name="menuAddTrojanServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddTrojanServer.Text" xml:space="preserve">
<value>Add [Trojan] server</value>
</data>
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddCustomServer.Text" xml:space="preserve">
<value>Add a custom configuration server</value>
</data>
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuAddServers.Text" xml:space="preserve">
<value>Import bulk URL from clipboard (Ctrl+V)</value>
</data>
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuScanScreen.Text" xml:space="preserve">
<value>Scan QR code on the screen (Ctrl+S)</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>352, 6</value>
<value>420, 6</value>
</data>
<data name="menuServerFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>423, 24</value>
</data>
<data name="menuServerFilter.Text" xml:space="preserve">
<value>Set server filter (Ctrl+F)</value>
</data>
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuRemoveServer.Text" xml:space="preserve">
<value>Remove selected servers (Delete)</value>
</data>
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
<value>Remove duplicate servers</value>
</data>
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuCopyServer.Text" xml:space="preserve">
<value>Clone selected server</value>
</data>
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuSetDefaultServer.Text" xml:space="preserve">
<value>Set as active server (Enter)</value>
</data>
<data name="menuServerFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
</data>
<data name="menuServerFilter.Text" xml:space="preserve">
<value>Set server filter (Ctrl+F)</value>
</data>
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
<value>352, 6</value>
<value>420, 6</value>
</data>
<data name="menuMoveToGroup.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuMoveToGroup.Text" xml:space="preserve">
<value>Move to Group</value>
</data>
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 22</value>
<value>237, 26</value>
</data>
<data name="menuMoveTop.Text" xml:space="preserve">
<value>Move to top (T)</value>
</data>
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 22</value>
<value>237, 26</value>
</data>
<data name="menuMoveUp.Text" xml:space="preserve">
<value>Up (U)</value>
</data>
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 22</value>
<value>237, 26</value>
</data>
<data name="menuMoveDown.Text" xml:space="preserve">
<value>Down (D)</value>
</data>
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 22</value>
<value>237, 26</value>
</data>
<data name="menuMoveBottom.Text" xml:space="preserve">
<value>Move to bottom (B)</value>
</data>
<data name="menuMoveEvent.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuMoveEvent.Text" xml:space="preserve">
<value>Move to</value>
</data>
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuSelectAll.Text" xml:space="preserve">
<value>Select All (Ctrl+A)</value>
</data>
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
<value>352, 6</value>
<value>420, 6</value>
</data>
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuPingServer.Text" xml:space="preserve">
<value>Test servers ping (Ctrl+P)</value>
</data>
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuTcpingServer.Text" xml:space="preserve">
<value>Test servers with tcping (Ctrl+O)</value>
</data>
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuRealPingServer.Text" xml:space="preserve">
<value>Test servers real delay (Ctrl+R)</value>
</data>
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuSpeedServer.Text" xml:space="preserve">
<value>Test servers download speed (Ctrl+T)</value>
</data>
<data name="menuSortServerResult.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuSortServerResult.Text" xml:space="preserve">
<value>Sort by test result (Ctrl+E)</value>
</data>
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="tsbTestMe.Text" xml:space="preserve">
<value>Test current service status</value>
</data>
<data name="menuClearServerStatistics.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuClearServerStatistics.Text" xml:space="preserve">
<value>Clear all service statistics</value>
</data>
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
<value>352, 6</value>
<value>420, 6</value>
</data>
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuExport2ClientConfig.Text" xml:space="preserve">
<value>Export selected server for client configuration</value>
</data>
<data name="menuExport2ServerConfig.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuExport2ServerConfig.Text" xml:space="preserve">
<value>Export selected server for server configuration</value>
</data>
<data name="menuExport2ShareUrl.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuExport2ShareUrl.Text" xml:space="preserve">
<value>Export share URLs to clipboard (Ctrl+C)</value>
</data>
<data name="menuExport2SubContent.Size" type="System.Drawing.Size, System.Drawing">
<value>355, 22</value>
<value>423, 24</value>
</data>
<data name="menuExport2SubContent.Text" xml:space="preserve">
<value>Export subscription (base64) share to clipboard</value>
@@ -330,7 +330,7 @@
<value>Magenta</value>
</data>
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 53</value>
<value>77, 56</value>
</data>
<data name="tsbServer.Text" xml:space="preserve">
<value>Servers</value>
@@ -339,7 +339,7 @@
<value>ImageAboveText</value>
</data>
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
<value>356, 644</value>
<value>424, 676</value>
</data>
<data name="&gt;&gt;cmsLv.Name" xml:space="preserve">
<value>cmsLv</value>
@@ -371,7 +371,7 @@
<value>0, 20</value>
</data>
<data name="lvServers.Size" type="System.Drawing.Size, System.Drawing">
<value>686, 260</value>
<value>1003, 338</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lvServers.TabIndex" type="System.Int32, mscorlib">
@@ -381,7 +381,7 @@
<value>lvServers</value>
</data>
<data name="&gt;&gt;lvServers.Type" xml:space="preserve">
<value>v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>v2rayN.Base.ListViewFlickerFree, v2rayN, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvServers.Parent" xml:space="preserve">
<value>scServers.Panel1</value>
@@ -396,7 +396,7 @@
<value>0, 0</value>
</data>
<data name="tabGroup.Size" type="System.Drawing.Size, System.Drawing">
<value>686, 20</value>
<value>1003, 20</value>
</data>
<data name="tabGroup.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -435,7 +435,7 @@
<value>4, 4, 4, 4</value>
</data>
<data name="qrCodeControl.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 280</value>
<value>256, 358</value>
</data>
<data name="qrCodeControl.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@@ -444,7 +444,7 @@
<value>qrCodeControl</value>
</data>
<data name="&gt;&gt;qrCodeControl.Type" xml:space="preserve">
<value>v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>v2rayN.Forms.QRCodeControl, v2rayN, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;qrCodeControl.Parent" xml:space="preserve">
<value>scServers.Panel2</value>
@@ -468,10 +468,10 @@
<value>100</value>
</data>
<data name="scServers.Size" type="System.Drawing.Size, System.Drawing">
<value>946, 280</value>
<value>1263, 358</value>
</data>
<data name="scServers.SplitterDistance" type="System.Int32, mscorlib">
<value>686</value>
<value>1003</value>
</data>
<data name="scServers.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -492,7 +492,7 @@
<value>Fill</value>
</data>
<data name="scBig.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 66</value>
<value>0, 69</value>
</data>
<data name="scBig.Orientation" type="System.Windows.Forms.Orientation, System.Windows.Forms">
<value>Horizontal</value>
@@ -504,7 +504,7 @@
<value>0, 0</value>
</data>
<data name="gbServers.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 300</value>
<value>1269, 382</value>
</data>
<data name="gbServers.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -539,8 +539,11 @@
<data name="mainMsgControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="mainMsgControl.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="mainMsgControl.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 223</value>
<value>1269, 286</value>
</data>
<data name="mainMsgControl.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -549,7 +552,7 @@
<value>mainMsgControl</value>
</data>
<data name="&gt;&gt;mainMsgControl.Type" xml:space="preserve">
<value>v2rayN.Forms.MainMsgControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>v2rayN.Forms.MainMsgControl, v2rayN, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;mainMsgControl.Parent" xml:space="preserve">
<value>scBig.Panel2</value>
@@ -570,10 +573,10 @@
<value>1</value>
</data>
<data name="scBig.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 527</value>
<value>1269, 672</value>
</data>
<data name="scBig.SplitterDistance" type="System.Int32, mscorlib">
<value>300</value>
<value>382</value>
</data>
<data name="scBig.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@@ -590,89 +593,89 @@
<data name="&gt;&gt;scBig.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="notifyMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<data name="notifyMain.TrayLocation" type="System.Drawing.Point, System.Drawing">
<value>17, 17</value>
</metadata>
<metadata name="cmsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
</data>
<data name="cmsMain.TrayLocation" type="System.Drawing.Point, System.Drawing">
<value>137, 17</value>
</metadata>
</data>
<data name="cmsMain.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 22</value>
<value>300, 26</value>
</data>
<data name="menuKeepClear.Text" xml:space="preserve">
<value>Clear system proxy</value>
</data>
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 22</value>
<value>300, 26</value>
</data>
<data name="menuGlobal.Text" xml:space="preserve">
<value>Set system proxy</value>
</data>
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 22</value>
<value>300, 26</value>
</data>
<data name="menuKeepNothing.Text" xml:space="preserve">
<value>Do not change system proxy</value>
</data>
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuSysAgentMode.Text" xml:space="preserve">
<value>System proxy</value>
</data>
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuRoutings.Text" xml:space="preserve">
<value>Routing</value>
</data>
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuServers.Text" xml:space="preserve">
<value>Server</value>
</data>
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 6</value>
<value>329, 6</value>
</data>
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuAddServers2.Text" xml:space="preserve">
<value>Import bulk URL from clipboard</value>
</data>
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuScanScreen2.Text" xml:space="preserve">
<value>Scan QR code on the screen</value>
</data>
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
<value>Update subscription without proxy</value>
</data>
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</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>274, 6</value>
<value>329, 6</value>
</data>
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>332, 24</value>
</data>
<data name="menuExit.Text" xml:space="preserve">
<value>Exit</value>
</data>
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>278, 192</value>
<value>333, 208</value>
</data>
<data name="&gt;&gt;cmsMain.Name" xml:space="preserve">
<value>cmsMain</value>
@@ -690,10 +693,10 @@
<value>Top</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 56</value>
<value>0, 59</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 10</value>
<value>1269, 10</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@@ -710,35 +713,47 @@
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<data name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing">
<value>315, 17</value>
</metadata>
</data>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
<value>6, 59</value>
</data>
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>395, 26</value>
</data>
<data name="tsbSubSetting.Text" xml:space="preserve">
<value>Settings</value>
</data>
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>395, 26</value>
</data>
<data name="tsbSubUpdate.Text" xml:space="preserve">
<value>Update subscription without proxy</value>
</data>
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 22</value>
<value>395, 26</value>
</data>
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
<value>Update subscription with proxy</value>
</data>
<data name="tsbSubGroupUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>395, 26</value>
</data>
<data name="tsbSubGroupUpdate.Text" xml:space="preserve">
<value>Update group subscription without proxy</value>
</data>
<data name="tsbSubGroupUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
<value>395, 26</value>
</data>
<data name="tsbSubGroupUpdateViaProxy.Text" xml:space="preserve">
<value>Update group subscription with proxy</value>
</data>
<data name="tsbSub.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 53</value>
<value>122, 56</value>
</data>
<data name="tsbSub.Text" xml:space="preserve">
<value>Subscriptions</value>
@@ -750,7 +765,7 @@
<value>Magenta</value>
</data>
<data name="tsbQRCodeSwitch.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 53</value>
<value>54, 56</value>
</data>
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
<value>Share</value>
@@ -762,46 +777,52 @@
<value>ImageAboveText</value>
</data>
<data name="toolStripSeparator8.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
<value>6, 59</value>
</data>
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
<value>245, 26</value>
</data>
<data name="tsbOptionSetting.Text" xml:space="preserve">
<value>OptionSetting</value>
</data>
<data name="tsbRoutingSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
<value>245, 26</value>
</data>
<data name="tsbRoutingSetting.Text" xml:space="preserve">
<value>RoutingSetting</value>
</data>
<data name="tsbGlobalHotkeySetting.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
<value>245, 26</value>
</data>
<data name="tsbGlobalHotkeySetting.Text" xml:space="preserve">
<value>GlobalHotkeySetting</value>
</data>
<data name="tsbGroupSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
<value>245, 26</value>
</data>
<data name="tsbGroupSetting.Text" xml:space="preserve">
<value>GroupSetting</value>
</data>
<data name="toolStripSeparator14.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 6</value>
<value>242, 6</value>
</data>
<data name="tsbBackupGuiNConfig.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 22</value>
<value>245, 26</value>
</data>
<data name="tsbBackupGuiNConfig.Text" xml:space="preserve">
<value>BackupGuiConfig</value>
</data>
<data name="tsbRestoreGuiNConfig.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 26</value>
</data>
<data name="tsbRestoreGuiNConfig.Text" xml:space="preserve">
<value>RestoreGuiNConfig</value>
</data>
<data name="tsbSetting.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbSetting.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 53</value>
<value>83, 56</value>
</data>
<data name="tsbSetting.Text" xml:space="preserve">
<value>Settings</value>
@@ -810,7 +831,7 @@
<value>ImageAboveText</value>
</data>
<data name="toolStripSeparator5.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
<value>6, 59</value>
</data>
<data name="tsbReload.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>BottomCenter</value>
@@ -819,7 +840,7 @@
<value>Magenta</value>
</data>
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 53</value>
<value>120, 56</value>
</data>
<data name="tsbReload.Text" xml:space="preserve">
<value>Restart service</value>
@@ -828,46 +849,52 @@
<value>ImageAboveText</value>
</data>
<data name="toolStripSeparator7.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
<value>6, 59</value>
</data>
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
<value>v2rayN (this software)</value>
</data>
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
<value>Update v2fly Core</value>
<value>Update v2fly_v5 Core</value>
</data>
<data name="tsbCheckUpdateSagerNetCore.Size" type="System.Drawing.Size, System.Drawing">
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
<value>Update SagerNet Core</value>
</data>
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateXrayCore.Text" xml:space="preserve">
<value>Update Xray Core</value>
</data>
<data name="toolStripSeparator16.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 6</value>
<value>266, 6</value>
</data>
<data name="tsbCheckUpdateClashCore.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateClashCore.Text" xml:space="preserve">
<value>Update clash Core</value>
</data>
<data name="tsbCheckUpdateClashMetaCore.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateClashMetaCore.Text" xml:space="preserve">
<value>Update Clash.Meta Core</value>
</data>
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 6</value>
<value>266, 6</value>
</data>
<data name="tsbCheckUpdateGeo.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 22</value>
<value>269, 26</value>
</data>
<data name="tsbCheckUpdateGeo.Text" xml:space="preserve">
<value>Update Geo files</value>
@@ -876,7 +903,7 @@
<value>Magenta</value>
</data>
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 53</value>
<value>155, 56</value>
</data>
<data name="tsbCheckUpdate.Text" xml:space="preserve">
<value>Check for updates</value>
@@ -885,31 +912,31 @@
<value>ImageAboveText</value>
</data>
<data name="toolStripSeparator10.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
<value>6, 59</value>
</data>
<data name="tsbAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
<value>230, 26</value>
</data>
<data name="tsbAbout.Text" xml:space="preserve">
<value>v2rayN Project</value>
</data>
<data name="tsbV2rayWebsite.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
<value>230, 26</value>
</data>
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
<value>V2Ray Website</value>
</data>
<data name="toolStripSeparator12.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 6</value>
<value>227, 6</value>
</data>
<data name="tsbLanguageDef.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
<value>230, 26</value>
</data>
<data name="tsbLanguageDef.Text" xml:space="preserve">
<value>Language-[English]</value>
</data>
<data name="tsbLanguageZhHans.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 22</value>
<value>230, 26</value>
</data>
<data name="tsbLanguageZhHans.Text" xml:space="preserve">
<value>语言-[中文简体]</value>
@@ -918,7 +945,7 @@
<value>Magenta</value>
</data>
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 53</value>
<value>58, 56</value>
</data>
<data name="tsbHelp.Text" xml:space="preserve">
<value>Help</value>
@@ -930,7 +957,7 @@
<value>Magenta</value>
</data>
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 53</value>
<value>107, 56</value>
</data>
<data name="tsbPromotion.Text" xml:space="preserve">
<value> Promotion </value>
@@ -939,13 +966,13 @@
<value>ImageAboveText</value>
</data>
<data name="toolStripSeparator11.Size" type="System.Drawing.Size, System.Drawing">
<value>6, 56</value>
<value>6, 59</value>
</data>
<data name="tsbClose.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 53</value>
<value>61, 56</value>
</data>
<data name="tsbClose.Text" xml:space="preserve">
<value> Close </value>
@@ -957,7 +984,7 @@
<value>0, 0</value>
</data>
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
<value>952, 56</value>
<value>1269, 59</value>
</data>
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -974,20 +1001,20 @@
<data name="&gt;&gt;tsMain.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<data name="$this.Localizable" type="System.Boolean, mscorlib">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib">
<value>64</value>
</metadata>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 12</value>
<value>8, 15</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>952, 593</value>
<value>1269, 741</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
<value>5, 5, 5, 5</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>v2rayN</value>
@@ -1046,6 +1073,12 @@
<data name="&gt;&gt;toolStripSeparator1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;menuServerFilter.Name" xml:space="preserve">
<value>menuServerFilter</value>
</data>
<data name="&gt;&gt;menuServerFilter.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="&gt;&gt;menuRemoveServer.Name" xml:space="preserve">
<value>menuRemoveServer</value>
</data>
@@ -1070,12 +1103,6 @@
<data name="&gt;&gt;menuSetDefaultServer.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="&gt;&gt;menuServerFilter.Name" xml:space="preserve">
<value>menuServerFilter</value>
</data>
<data name="&gt;&gt;menuServerFilter.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="&gt;&gt;toolStripSeparator3.Name" xml:space="preserve">
<value>toolStripSeparator3</value>
</data>
@@ -1322,6 +1349,18 @@
<data name="&gt;&gt;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="&gt;&gt;tsbSubGroupUpdate.Name" xml:space="preserve">
<value>tsbSubGroupUpdate</value>
</data>
<data name="&gt;&gt;tsbSubGroupUpdate.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="&gt;&gt;tsbSubGroupUpdateViaProxy.Name" xml:space="preserve">
<value>tsbSubGroupUpdateViaProxy</value>
</data>
<data name="&gt;&gt;tsbSubGroupUpdateViaProxy.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="&gt;&gt;tsbQRCodeSwitch.Name" xml:space="preserve">
<value>tsbQRCodeSwitch</value>
</data>
@@ -1376,6 +1415,12 @@
<data name="&gt;&gt;tsbBackupGuiNConfig.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="&gt;&gt;tsbRestoreGuiNConfig.Name" xml:space="preserve">
<value>tsbRestoreGuiNConfig</value>
</data>
<data name="&gt;&gt;tsbRestoreGuiNConfig.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="&gt;&gt;toolStripSeparator5.Name" xml:space="preserve">
<value>toolStripSeparator5</value>
</data>
@@ -1412,6 +1457,12 @@
<data name="&gt;&gt;tsbCheckUpdateCore.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="&gt;&gt;tsbCheckUpdateSagerNetCore.Name" xml:space="preserve">
<value>tsbCheckUpdateSagerNetCore</value>
</data>
<data name="&gt;&gt;tsbCheckUpdateSagerNetCore.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="&gt;&gt;tsbCheckUpdateXrayCore.Name" xml:space="preserve">
<value>tsbCheckUpdateXrayCore</value>
</data>
@@ -1512,6 +1563,6 @@
<value>MainForm</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>v2rayN.Forms.BaseForm, v2rayN, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@@ -505,7 +505,7 @@
<value>168, 22</value>
</data>
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
<value>v2fly-Core</value>
<value>v2fly_v5-Core</value>
</data>
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 22</value>
@@ -570,4 +570,16 @@
<data name="menuSortServerResult.Text" xml:space="preserve">
<value>按测试结果排序 (Ctrl+E)</value>
</data>
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
<value>SagerNet-Core</value>
</data>
<data name="tsbSubGroupUpdate.Text" xml:space="preserve">
<value>更新当前分组订阅(不通过代理)</value>
</data>
<data name="tsbSubGroupUpdateViaProxy.Text" xml:space="preserve">
<value>更新当前分组订阅(通过代理)</value>
</data>
<data name="tsbRestoreGuiNConfig.Text" xml:space="preserve">
<value>恢复v2rayN配置文件</value>
</data>
</root>

View File

@@ -26,7 +26,11 @@ namespace v2rayN.Forms
private void MainMsgControl_Load(object sender, EventArgs e)
{
_msgFilter = Utils.RegReadValue(Global.MyRegPath, Utils.MainMsgFilterKey, "");
if (!Utils.IsNullOrEmpty(_msgFilter))
{
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
}
}
#region
@@ -188,6 +192,7 @@ namespace v2rayN.Forms
{
_msgFilter = fm.MsgFilter;
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
Utils.RegWriteValue(Global.MyRegPath, Utils.MainMsgFilterKey, _msgFilter);
}
}

View File

@@ -108,6 +108,7 @@
this.panel2 = new System.Windows.Forms.Panel();
this.btnOK = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.chkEnableCheckPreReleaseUpdate = new System.Windows.Forms.CheckBox();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox1.SuspendLayout();
@@ -123,34 +124,33 @@
//
// btnClose
//
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// 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.tabPageCoreType);
this.tabControl1.Controls.Add(this.tabPage3);
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
//
// tabPage1
//
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Controls.Add(this.groupBox1);
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.label16);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.txtpass);
@@ -167,6 +167,7 @@
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;
//
@@ -216,8 +217,8 @@
//
// cmbprotocol
//
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
this.cmbprotocol.FormattingEnabled = true;
this.cmbprotocol.Items.AddRange(new object[] {
resources.GetString("cmbprotocol.Items"),
@@ -243,7 +244,6 @@
//
// cmbloglevel
//
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbloglevel.FormattingEnabled = true;
this.cmbloglevel.Items.AddRange(new object[] {
@@ -252,6 +252,7 @@
resources.GetString("cmbloglevel.Items2"),
resources.GetString("cmbloglevel.Items3"),
resources.GetString("cmbloglevel.Items4")});
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
this.cmbloglevel.Name = "cmbloglevel";
//
// label5
@@ -271,18 +272,17 @@
//
// tabPage2
//
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.Controls.Add(this.cmbdomainStrategy4Freedom);
this.tabPage2.Controls.Add(this.label19);
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;
//
// cmbdomainStrategy4Freedom
//
resources.ApplyResources(this.cmbdomainStrategy4Freedom, "cmbdomainStrategy4Freedom");
this.cmbdomainStrategy4Freedom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbdomainStrategy4Freedom.FormattingEnabled = true;
this.cmbdomainStrategy4Freedom.Items.AddRange(new object[] {
@@ -290,6 +290,7 @@
resources.GetString("cmbdomainStrategy4Freedom.Items1"),
resources.GetString("cmbdomainStrategy4Freedom.Items2"),
resources.GetString("cmbdomainStrategy4Freedom.Items3")});
resources.ApplyResources(this.cmbdomainStrategy4Freedom, "cmbdomainStrategy4Freedom");
this.cmbdomainStrategy4Freedom.Name = "cmbdomainStrategy4Freedom";
//
// label19
@@ -316,7 +317,6 @@
//
// tabPage6
//
resources.ApplyResources(this.tabPage6, "tabPage6");
this.tabPage6.Controls.Add(this.chkKcpcongestion);
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
this.tabPage6.Controls.Add(this.label10);
@@ -330,6 +330,7 @@
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;
//
@@ -401,7 +402,7 @@
//
// tabPage7
//
resources.ApplyResources(this.tabPage7, "tabPage7");
this.tabPage7.Controls.Add(this.chkEnableCheckPreReleaseUpdate);
this.tabPage7.Controls.Add(this.numStatisticsFreshRate);
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
this.tabPage7.Controls.Add(this.label17);
@@ -417,6 +418,7 @@
this.tabPage7.Controls.Add(this.lbFreshrate);
this.tabPage7.Controls.Add(this.chkEnableStatistics);
this.tabPage7.Controls.Add(this.chkAutoRun);
resources.ApplyResources(this.tabPage7, "tabPage7");
this.tabPage7.Name = "tabPage7";
this.tabPage7.UseVisualStyleBackColor = true;
//
@@ -505,7 +507,6 @@
//
// tabPageCoreType
//
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
this.tabPageCoreType.Controls.Add(this.labCoreType6);
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
@@ -518,14 +519,15 @@
this.tabPageCoreType.Controls.Add(this.labCoreType2);
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
this.tabPageCoreType.Controls.Add(this.labCoreType1);
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
this.tabPageCoreType.Name = "tabPageCoreType";
this.tabPageCoreType.UseVisualStyleBackColor = true;
//
// cmbCoreType6
//
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType6.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
this.cmbCoreType6.Name = "cmbCoreType6";
//
// labCoreType6
@@ -535,9 +537,9 @@
//
// cmbCoreType5
//
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType5.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
this.cmbCoreType5.Name = "cmbCoreType5";
//
// labCoreType5
@@ -547,9 +549,9 @@
//
// cmbCoreType4
//
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType4.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
this.cmbCoreType4.Name = "cmbCoreType4";
//
// labCoreType4
@@ -559,9 +561,9 @@
//
// cmbCoreType3
//
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType3.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
this.cmbCoreType3.Name = "cmbCoreType3";
//
// labCoreType3
@@ -571,9 +573,9 @@
//
// cmbCoreType2
//
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType2.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
this.cmbCoreType2.Name = "cmbCoreType2";
//
// labCoreType2
@@ -583,9 +585,9 @@
//
// cmbCoreType1
//
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType1.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
this.cmbCoreType1.Name = "cmbCoreType1";
//
// labCoreType1
@@ -595,19 +597,19 @@
//
// tabPage3
//
resources.ApplyResources(this.tabPage3, "tabPage3");
this.tabPage3.Controls.Add(this.groupBox2);
resources.ApplyResources(this.tabPage3, "tabPage3");
this.tabPage3.Name = "tabPage3";
this.tabPage3.UseVisualStyleBackColor = true;
//
// groupBox2
//
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.label18);
this.groupBox2.Controls.Add(this.cmbSystemProxyAdvancedProtocol);
this.groupBox2.Controls.Add(this.label13);
this.groupBox2.Controls.Add(this.label12);
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
@@ -618,8 +620,8 @@
//
// cmbSystemProxyAdvancedProtocol
//
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
this.cmbSystemProxyAdvancedProtocol.Name = "cmbSystemProxyAdvancedProtocol";
//
// label13
@@ -639,9 +641,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
@@ -656,6 +658,12 @@
resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
//
// chkEnableCheckPreReleaseUpdate
//
resources.ApplyResources(this.chkEnableCheckPreReleaseUpdate, "chkEnableCheckPreReleaseUpdate");
this.chkEnableCheckPreReleaseUpdate.Name = "chkEnableCheckPreReleaseUpdate";
this.chkEnableCheckPreReleaseUpdate.UseVisualStyleBackColor = true;
//
// OptionSettingForm
//
resources.ApplyResources(this, "$this");
@@ -769,5 +777,6 @@
private System.Windows.Forms.NumericUpDown numStatisticsFreshRate;
private System.Windows.Forms.ComboBox cmbdomainStrategy4Freedom;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.CheckBox chkEnableCheckPreReleaseUpdate;
}
}

View File

@@ -98,6 +98,7 @@ namespace v2rayN.Forms
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
chkEnableCheckPreReleaseUpdate.Checked = config.checkPreReleaseUpdate;
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
}
@@ -289,6 +290,10 @@ namespace v2rayN.Forms
bool lastEnableStatistics = config.enableStatistics;
config.enableStatistics = chkEnableStatistics.Checked;
config.statisticsFreshRate = Convert.ToInt32(numStatisticsFreshRate.Value);
if (config.statisticsFreshRate > 100 || config.statisticsFreshRate < 1)
{
config.statisticsFreshRate = 1;
}
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
@@ -298,6 +303,7 @@ namespace v2rayN.Forms
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
config.checkPreReleaseUpdate = chkEnableCheckPreReleaseUpdate.Checked;
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -388,4 +388,7 @@
<data name="$this.Text" xml:space="preserve">
<value>参数设置</value>
</data>
<data name="chkEnableCheckPreReleaseUpdate.Text" xml:space="preserve">
<value>检查Pre-Release更新(请谨慎启用)</value>
</data>
</root>

View File

@@ -45,6 +45,7 @@
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
this.menuSetDefaultRouting = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.menuImportAdvancedRules = new System.Windows.Forms.ToolStripMenuItem();
this.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem();
this.menuServer = new System.Windows.Forms.MenuStrip();
@@ -71,7 +72,6 @@
this.txtBlockDomain = new System.Windows.Forms.TextBox();
this.tabPageRuleList = new System.Windows.Forms.TabPage();
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.panel2.SuspendLayout();
this.panel1.SuspendLayout();
this.cmsLv.SuspendLayout();
@@ -135,9 +135,6 @@
//
this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbdomainMatcher.FormattingEnabled = true;
this.cmbdomainMatcher.Items.AddRange(new object[] {
resources.GetString("cmbdomainMatcher.Items"),
resources.GetString("cmbdomainMatcher.Items1")});
resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher");
this.cmbdomainMatcher.Name = "cmbdomainMatcher";
//
@@ -209,6 +206,11 @@
resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting");
this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// menuImportAdvancedRules
//
this.menuImportAdvancedRules.Name = "menuImportAdvancedRules";
@@ -390,11 +392,6 @@
this.lvRoutings.View = System.Windows.Forms.View.Details;
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// RoutingSettingForm
//
resources.ApplyResources(this, "$this");

View File

@@ -20,6 +20,7 @@ namespace v2rayN.Forms
private void RoutingSettingForm_Load(object sender, EventArgs e)
{
ConfigHandler.InitBuiltinRouting(ref config);
cmbdomainMatcher.Items.AddRange(Global.domainMatchers.ToArray());
cmbdomainStrategy.Text = config.domainStrategy;
chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced;
@@ -169,7 +170,7 @@ namespace v2rayN.Forms
string def = string.Empty;
if (config.routingIndex.Equals(k))
{
def = "√";
def = Global.CheckMark;
}
ListViewItem lvItem = new ListViewItem(def);

File diff suppressed because it is too large Load Diff

View File

@@ -13,6 +13,7 @@ namespace v2rayN
public const string UpdateUrl = AboutUrl + @"/releases";
public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases";
public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases";
public const string SagerNetCoreUrl = "https://github.com/SagerNet/v2ray-core/releases";
public const string NUrl = @"https://github.com/2dust/v2rayN/releases";
public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases";
public const string clashMetaCoreUrl = "https://github.com/MetaCubeX/Clash.Meta/releases";
@@ -207,13 +208,16 @@ namespace v2rayN
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> ssSecuritysInSagerNet = new List<string> { "none", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "rc4", "rc4-md5", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-cfb8", "aes-192-cfb8", "aes-256-cfb8", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "bf-cfb", "cast5-cfb", "des-cfb", "idea-cfb", "rc2-cfb", "seed-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", "camellia-128-cfb8", "camellia-192-cfb8", "camellia-256-cfb8", "salsa20", "chacha20", "chacha20-ietf", "xchacha20" };
public static readonly List<string> ssSecuritysInXray = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "xchacha20-poly1305", "xchacha20-ietf-poly1305", "none", "plain", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305" };
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 static readonly List<string> coreTypes = new List<string> { "v2fly", "Xray" };
public static readonly List<string> coreTypes = new List<string> { "v2fly", "SagerNet", "Xray" , "v2fly_v5" };
public static readonly List<string> domainMatchers = new List<string> { "linear", "mph", "" };
public const string GrpcgunMode = "gun";
public const string GrpcmultiMode = "multi";
public const string CheckMark = "√";
#endregion

View File

@@ -95,10 +95,10 @@ namespace v2rayN.Handler
{
config.domainStrategy = "IPIfNonMatch";
}
if (Utils.IsNullOrEmpty(config.domainMatcher))
{
config.domainMatcher = "linear";
}
//if (Utils.IsNullOrEmpty(config.domainMatcher))
//{
// config.domainMatcher = "linear";
//}
//kcp
if (config.kcpItem == null)
@@ -156,7 +156,7 @@ namespace v2rayN.Handler
{
config.groupItem = new List<GroupItem>();
}
if (config.statisticsFreshRate > 100)
if (config.statisticsFreshRate > 100 || config.statisticsFreshRate < 1)
{
config.statisticsFreshRate = 1;
}
@@ -529,7 +529,7 @@ namespace v2rayN.Handler
vmessItem.id = vmessItem.id.TrimEx();
vmessItem.security = vmessItem.security.TrimEx();
if (!LazyConfig.Instance.GetShadowsocksSecuritys().Contains(vmessItem.security))
if (!LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).Contains(vmessItem.security))
{
return -1;
}
@@ -814,7 +814,7 @@ namespace v2rayN.Handler
&& o.headerType == n.headerType
&& o.requestHost == n.requestHost
&& o.path == n.path
&& o.streamSecurity == n.streamSecurity
&& (o.configType == EConfigType.Trojan || o.streamSecurity == n.streamSecurity)
&& o.flow == n.flow
&& o.sni == n.sni
&& (!remarks || o.remarks == n.remarks);

View File

@@ -22,14 +22,18 @@ namespace v2rayN.Handler
return _config;
}
public List<string> GetShadowsocksSecuritys()
public List<string> GetShadowsocksSecuritys(VmessItem vmessItem)
{
if (GetCoreType(null, EConfigType.Shadowsocks) == ECoreType.v2fly)
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.v2fly)
{
return Global.ssSecuritys;
}
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.Xray)
{
return Global.ssSecuritysInXray;
}
return Global.ssSecuritysInXray;
return Global.ssSecuritysInSagerNet;
}
public ECoreType GetCoreType(VmessItem vmessItem, EConfigType eConfigType)
@@ -68,7 +72,7 @@ namespace v2rayN.Handler
{
coreType = ECoreType.v2rayN,
coreUrl = Global.NUrl,
coreLatestUrl = Global.NUrl + "/latest",
coreReleaseApiUrl = Global.NUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.NUrl + "/download/{0}/v2rayN.zip",
coreDownloadUrl64 = Global.NUrl + "/download/{0}/v2rayN.zip",
});
@@ -79,10 +83,37 @@ namespace v2rayN.Handler
coreExes = new List<string> { "wv2ray", "v2ray" },
arguments = "",
coreUrl = Global.v2flyCoreUrl,
coreLatestUrl = Global.v2flyCoreUrl + "/latest",
coreReleaseApiUrl = Global.v2flyCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
coreDownloadUrl64 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
match = "V2Ray"
match = "V2Ray",
versionArg = "-version"
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.SagerNet,
coreExes = new List<string> { "SagerNet", "v2ray" },
arguments = "run",
coreUrl = Global.SagerNetCoreUrl,
coreReleaseApiUrl = Global.SagerNetCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.SagerNetCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
coreDownloadUrl64 = Global.SagerNetCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
match = "V2Ray",
versionArg = "version"
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.v2fly_v5,
coreExes = new List<string> { "v2ray" },
arguments = "run",
coreUrl = Global.v2flyCoreUrl,
coreReleaseApiUrl = Global.v2flyCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
coreDownloadUrl64 = Global.v2flyCoreUrl + "/download/{0}/v2ray-windows-{1}.zip",
match = "V2Ray",
versionArg = "version"
});
coreInfos.Add(new CoreInfo
@@ -91,10 +122,11 @@ namespace v2rayN.Handler
coreExes = new List<string> { "xray" },
arguments = "",
coreUrl = Global.xrayCoreUrl,
coreLatestUrl = Global.xrayCoreUrl + "/latest",
coreReleaseApiUrl = Global.xrayCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
coreDownloadUrl64 = Global.xrayCoreUrl + "/download/{0}/Xray-windows-{1}.zip",
match = "Xray"
match = "Xray",
versionArg = "-version"
});
coreInfos.Add(new CoreInfo
@@ -103,32 +135,35 @@ namespace v2rayN.Handler
coreExes = new List<string> { "clash-windows-amd64-v3", "clash-windows-amd64", "clash-windows-386", "clash" },
arguments = "-f config.json",
coreUrl = Global.clashCoreUrl,
coreLatestUrl = Global.clashCoreUrl + "/latest",
coreReleaseApiUrl = Global.clashCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.clashCoreUrl + "/download/{0}/clash-windows-386-{0}.zip",
coreDownloadUrl64 = Global.clashCoreUrl + "/download/{0}/clash-windows-amd64-{0}.zip",
match = "v"
match = "v",
versionArg = "-v"
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.clash_meta,
coreExes = new List<string> { "Clash.Meta-windows-amd64v1", "Clash.Meta-windows-amd64", "Clash.Meta-windows-amd64-compatible", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
coreExes = new List<string> { "Clash.Meta-windows-amd64-compatible", "Clash.Meta-windows-amd64", "Clash.Meta-windows-386", "Clash.Meta", "clash" },
arguments = "-f config.json",
coreUrl = Global.clashMetaCoreUrl,
coreLatestUrl = Global.clashMetaCoreUrl + "/latest",
coreReleaseApiUrl = Global.clashMetaCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-386-{0}.zip",
coreDownloadUrl64 = Global.clashMetaCoreUrl + "/download/{0}/Clash.Meta-windows-amd64-compatible-{0}.zip",
match = "v",
versionArg = "-v"
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.hysteria,
coreExes = new List<string> { "hysteria-tun-windows-6.0-amd64", "hysteria-tun-windows-6.0-386", "hysteria" },
coreExes = new List<string> { "hysteria-windows-amd64", "hysteria-windows-386", "hysteria" },
arguments = "",
coreUrl = Global.hysteriaCoreUrl,
coreLatestUrl = Global.hysteriaCoreUrl + "/latest",
coreDownloadUrl32 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-386.exe",
coreDownloadUrl64 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-tun-windows-6.0-amd64.exe",
coreReleaseApiUrl = Global.hysteriaCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
coreDownloadUrl32 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-windows-386.exe",
coreDownloadUrl64 = Global.hysteriaCoreUrl + "/download/{0}/hysteria-windows-amd64.exe",
});
coreInfos.Add(new CoreInfo

View File

@@ -232,6 +232,46 @@ namespace v2rayN.Handler
}
}
public bool RestoreGuiNConfig(ref Config config)
{
var fileContent = string.Empty;
using (OpenFileDialog fileDialog = new OpenFileDialog())
{
fileDialog.InitialDirectory = Utils.GetBackupPath("");
fileDialog.Filter = "guiNConfig|*.json|All|*.*";
fileDialog.FilterIndex = 2;
fileDialog.RestoreDirectory = true;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
fileContent = Utils.LoadResource(fileDialog.FileName);
}
else
{
return false;
}
}
if (Utils.IsNullOrEmpty(fileContent))
{
UI.ShowWarning(ResUI.OperationFailed);
return false;
}
var resConfig = Utils.FromJson<Config>(fileContent);
if (resConfig == null)
{
UI.ShowWarning(ResUI.OperationFailed);
return false;
}
//backup first
BackupGuiNConfig(config, true);
config = resConfig;
LazyConfig.Instance.SetConfig(ref config);
return true;
}
public void UpdateTask(Config config, Action<bool, string> update)
{
Task.Run(() => UpdateTaskRun(config, update));
@@ -254,7 +294,7 @@ namespace v2rayN.Handler
{
if ((dtNow - autoUpdateSubTime).Hours % config.autoUpdateSubInterval == 0)
{
updateHandle.UpdateSubscriptionProcess(config, true, (bool success, string msg) =>
updateHandle.UpdateSubscriptionProcess(config, "", true, (bool success, string msg) =>
{
update(success, msg);
if (success)

View File

@@ -190,15 +190,16 @@ namespace v2rayN.Handler
{
if (serverStatistics_ != null)
{
foreach (var item in serverStatistics_.server)
{
item.todayUp = 0;
item.todayDown = 0;
item.totalUp = 0;
item.totalDown = 0;
// update ui display to zero
updateFunc_(0, 0, new List<ServerStatItem> { item });
}
//foreach (var item in serverStatistics_.server)
//{
// item.todayUp = 0;
// item.todayDown = 0;
// item.totalUp = 0;
// item.totalDown = 0;
// // update ui display to zero
// updateFunc_(0, 0, new List<ServerStatItem> { item });
//}
serverStatistics_.server = new List<ServerStatItem>();
// update statistic json file
SaveToFile();

View File

@@ -1,11 +1,14 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;
using v2rayN.Base;
using v2rayN.Mode;
using v2rayN.Resx;
@@ -31,7 +34,7 @@ namespace v2rayN.Handler
}
}
public void CheckUpdateGuiN(Config config, Action<bool, string> update)
public void CheckUpdateGuiN(Config config, Action<bool, string> update, bool preRelease)
{
_config = config;
_updateFunc = update;
@@ -97,11 +100,11 @@ namespace v2rayN.Handler
}
};
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "v2rayN"));
CheckUpdateAsync(ECoreType.v2rayN);
CheckUpdateAsync(ECoreType.v2rayN, preRelease);
}
public void CheckUpdateCore(ECoreType type, Config config, Action<bool, string> update)
public void CheckUpdateCore(ECoreType type, Config config, Action<bool, string> update, bool preRelease)
{
_config = config;
_updateFunc = update;
@@ -152,11 +155,11 @@ namespace v2rayN.Handler
}
};
_updateFunc(false, string.Format(ResUI.MsgStartUpdating, "Core"));
CheckUpdateAsync(type);
CheckUpdateAsync(type, preRelease);
}
public void UpdateSubscriptionProcess(Config config, bool blProxy, Action<bool, string> update)
public void UpdateSubscriptionProcess(Config config, string groupId, bool blProxy, Action<bool, string> update)
{
_config = config;
_updateFunc = update;
@@ -187,10 +190,15 @@ namespace v2rayN.Handler
{
continue;
}
if (!Utils.IsNullOrEmpty(groupId) && item.groupId != groupId)
{
continue;
}
string id = item.id.TrimEx();
string url = item.url.TrimEx();
string userAgent = item.userAgent.TrimEx();
string groupId = item.groupId.TrimEx();
//string groupId = item.groupId.TrimEx();
string hashCode = $"{item.remarks}->";
if (Utils.IsNullOrEmpty(id) || Utils.IsNullOrEmpty(url))
{
@@ -223,7 +231,7 @@ namespace v2rayN.Handler
_updateFunc(false, $"{hashCode}{result}");
}
int ret = ConfigHandler.AddBatchServers(ref config, result, id, groupId);
int ret = ConfigHandler.AddBatchServers(ref config, result, id, item.groupId.TrimEx());
_updateFunc(false,
ret > 0
? $"{hashCode}{ResUI.MsgUpdateSubscriptionEnd}"
@@ -305,17 +313,17 @@ namespace v2rayN.Handler
#region private
private async void CheckUpdateAsync(ECoreType type)
private async void CheckUpdateAsync(ECoreType type, bool preRelease)
{
try
{
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
string url = coreInfo.coreLatestUrl;
string url = coreInfo.coreReleaseApiUrl;
var result = await (new DownloadHandle()).UrlRedirectAsync(url, true);
var result = await (new DownloadHandle()).DownloadStringAsync(url, true, "");
if (!Utils.IsNullOrEmpty(result))
{
responseHandler(type, result);
responseHandler(type, result, preRelease);
}
else
{
@@ -353,14 +361,14 @@ namespace v2rayN.Handler
if (!File.Exists(filePath))
{
string msg = string.Format(ResUI.NotFoundCore, @"");
string msg = string.Format(ResUI.NotFoundCore, @"", "");
//ShowMsg(true, msg);
return "";
}
Process p = new Process();
p.StartInfo.FileName = filePath;
p.StartInfo.Arguments = "-version";
p.StartInfo.Arguments = coreInfo.versionArg;
p.StartInfo.WorkingDirectory = Utils.StartupPath();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
@@ -369,7 +377,20 @@ namespace v2rayN.Handler
p.Start();
p.WaitForExit(5000);
string echo = p.StandardOutput.ReadToEnd();
string version = Regex.Match(echo, $"{coreInfo.match} ([0-9.]+) \\(").Groups[1].Value;
string version = string.Empty;
switch (type)
{
case ECoreType.v2fly:
case ECoreType.SagerNet:
case ECoreType.Xray:
case ECoreType.v2fly_v5:
version = Regex.Match(echo, $"{coreInfo.match} ([0-9.]+) \\(").Groups[1].Value;
break;
case ECoreType.clash:
case ECoreType.clash_meta:
version = Regex.Match(echo, $"v[0-9.]+").Groups[0].Value;
break;
}
return version;
}
catch (Exception ex)
@@ -379,11 +400,20 @@ namespace v2rayN.Handler
return "";
}
}
private void responseHandler(ECoreType type, string redirectUrl)
private void responseHandler(ECoreType type, string gitHubReleaseApi, bool preRelease)
{
try
{
string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1);
var gitHubReleases = Utils.FromJson<List<GitHubRelease>>(gitHubReleaseApi);
string version;
if (preRelease)
{
version = gitHubReleases!.First().TagName;
}
else
{
version = gitHubReleases!.First(r => r.Prerelease == false).TagName;
}
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
string curVersion;
@@ -392,7 +422,9 @@ namespace v2rayN.Handler
switch (type)
{
case ECoreType.v2fly:
case ECoreType.SagerNet:
case ECoreType.Xray:
case ECoreType.v2fly_v5:
{
curVersion = "v" + getCoreVersion(type);
message = string.Format(ResUI.IsLatestCore, curVersion);
@@ -403,7 +435,7 @@ namespace v2rayN.Handler
case ECoreType.clash:
case ECoreType.clash_meta:
{
curVersion = "";//getCoreVersion(type);
curVersion = getCoreVersion(type);
message = string.Format(ResUI.IsLatestCore, curVersion);
if (Environment.Is64BitProcess)
{

View File

@@ -200,7 +200,7 @@ namespace v2rayN.Handler
&& v2rayConfig.routing.rules != null)
{
v2rayConfig.routing.domainStrategy = config.domainStrategy;
v2rayConfig.routing.domainMatcher = config.domainMatcher;
v2rayConfig.routing.domainMatcher = Utils.IsNullOrEmpty(config.domainMatcher) ? null : config.domainMatcher;
if (config.enableRoutingAdvanced)
{
@@ -411,7 +411,7 @@ namespace v2rayN.Handler
serversItem.address = node.address;
serversItem.port = node.port;
serversItem.password = node.id;
serversItem.method = LazyConfig.Instance.GetShadowsocksSecuritys().Contains(node.security) ? node.security : "none";
serversItem.method = LazyConfig.Instance.GetShadowsocksSecuritys(node).Contains(node.security) ? node.security : "none";
serversItem.ota = false;
@@ -949,7 +949,9 @@ namespace v2rayN.Handler
switch (coreType)
{
case ECoreType.v2fly:
case ECoreType.SagerNet:
case ECoreType.Xray:
case ECoreType.v2fly_v5:
break;
case ECoreType.clash:
case ECoreType.clash_meta:

View File

@@ -186,7 +186,7 @@ namespace v2rayN.Handler
}
if (Utils.IsNullOrEmpty(fileName))
{
string msg = string.Format(ResUI.NotFoundCore, coreInfo.coreUrl);
string msg = string.Format(ResUI.NotFoundCore, string.Join(", ", lstCoreTemp.ToArray()), coreInfo.coreUrl);
ShowMsg(false, msg);
}
return fileName;

View File

@@ -137,6 +137,8 @@ namespace v2rayN.Mode
public int autoUpdateInterval { get; set; } = 0;
public int autoUpdateSubInterval { get; set; } = 0;
public bool checkPreReleaseUpdate { get; set; } = false;
public bool enableSecurityProtocolTls13
{

View File

@@ -14,12 +14,14 @@ namespace v2rayN.Mode
public string coreUrl { get; set; }
public string coreLatestUrl { get; set; }
public string coreReleaseApiUrl { get; set; }
public string coreDownloadUrl32 { get; set; }
public string coreDownloadUrl64 { get; set; }
public string match { get; set; }
public string versionArg { get; set; }
}
}

View File

@@ -5,6 +5,8 @@ namespace v2rayN.Mode
{
v2fly = 1,
Xray = 2,
SagerNet = 3,
v2fly_v5 = 4,
clash = 11,
clash_meta = 12,
hysteria = 21,

View File

@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace v2rayN.Mode
{
public class GitHubReleaseAsset
{
[JsonProperty("url")] public string Url { get; set; }
[JsonProperty("id")] public int Id { get; set; }
[JsonProperty("node_id")] public string NodeId { get; set; }
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("label")] public object Label { get; set; }
[JsonProperty("content_type")] public string ContentType { get; set; }
[JsonProperty("state")] public string State { get; set; }
[JsonProperty("size")] public int Size { get; set; }
[JsonProperty("download_count")] public int DownloadCount { get; set; }
[JsonProperty("created_at")] public DateTime CreatedAt { get; set; }
[JsonProperty("updated_at")] public DateTime UpdatedAt { get; set; }
[JsonProperty("browser_download_url")] public string BrowserDownloadUrl { get; set; }
}
public class GitHubRelease
{
[JsonProperty("url")] public string Url { get; set; }
[JsonProperty("assets_url")] public string AssetsUrl { get; set; }
[JsonProperty("upload_url")] public string UploadUrl { get; set; }
[JsonProperty("html_url")] public string HtmlUrl { get; set; }
[JsonProperty("id")] public int Id { get; set; }
[JsonProperty("node_id")] public string NodeId { get; set; }
[JsonProperty("tag_name")] public string TagName { get; set; }
[JsonProperty("target_commitish")] public string TargetCommitish { get; set; }
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("draft")] public bool Draft { get; set; }
[JsonProperty("prerelease")] public bool Prerelease { get; set; }
[JsonProperty("created_at")] public DateTime CreatedAt { get; set; }
[JsonProperty("published_at")] public DateTime PublishedAt { get; set; }
[JsonProperty("assets")] public List<GitHubReleaseAsset> Assets { get; set; }
[JsonProperty("tarball_url")] public string TarballUrl { get; set; }
[JsonProperty("zipball_url")] public string ZipballUrl { get; set; }
[JsonProperty("body")] public string Body { get; set; }
}
}

View File

@@ -1,35 +0,0 @@
using System.Reflection;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("v2rayN")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("v2rayN")]
[assembly: AssemblyCopyright("Copyright © 2019-2022 (GPLv3)")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("72d9f089-5e7a-4c5f-be0a-8a211536b483")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("5.30")]

View File

@@ -708,6 +708,15 @@ namespace v2rayN.Resx {
}
}
/// <summary>
/// 查找类似 Normal use of this version requires .NET Framework 4.8 的本地化字符串。
/// </summary>
internal static string NetFrameworkRequirementsTip {
get {
return ResourceManager.GetString("NetFrameworkRequirementsTip", resourceCulture);
}
}
/// <summary>
/// 查找类似 Non-VMess or ss protocol 的本地化字符串。
/// </summary>
@@ -727,7 +736,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// 查找类似 Core not found, please download: {0} 的本地化字符串。
/// 查找类似 Core not found({0}), please download: {1} 的本地化字符串。
/// </summary>
internal static string NotFoundCore {
get {

View File

@@ -295,7 +295,7 @@
<value> non-standard service, this feature is invalid</value>
</data>
<data name="NotFoundCore" xml:space="preserve">
<value>Core not found, please download: {0}</value>
<value>Core not found({0}), please download: {1}</value>
</data>
<data name="NoValidQRcodeFound" xml:space="preserve">
<value>Scan completed, no valid QR code found</value>
@@ -472,4 +472,7 @@
<data name="MsgServerTitle" xml:space="preserve">
<value>Servers (Filter : {0})</value>
</data>
<data name="NetFrameworkRequirementsTip" xml:space="preserve">
<value>Normal use of this version requires .NET Framework 4.8</value>
</data>
</root>

View File

@@ -295,7 +295,7 @@
<value>非标准服务,此功能无效</value>
</data>
<data name="NotFoundCore" xml:space="preserve">
<value>找不到Core下载地址: {0}</value>
<value>找不到Core(文件名:{0}),下载地址: {1}</value>
</data>
<data name="NoValidQRcodeFound" xml:space="preserve">
<value>扫描完成,未发现有效二维码</value>
@@ -472,4 +472,7 @@
<data name="MsgServerTitle" xml:space="preserve">
<value>服务器 (过滤器 : {0})</value>
</data>
<data name="NetFrameworkRequirementsTip" xml:space="preserve">
<value>正常使用此版本需要.NET Framework 4.8,请更新后重启</value>
</data>
</root>

View File

@@ -94,6 +94,10 @@ namespace v2rayN.Tool
}
}
}
if (File.Exists(fileName))
{
File.Delete(fileName);
}
}
catch (Exception ex)
{

View File

@@ -594,6 +594,12 @@ namespace v2rayN
{
try
{
//clear
if (!RegReadValue(autoRunRegPath, "v2rayNAutoRun", "").IsNullOrEmpty())
{
RegWriteValue(autoRunRegPath, "v2rayNAutoRun", "");
}
string value = RegReadValue(autoRunRegPath, autoRunName, "");
string exePath = GetExePath();
if (value?.Equals(exePath) == true || value?.Equals($"\"{exePath}\"") == true)
@@ -694,7 +700,7 @@ namespace v2rayN
/// </summary>
/// <param name="release">需要的版本4.6.2=394802;4.8=528040</param>
/// <returns></returns>
public static bool GetDotNetRelease(int release)
public static bool CheckForDotNetVersion(int release = 528040)
{
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
@@ -707,6 +713,13 @@ namespace v2rayN
}
}
public static string MainMsgFilterKey
{
get
{
return $"MainMsgFilter_{GetMD5(StartupPath())}";
}
}
#endregion
#region

View File

@@ -1,7 +0,0 @@
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
</configuration>

View File

@@ -1,507 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0A9785E6-D256-4B73-9757-4EF59955FD1E}</ProjectGuid>
<TargetFramework>net48</TargetFramework>
<LangVersion>preview</LangVersion>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>v2rayN</RootNamespace>
<AssemblyName>v2rayN</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>发布\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>2</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<UseWindowsForms>true</UseWindowsForms>
<Copyright>Copyright © 2019-2022 (GPLv3)</Copyright>
<FileVersion>5.35</FileVersion>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>v2rayN.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>BD431FE78E8A6683106E7110882AE5C41CBF5C60</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>v2rayN_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<PropertyGroup>
<StartupObject>v2rayN.Program</StartupObject>
</PropertyGroup>
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<None Remove="Sample\custom_routing_black" />
<None Remove="Sample\custom_routing_global" />
<None Remove="Sample\custom_routing_locked" />
<None Remove="Sample\custom_routing_rules" />
<None Remove="Sample\custom_routing_white" />
<None Remove="Sample\SampleClientConfig.txt" />
<None Remove="Sample\SampleHttprequest.txt" />
<None Remove="Sample\SampleHttpresponse.txt" />
<None Remove="Sample\SampleInbound.txt" />
<None Remove="Sample\SampleServerConfig.txt" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Sample\custom_routing_black" />
<EmbeddedResource Include="Sample\custom_routing_global" />
<EmbeddedResource Include="Sample\custom_routing_locked" />
<EmbeddedResource Include="Sample\custom_routing_rules" />
<EmbeddedResource Include="Sample\custom_routing_white" />
<EmbeddedResource Include="Sample\SampleClientConfig.txt" />
<EmbeddedResource Include="Sample\SampleHttprequest.txt" />
<EmbeddedResource Include="Sample\SampleHttpresponse.txt" />
<EmbeddedResource Include="Sample\SampleInbound.txt" />
<EmbeddedResource Include="Sample\SampleServerConfig.txt" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.Data.Linq" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Messaging" />
<Reference Include="System.Net" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Base\HttpClientHelper.cs" />
<Compile Include="Base\ListViewFlickerFree.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\BaseServerForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\BaseServerForm.Designer.cs">
<DependentUpon>BaseServerForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\MainMsgControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\MainMsgControl.Designer.cs">
<DependentUpon>MainMsgControl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\MsgFilterSetForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\MsgFilterSetForm.Designer.cs">
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\RoutingRuleSettingDetailsForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\RoutingRuleSettingDetailsForm.Designer.cs">
<DependentUpon>RoutingRuleSettingDetailsForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\GlobalHotkeySettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\GlobalHotkeySettingForm.Designer.cs">
<DependentUpon>GlobalHotkeySettingForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\RoutingRuleSettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\RoutingRuleSettingForm.Designer.cs">
<DependentUpon>RoutingRuleSettingForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\ServerTransportControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\ServerTransportControl.Designer.cs">
<DependentUpon>ServerTransportControl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\GroupSettingControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\GroupSettingControl.Designer.cs">
<DependentUpon>GroupSettingControl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\GroupSettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\GroupSettingForm.Designer.cs">
<DependentUpon>GroupSettingForm.cs</DependentUpon>
</Compile>
<Compile Include="Handler\LazyConfig.cs" />
<Compile Include="Handler\ShareHandler.cs" />
<Compile Include="Handler\UpdateHandle.cs" />
<Compile Include="Mode\ComboItem.cs" />
<Compile Include="Forms\MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\RoutingSettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\RoutingSettingForm.Designer.cs">
<DependentUpon>RoutingSettingForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\SubSettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\SubSettingForm.Designer.cs">
<DependentUpon>SubSettingForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\AddServer2Form.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\AddServer2Form.Designer.cs">
<DependentUpon>AddServer2Form.cs</DependentUpon>
</Compile>
<Compile Include="Forms\QRCodeControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\QRCodeControl.Designer.cs">
<DependentUpon>QRCodeControl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\SubSettingControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\SubSettingControl.Designer.cs">
<DependentUpon>SubSettingControl.cs</DependentUpon>
</Compile>
<Compile Include="Handler\MainFormHandler.cs" />
<Compile Include="Handler\SpeedtestHandler.cs" />
<Compile Include="Handler\StatisticsHandler.cs" />
<Compile Include="Handler\DownloadHandle.cs" />
<Compile Include="Handler\ProxySetting.cs" />
<Compile Include="Handler\SysProxyHandle.cs" />
<Compile Include="Mode\ESpeedActionType.cs" />
<Compile Include="Mode\EGlobalHotkey.cs" />
<Compile Include="Mode\ECoreType.cs" />
<Compile Include="Mode\ESysProxyType.cs" />
<Compile Include="Mode\EMove.cs" />
<Compile Include="Mode\EServerColName.cs" />
<Compile Include="Mode\RoutingItem.cs" />
<Compile Include="Mode\RulesItem.cs" />
<Compile Include="Mode\ServerStatistics.cs" />
<Compile Include="Mode\CoreInfo.cs" />
<Compile Include="Mode\SysproxyConfig.cs" />
<Compile Include="Mode\EConfigType.cs" />
<Compile Include="Mode\ServerTestItem.cs" />
<Compile Include="Mode\SsSIP008.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Resx\ResUI.zh-Hans.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>ResUI.zh-Hans.resx</DependentUpon>
</Compile>
<Compile Include="Resx\ResUI.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>ResUI.resx</DependentUpon>
</Compile>
<Compile Include="Base\StringEx.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Forms\AddServerForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\AddServerForm.Designer.cs">
<DependentUpon>AddServerForm.cs</DependentUpon>
</Compile>
<Compile Include="Forms\BaseForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\BaseForm.Designer.cs">
<DependentUpon>BaseForm.cs</DependentUpon>
</Compile>
<Compile Include="Global.cs" />
<Compile Include="Handler\QRCodeHelper.cs" />
<Compile Include="Mode\VmessQRCode.cs" />
<Compile Include="Mode\V2rayTcpRequest.cs" />
<Compile Include="Handler\ConfigHandler.cs" />
<Compile Include="Handler\V2rayHandler.cs" />
<Compile Include="Mode\V2rayConfig.cs" />
<Compile Include="Mode\Config.cs" />
<Compile Include="Forms\OptionSettingForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\OptionSettingForm.Designer.cs">
<DependentUpon>OptionSettingForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Tool\FileManager.cs" />
<Compile Include="Tool\Job.cs" />
<Compile Include="Tool\Logging.cs" />
<Compile Include="Tool\QueryableExtension.cs" />
<Compile Include="Tool\UI.cs" />
<Compile Include="Tool\Utils.cs" />
<Compile Include="Handler\V2rayConfigHandler.cs" />
<EmbeddedResource Include="Forms\AddServer2Form.zh-Hans.resx">
<DependentUpon>AddServer2Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\AddServerForm.zh-Hans.resx">
<DependentUpon>AddServerForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\BaseServerForm.resx">
<DependentUpon>BaseServerForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GlobalHotkeySettingForm.zh-Hans.resx">
<DependentUpon>GlobalHotkeySettingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MainForm.zh-Hans.resx">
<DependentUpon>MainForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MainMsgControl.resx">
<DependentUpon>MainMsgControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MainMsgControl.zh-Hans.resx">
<DependentUpon>MainMsgControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MsgFilterSetForm.resx">
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\MsgFilterSetForm.zh-Hans.resx">
<DependentUpon>MsgFilterSetForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\OptionSettingForm.zh-Hans.resx">
<DependentUpon>OptionSettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\QRCodeControl.zh-Hans.resx">
<DependentUpon>QRCodeControl.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\RoutingRuleSettingDetailsForm.resx">
<DependentUpon>RoutingRuleSettingDetailsForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\RoutingRuleSettingDetailsForm.zh-Hans.resx">
<DependentUpon>RoutingRuleSettingDetailsForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GlobalHotkeySettingForm.resx">
<DependentUpon>GlobalHotkeySettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\RoutingRuleSettingForm.resx">
<DependentUpon>RoutingRuleSettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\RoutingRuleSettingForm.zh-Hans.resx">
<DependentUpon>RoutingRuleSettingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ServerTransportControl.resx">
<DependentUpon>ServerTransportControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ServerTransportControl.zh-Hans.resx">
<DependentUpon>ServerTransportControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GroupSettingControl.resx">
<DependentUpon>GroupSettingControl.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GroupSettingControl.zh-Hans.resx">
<DependentUpon>GroupSettingControl.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\SubSettingControl.resx">
<DependentUpon>SubSettingControl.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\SubSettingControl.zh-Hans.resx">
<DependentUpon>SubSettingControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\RoutingSettingForm.resx">
<DependentUpon>RoutingSettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\RoutingSettingForm.zh-Hans.resx">
<DependentUpon>RoutingSettingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GroupSettingForm.resx">
<DependentUpon>GroupSettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GroupSettingForm.zh-Hans.resx">
<DependentUpon>GroupSettingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\SubSettingForm.resx">
<DependentUpon>SubSettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\AddServerForm.resx">
<DependentUpon>AddServerForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\BaseForm.resx">
<DependentUpon>BaseForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\OptionSettingForm.resx">
<DependentUpon>OptionSettingForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\QRCodeControl.resx">
<DependentUpon>QRCodeControl.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\AddServer2Form.resx">
<DependentUpon>AddServer2Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\SubSettingForm.zh-Hans.resx">
<DependentUpon>SubSettingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="app.config">
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Resources\sysproxy.exe.gz" />
<None Include="Resources\sysproxy64.exe.gz" />
<EmbeddedResource Include="Sample\custom_routing_white" />
<EmbeddedResource Include="Sample\custom_routing_global" />
<EmbeddedResource Include="Sample\custom_routing_locked" />
<EmbeddedResource Include="Sample\custom_routing_black" />
<Protobuf Include="Protos\Statistics.proto" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resx\ResUI.zh-Hans.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>ResUI.zh-Hans.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Resx\ResUI.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>ResUI.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="v2rayN.ico" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Sample\SampleClientConfig.txt" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Sample\SampleHttprequest.txt" />
<EmbeddedResource Include="Sample\SampleHttpresponse.txt" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 和 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
<Visible>False</Visible>
<ProductName>Windows Installer 4.5</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Sample\SampleServerConfig.txt" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\restart.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\option.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\server.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\minimize.png" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\NotifyIcon1.ico" />
<Content Include="Resources\NotifyIcon2.ico" />
<Content Include="Resources\NotifyIcon3.ico" />
<EmbeddedResource Include="Sample\SampleInbound.txt" />
<None Include="Resources\share.png" />
<None Include="Resources\promotion.png" />
<None Include="Resources\sub.png" />
<None Include="Resources\checkupdate.png" />
<None Include="Resources\about.png" />
<Content Include="Resources\help.png" />
<None Include="Resources\notify.png" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf">
<Version>3.21.1</Version>
<Version>3.21.5</Version>
</PackageReference>
<PackageReference Include="Grpc.Core">
<Version>2.46.3</Version>
</PackageReference>
<PackageReference Include="Grpc.Tools">
<Version>2.46.3</Version>
<Version>2.47.0</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="log4net">
<Version>2.0.14</Version>
<Version>2.0.15</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json">
<Version>13.0.1</Version>
@@ -516,19 +74,9 @@
<Version>0.16.8</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>copy /y $(SolutionDir)v2rayUpgrade\$(OutDir)* $(TargetDir)
del $(TargetDir)*.xml $(TargetDir)*.so $(TargetDir)*.dylib
<PostBuildEvent>del $(TargetDir)*.xml $(TargetDir)*.so $(TargetDir)*.dylib
if not "$(ConfigurationName)" == "Debug" del $(TargetDir)*.pdb</PostBuildEvent>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<Import Project="..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.23.0\build\net45\Grpc.Core.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>发布\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>zh-CN</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartAction>Project</StartAction>
<StartArguments>
</StartArguments>
</PropertyGroup>
</Project>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
</configuration>

View File

@@ -37,6 +37,7 @@
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnClose.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClose.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.btnClose.Location = new System.Drawing.Point(367, 118);
this.btnClose.Name = "btnClose";
@@ -48,6 +49,7 @@
//
// btnOK
//
this.btnOK.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.btnOK.Location = new System.Drawing.Point(81, 118);
this.btnOK.Name = "btnOK";
@@ -60,7 +62,7 @@
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(79, 64);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(205, 15);
@@ -70,7 +72,7 @@
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Font = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(79, 37);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(471, 15);

View File

@@ -1,34 +0,0 @@
using System.Reflection;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("v2rayUpgrade")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("v2rayUpgrade")]
[assembly: AssemblyCopyright("Copyright © 2019-2020 (GPLv3)")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("f82be52a-155c-492c-9e0a-1e917ec62c78")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.1.0.0")]

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

View File

@@ -1,89 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{F82BE52A-155C-492C-9E0A-1E917EC62C78}</ProjectGuid>
<TargetFramework>net48</TargetFramework>
<OutputType>WinExe</OutputType>
<RootNamespace>v2rayUpgrade</RootNamespace>
<AssemblyName>v2rayUpgrade</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<UseWindowsForms>true</UseWindowsForms>
<Copyright>Copyright © 2019-2020 (GPLv3)</Copyright>
<FileVersion>1.1.0.0</FileVersion>
<ApplicationManifest>app.manifest</ApplicationManifest>
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartArguments>C:\Githubb\v2rayN\v2rayN\v2rayUpgrade\bin\Debug\v2ray-windows.zip</StartArguments>
</PropertyGroup>
</Project>