refactor: VMess.ParseUri

- break: version 1 support
- break: mux config in uri
This commit is contained in:
ChsBuffer
2020-10-09 20:22:05 +08:00
parent 910f6818b0
commit 477509b12f
2 changed files with 25 additions and 58 deletions

View File

@@ -5,72 +5,59 @@
/// </summary>
public class VMessJObject
{
/// <summary>
/// Mux Class
/// </summary>
public class Mux
{
public object enabled;
}
/// <summary>
/// 链接版本
/// </summary>
public string v;
public string v = string.Empty;
/// <summary>
/// 备注
/// </summary>
public string ps;
public string ps = string.Empty;
/// <summary>
/// 地址
/// </summary>
public string add;
public string add = string.Empty;
/// <summary>
/// 端口
/// </summary>
public int port;
public string port = string.Empty;
/// <summary>
/// 用户 ID
/// </summary>
public string id;
public string id = string.Empty;
/// <summary>
/// 额外 ID
/// </summary>
public int aid = 0;
public string aid = string.Empty;
/// <summary>
/// 传输协议
/// </summary>
public string net;
public string net = string.Empty;
/// <summary>
/// 伪装类型
/// </summary>
public string type;
public string type = string.Empty;
/// <summary>
/// 伪装域名HTTPWS
/// </summary>
public string host;
public string host = string.Empty;
/// <summary>
/// 伪装路径
/// </summary>
public string path;
public string path = string.Empty;
/// <summary>
/// 是否使用 TLS
/// </summary>
public string tls;
/// <summary>
/// Mux 多路复用
/// </summary>
public Mux mux;
public string tls = string.Empty;
}
}

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using Netch.Controllers;
using Netch.Models;
@@ -63,26 +64,25 @@ namespace Netch.Servers.VMess
var data = new VMess();
text = text.Substring(8);
var vmess = JsonConvert.DeserializeObject<VMessJObject>(ShareLink.URLSafeBase64Decode(text));
VMessJObject vmess;
try
{
vmess = JsonConvert.DeserializeObject<VMessJObject>(ShareLink.URLSafeBase64Decode(text));
}
catch (Exception e)
{
Logging.Warning(e.ToString());
return null;
}
data.Remark = vmess.ps;
data.Hostname = vmess.add;
data.Port = vmess.port;
data.Port = ushort.Parse(vmess.port);
data.UserID = vmess.id;
data.AlterID = vmess.aid;
data.AlterID = int.Parse(vmess.aid);
data.TransferProtocol = vmess.net;
data.FakeType = vmess.type;
if (vmess.v == null || vmess.v == "1")
{
var info = vmess.host.Split(';');
if (info.Length == 2)
{
vmess.host = info[0];
vmess.path = info[1];
}
}
if (data.TransferProtocol == "quic")
{
if (VMessGlobal.QUIC.Contains(vmess.host))
@@ -98,28 +98,8 @@ namespace Netch.Servers.VMess
}
data.TLSSecure = vmess.tls == "tls";
if (vmess.mux == null)
{
data.UseMux = false;
}
else
{
if (vmess.mux.enabled is bool enabled)
{
data.UseMux = enabled;
}
else if (vmess.mux.enabled is string muxEnabled)
{
data.UseMux = muxEnabled == "true"; // 针对使用字符串当作布尔值的情况
}
else
{
data.UseMux = false;
}
}
data.EncryptMethod = "auto"; // V2Ray 加密方式不包括在链接中,主动添加一个
return CheckServer(data) ? new[] {data} : null;
}