mirror of
https://github.com/netchx/netch.git
synced 2026-05-11 23:45:06 +08:00
refactor: VMess.ParseUri
- break: version 1 support - break: mux config in uri
This commit is contained in:
@@ -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>
|
||||
/// 伪装域名(HTTP,WS)
|
||||
/// </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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user