mirror of https://github.com/2dust/v2rayN
整合和优化函数
parent
643a8094a6
commit
6dddaa03ae
|
@ -1217,7 +1217,7 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore"));
|
AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore"));
|
||||||
downloadHandle.AbsoluteV2rayN(config);
|
downloadHandle.CheckUpdateAsync("v2rayN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
|
||||||
|
@ -1290,7 +1290,7 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
|
|
||||||
AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore"));
|
AppendText(false, UIRes.I18N("MsgStartUpdatingV2rayCore"));
|
||||||
downloadHandle.AbsoluteV2rayCore(config);
|
downloadHandle.CheckUpdateAsync("Core");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsbCheckUpdatePACList_Click(object sender, EventArgs e)
|
private void tsbCheckUpdatePACList_Click(object sender, EventArgs e)
|
||||||
|
|
|
@ -4,8 +4,10 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using v2rayN.Properties;
|
using v2rayN.Properties;
|
||||||
|
@ -48,68 +50,45 @@ namespace v2rayN.Handler
|
||||||
private DateTime totalDatetime = new DateTime();
|
private DateTime totalDatetime = new DateTime();
|
||||||
private int DownloadTimeout = -1;
|
private int DownloadTimeout = -1;
|
||||||
|
|
||||||
|
#region Check for updates
|
||||||
|
|
||||||
|
private readonly string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest";
|
||||||
#region v2rayN
|
|
||||||
|
|
||||||
private string nLatestUrl = "https://github.com/2dust/v2rayN/releases/latest";
|
|
||||||
private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip";
|
private const string nUrl = "https://github.com/2dust/v2rayN/releases/download/{0}/v2rayN.zip";
|
||||||
|
private readonly string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest";
|
||||||
public void AbsoluteV2rayN(Config config)
|
|
||||||
{
|
|
||||||
Utils.SetSecurityProtocol();
|
|
||||||
WebRequest request = WebRequest.Create(nLatestUrl);
|
|
||||||
request.BeginGetResponse(new AsyncCallback(OnResponseV2rayN), request);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnResponseV2rayN(IAsyncResult ar)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
|
|
||||||
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
|
|
||||||
string redirectUrl = response.ResponseUri.AbsoluteUri;
|
|
||||||
string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1);
|
|
||||||
|
|
||||||
var curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
|
|
||||||
if (curVersion == version)
|
|
||||||
{
|
|
||||||
if (AbsoluteCompleted != null)
|
|
||||||
{
|
|
||||||
string message = string.Format(UIRes.I18N("IsLatestN"), curVersion);
|
|
||||||
AbsoluteCompleted(this, new ResultEventArgs(false, message));
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
string url = string.Format(nUrl, version);
|
|
||||||
if (AbsoluteCompleted != null)
|
|
||||||
{
|
|
||||||
AbsoluteCompleted(this, new ResultEventArgs(true, url));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Utils.SaveLog(ex.Message, ex);
|
|
||||||
|
|
||||||
if (Error != null)
|
|
||||||
Error(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Core
|
|
||||||
|
|
||||||
private string coreLatestUrl = "https://github.com/v2ray/v2ray-core/releases/latest";
|
|
||||||
private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip";
|
private const string coreUrl = "https://github.com/v2ray/v2ray-core/releases/download/{0}/v2ray-windows-{1}.zip";
|
||||||
|
|
||||||
public void AbsoluteV2rayCore(Config config)
|
public async Task CheckUpdateAsync(string type)
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol();
|
Utils.SetSecurityProtocol();
|
||||||
WebRequest request = WebRequest.Create(coreLatestUrl);
|
WebRequestHandler webRequestHandler = new WebRequestHandler();
|
||||||
request.BeginGetResponse(new AsyncCallback(OnResponseV2rayCore), request);
|
webRequestHandler.AllowAutoRedirect = false;
|
||||||
|
HttpClient httpClient = new HttpClient(webRequestHandler);
|
||||||
|
|
||||||
|
string url;
|
||||||
|
if (type == "Core")
|
||||||
|
{
|
||||||
|
url = coreLatestUrl;
|
||||||
|
}
|
||||||
|
else if (type == "v2rayN")
|
||||||
|
{
|
||||||
|
url = nLatestUrl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Type");
|
||||||
|
}
|
||||||
|
HttpResponseMessage response = await httpClient.GetAsync(url);
|
||||||
|
if (response.StatusCode.ToString() == "Redirect")
|
||||||
|
{
|
||||||
|
responseHandler(type, response.Headers.Location.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Utils.SaveLog("StatusCode error: " + url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取V2RayCore版本
|
/// 获取V2RayCore版本
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -146,39 +125,44 @@ namespace v2rayN.Handler
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OnResponseV2rayCore(IAsyncResult ar)
|
private void responseHandler(string type, string redirectUrl)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
|
|
||||||
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
|
|
||||||
string redirectUrl = response.ResponseUri.AbsoluteUri;
|
|
||||||
string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1);
|
string version = redirectUrl.Substring(redirectUrl.LastIndexOf("/", StringComparison.Ordinal) + 1);
|
||||||
|
|
||||||
string curVersion = "v" + getV2rayVersion();
|
string curVersion;
|
||||||
|
string message;
|
||||||
|
string url;
|
||||||
|
if (type == "Core") {
|
||||||
|
curVersion = "v" + getV2rayVersion();
|
||||||
|
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
||||||
|
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
||||||
|
url = string.Format(coreUrl, version, osBit);
|
||||||
|
}
|
||||||
|
else if (type == "v2rayN") {
|
||||||
|
curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
|
||||||
|
message = string.Format(UIRes.I18N("IsLatestN"), curVersion);
|
||||||
|
url = string.Format(nUrl, version);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Type");
|
||||||
|
}
|
||||||
|
|
||||||
if (curVersion == version)
|
if (curVersion == version)
|
||||||
{
|
{
|
||||||
if (AbsoluteCompleted != null)
|
AbsoluteCompleted?.Invoke(this, new ResultEventArgs(false, message));
|
||||||
{
|
|
||||||
string message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
|
|
||||||
AbsoluteCompleted(this, new ResultEventArgs(false, message));
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string osBit = Environment.Is64BitProcess ? "64" : "32";
|
AbsoluteCompleted?.Invoke(this, new ResultEventArgs(true, url));
|
||||||
string url = string.Format(coreUrl, version, osBit);
|
|
||||||
if (AbsoluteCompleted != null)
|
|
||||||
{
|
|
||||||
AbsoluteCompleted(this, new ResultEventArgs(true, url));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
if (Error != null)
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
Error(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,10 +175,7 @@ namespace v2rayN.Handler
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol();
|
Utils.SetSecurityProtocol();
|
||||||
if (UpdateCompleted != null)
|
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, "Downloading..."));
|
||||||
{
|
|
||||||
UpdateCompleted(this, new ResultEventArgs(false, "Downloading..."));
|
|
||||||
}
|
|
||||||
|
|
||||||
progressPercentage = -1;
|
progressPercentage = -1;
|
||||||
totalBytesToReceive = 0;
|
totalBytesToReceive = 0;
|
||||||
|
@ -214,8 +195,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
if (Error != null)
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
Error(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,8 +260,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
if (Error != null)
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
Error(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,10 +293,7 @@ namespace v2rayN.Handler
|
||||||
|| Utils.IsNullOrEmpty(e.Error.ToString()))
|
|| Utils.IsNullOrEmpty(e.Error.ToString()))
|
||||||
{
|
{
|
||||||
string source = e.Result;
|
string source = e.Result;
|
||||||
if (UpdateCompleted != null)
|
UpdateCompleted?.Invoke(this, new ResultEventArgs(true, source));
|
||||||
{
|
|
||||||
UpdateCompleted(this, new ResultEventArgs(true, source));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -328,8 +304,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
if (Error != null)
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
Error(this, new ErrorEventArgs(ex));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,8 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Messaging" />
|
<Reference Include="System.Messaging" />
|
||||||
<Reference Include="System.Net" />
|
<Reference Include="System.Net" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Net.Http.WebRequest" />
|
||||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>LIB\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
<HintPath>LIB\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
|
|
Loading…
Reference in New Issue