Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e256ec5401 | ||
|
|
3defba6290 | ||
|
|
c201d986c5 | ||
|
|
36aad4424e | ||
|
|
b29fb1e2a3 | ||
|
|
d5aa307efb | ||
|
|
48928613bf | ||
|
|
52b8f480f6 | ||
|
|
bcda8bd602 | ||
|
|
2a11fe11e8 |
@@ -56,7 +56,7 @@ namespace v2rayN.Base
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public async Task<string> GetAsync(HttpClient client, string url)
|
||||
public async Task<string> GetAsync(HttpClient client, string url, CancellationToken token)
|
||||
{
|
||||
if (string.IsNullOrEmpty(url))
|
||||
{
|
||||
@@ -64,10 +64,7 @@ namespace v2rayN.Base
|
||||
}
|
||||
try
|
||||
{
|
||||
var cts = new CancellationTokenSource();
|
||||
cts.CancelAfter(5000);
|
||||
|
||||
HttpResponseMessage response = await client.GetAsync(url, cts.Token);
|
||||
HttpResponseMessage response = await client.GetAsync(url, token);
|
||||
return await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -123,7 +123,10 @@ namespace v2rayN.Forms
|
||||
{
|
||||
try
|
||||
{
|
||||
v2rayHandler.V2rayStop();
|
||||
Utils.SaveLog("MyAppExit Begin");
|
||||
|
||||
StorageUI();
|
||||
ConfigHandler.SaveConfig(ref config);
|
||||
|
||||
//HttpProxyHandle.CloseHttpAgent(config);
|
||||
if (blWindowsShutDown)
|
||||
@@ -135,10 +138,11 @@ namespace v2rayN.Forms
|
||||
SysProxyHandle.UpdateSysProxy(config, true);
|
||||
}
|
||||
|
||||
StorageUI();
|
||||
ConfigHandler.SaveConfig(ref config);
|
||||
statistics?.SaveToFile();
|
||||
statistics?.Close();
|
||||
|
||||
v2rayHandler.V2rayStop();
|
||||
Utils.SaveLog("MyAppExit End");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
@@ -1273,7 +1277,10 @@ namespace v2rayN.Forms
|
||||
|
||||
mainMsgControl.DisplayToolStatus(config);
|
||||
|
||||
notifyMain.Icon = this.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||
this.BeginInvoke(new Action(() =>
|
||||
{
|
||||
notifyMain.Icon = this.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||
}));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -6,6 +6,7 @@ using v2rayN.Mode;
|
||||
using v2rayN.Base;
|
||||
using System.Linq;
|
||||
using v2rayN.Tool;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace v2rayN.Handler
|
||||
{
|
||||
@@ -207,7 +208,28 @@ namespace v2rayN.Handler
|
||||
{
|
||||
lock (objLock)
|
||||
{
|
||||
Utils.ToJsonFile(config, Utils.GetPath(configRes));
|
||||
try
|
||||
{
|
||||
|
||||
//save temp file
|
||||
var resPath = Utils.GetPath(configRes);
|
||||
var tempPath = $"{resPath}_temp";
|
||||
if (Utils.ToJsonFile(config, tempPath) != 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (File.Exists(resPath))
|
||||
{
|
||||
File.Delete(resPath);
|
||||
}
|
||||
//rename
|
||||
File.Move(tempPath, resPath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Utils.SaveLog("ToJsonFile", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1012,6 +1034,56 @@ namespace v2rayN.Handler
|
||||
}
|
||||
}
|
||||
|
||||
private static int AddBatchServers4SsSIP008(ref Config config, string clipboardData, string subid, List<VmessItem> lstOriSub, string groupId)
|
||||
{
|
||||
if (Utils.IsNullOrEmpty(clipboardData))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!Utils.IsNullOrEmpty(subid))
|
||||
{
|
||||
RemoveServerViaSubid(ref config, subid);
|
||||
}
|
||||
|
||||
//SsSIP008
|
||||
var lstSsServer = Utils.FromJson<List<SsServer>>(clipboardData);
|
||||
if (lstSsServer == null || lstSsServer.Count <= 0)
|
||||
{
|
||||
var ssSIP008 = Utils.FromJson<SsSIP008>(clipboardData);
|
||||
if (ssSIP008 != null && ssSIP008.servers != null && ssSIP008.servers.Count > 0)
|
||||
{
|
||||
lstSsServer = ssSIP008.servers;
|
||||
}
|
||||
}
|
||||
|
||||
if (lstSsServer != null && lstSsServer.Count > 0)
|
||||
{
|
||||
int counter = 0;
|
||||
foreach (var it in lstSsServer)
|
||||
{
|
||||
var ssItem = new VmessItem()
|
||||
{
|
||||
subid = subid,
|
||||
groupId = groupId,
|
||||
remarks = it.remarks,
|
||||
security = it.method,
|
||||
id = it.password,
|
||||
address = it.server,
|
||||
port = Utils.ToInt(it.server_port)
|
||||
};
|
||||
if (AddShadowsocksServer(ref config, ssItem, false) == 0)
|
||||
{
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
ToJsonFile(config);
|
||||
return counter;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int AddBatchServers(ref Config config, string clipboardData, string subid, string groupId)
|
||||
{
|
||||
List<VmessItem> lstOriSub = null;
|
||||
@@ -1026,6 +1098,11 @@ namespace v2rayN.Handler
|
||||
counter = AddBatchServers(ref config, Utils.Base64Decode(clipboardData), subid, lstOriSub, groupId);
|
||||
}
|
||||
|
||||
if (counter < 1)
|
||||
{
|
||||
counter = AddBatchServers4SsSIP008(ref config, clipboardData, subid, lstOriSub, groupId);
|
||||
}
|
||||
|
||||
//maybe other sub
|
||||
if (counter < 1)
|
||||
{
|
||||
|
||||
@@ -156,7 +156,11 @@ namespace v2rayN.Handler
|
||||
{
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Utils.Base64Encode(uri.UserInfo));
|
||||
}
|
||||
var result = await HttpClientHelper.GetInstance().GetAsync(client, url);
|
||||
|
||||
var cts = new CancellationTokenSource();
|
||||
cts.CancelAfter(1000 * 30);
|
||||
|
||||
var result = await HttpClientHelper.GetInstance().GetAsync(client, url, cts.Token);
|
||||
return result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
22
v2rayN/v2rayN/Mode/SsSIP008.cs
Normal file
22
v2rayN/v2rayN/Mode/SsSIP008.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace v2rayN.Mode
|
||||
{
|
||||
public class SsSIP008
|
||||
{
|
||||
public List<SsServer> servers { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SsServer
|
||||
{
|
||||
public string remarks { get; set; }
|
||||
public string server { get; set; }
|
||||
public string server_port { get; set; }
|
||||
public string method { get; set; }
|
||||
public string password { get; set; }
|
||||
public string plugin { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
||||
// 方法是按如下所示使用“*”:
|
||||
//[assembly: AssemblyVersion("1.0.*")]
|
||||
//[assembly: AssemblyVersion("1.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.21")]
|
||||
[assembly: AssemblyFileVersion("5.23")]
|
||||
|
||||
@@ -216,6 +216,7 @@
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user