public string GetPath(XrayType type) { switch (type) { case XrayType.VLESS_WS: return(VLESS_WS_Path); case XrayType.VLESS_H2: return(VLESS_H2_Path); case XrayType.VMESS_TCP: return(VMESS_TCP_Path); case XrayType.VMESS_WS: return(VMESS_WS_Path); case XrayType.Trojan_WS: return(Trojan_WS_Path); // no path case XrayType.VLESS_TCP_XTLS: case XrayType.VLESS_TCP: case XrayType.VLESS_KCP: case XrayType.VMESS_KCP: case XrayType.Trojan_TCP: return(string.Empty); default: return(string.Empty); } }
public string GetPath(XrayType type) { switch (type) { case XrayType.VLESS_TCP_TLS: return(VLESS_TCP_Path); case XrayType.VLESS_TCP_XTLS: return(VLESS_TCP_Path); case XrayType.VLESS_WS_TLS: return(VLESS_WS_Path); case XrayType.VMESS_TCP_TLS: return(VMESS_TCP_Path); case XrayType.VMESS_WS_TLS: return(VMESS_WS_Path); case XrayType.Trojan_TCP_TLS: return(string.Empty); default: return(string.Empty); } }
private static string BuildVmessShareLink(XrayType xrayType, XraySettings settings) { var vmess = new Vmess { v = "2", add = settings.Domain, port = settings.Port.ToString(), id = settings.UUID, aid = "0", net = "", type = "none", host = settings.Domain, path = "", tls = "tls", ps = "", }; switch (xrayType) { case XrayType.VMESS_TCP: vmess.ps = "vmess-tcp-tls"; vmess.net = "tcp"; vmess.type = "http"; vmess.path = settings.VMESS_TCP_Path; break; case XrayType.VMESS_WS: vmess.ps = "vmess-ws-tls"; vmess.net = "ws"; vmess.type = "none"; vmess.path = settings.VMESS_WS_Path; break; case XrayType.VMESS_KCP: vmess.ps = "vmess-mKCP"; vmess.port = ConfigBuilder.VMESS_mKCP_Port.ToString(); vmess.net = "kcp"; vmess.type = settings.VMESS_KCP_Type; vmess.path = settings.VMESS_KCP_Seed; vmess.tls = ""; break; default: return(string.Empty); } var base64Url = Base64.Encode(JsonConvert.SerializeObject(vmess)); return($"vmess://" + base64Url); }
public static string Build(XrayType xrayType, XraySettings settings) { switch (xrayType) { case XrayType.VLESS_TCP_TLS: case XrayType.VLESS_TCP_XTLS: case XrayType.VLESS_WS_TLS: case XrayType.Trojan_TCP_TLS: return(BuildVlessShareLink(xrayType, settings)); case XrayType.VMESS_TCP_TLS: case XrayType.VMESS_WS_TLS: return(BuildVmessShareLink(xrayType, settings)); default: return(string.Empty); } }
public static string Build(XrayType xrayType, XraySettings settings) { switch (xrayType) { case XrayType.VLESS_TCP: case XrayType.VLESS_TCP_XTLS: case XrayType.VLESS_WS: case XrayType.VLESS_KCP: case XrayType.VLESS_gRPC: case XrayType.Trojan_TCP: return(BuildVlessShareLink(xrayType, settings)); case XrayType.VMESS_TCP: case XrayType.VMESS_WS: case XrayType.VMESS_KCP: return(BuildVmessShareLink(xrayType, settings)); case XrayType.ShadowsocksAEAD: return(BuildShadowSocksShareLink(settings)); default: return(string.Empty); } }
private static string BuildVlessShareLink(XrayType xrayType, XraySettings settings) { var _protocol = string.Empty; var _uuid = settings.UUID; var _domain = settings.Domain; var _port = settings.Port; var _type = string.Empty; var _encryption = string.Empty; var _security = "tls"; var _path = "/"; var _host = settings.Domain; var _descriptiveText = string.Empty; switch (xrayType) { case XrayType.VLESS_TCP: _protocol = "vless"; _type = "tcp"; _encryption = "none"; _descriptiveText = "vless-tcp-tls"; break; case XrayType.VLESS_TCP_XTLS: _protocol = "vless"; _type = "tcp"; _security = "xtls"; _encryption = "none"; _descriptiveText = "vless-tcp-xtls"; break; case XrayType.VLESS_WS: _protocol = "vless"; _type = "ws"; _path = settings.VLESS_WS_Path; _encryption = "none"; _descriptiveText = "vless-ws-tls"; break; case XrayType.VMESS_TCP: _protocol = "vmess"; _type = "tcp"; _path = settings.VMESS_TCP_Path; _encryption = "auto"; _descriptiveText = "vmess-tcp-tls"; break; case XrayType.VMESS_WS: _protocol = "vmess"; _type = "ws"; _path = settings.VMESS_WS_Path; _encryption = "auto"; _descriptiveText = "vmess-ws-tls"; break; case XrayType.Trojan_TCP: _protocol = "trojan"; _uuid = settings.TrojanPassword; _descriptiveText = "trojan-tcp"; break; default: throw new Exception("暂未实现的协议"); } string parametersURL = string.Empty; if (xrayType != XrayType.Trojan_TCP) { // 4.3 传输层相关段 parametersURL = $"?type={_type}&encryption={_encryption}&security={_security}&host={_host}&path={HttpUtility.UrlEncode(_path)}"; // if mKCP // if QUIC // 4.4 TLS 相关段 if (xrayType == XrayType.VLESS_TCP_XTLS) { parametersURL += "&flow=xtls-rprx-direct"; } } return($"{_protocol}://{HttpUtility.UrlEncode(_uuid)}@{_domain}:{_port}{parametersURL}#{HttpUtility.UrlEncode(_descriptiveText)}"); }
private void BuildQrCode(XrayType type) { string shareLink = string.Empty; switch (type) { case XrayType.VLESS_TCP_XTLS: shareLink = Settings.VLESS_TCP_XTLS_ShareLink; break; case XrayType.VLESS_TCP: shareLink = Settings.VLESS_TCP_ShareLink; break; case XrayType.VLESS_WS: shareLink = Settings.VLESS_WS_ShareLink; break; case XrayType.VLESS_H2: break; case XrayType.VLESS_KCP: shareLink = Settings.VLESS_KCP_ShareLink; break; case XrayType.VLESS_gRPC: shareLink = Settings.VLESS_gRPC_ShareLink; break; case XrayType.VMESS_TCP: shareLink = Settings.VMESS_TCP_ShareLink; break; case XrayType.VMESS_WS: shareLink = Settings.VMESS_WS_ShareLink; break; case XrayType.VMESS_H2: break; case XrayType.VMESS_KCP: shareLink = Settings.VMESS_KCP_ShareLink; break; case XrayType.Trojan_TCP: shareLink = Settings.Trojan_TCP_ShareLink; break; case XrayType.Trojan_WS: break; case XrayType.ShadowsocksAEAD: shareLink = Settings.ShadowSocksShareLink; break; default: break; } QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(shareLink, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); MemoryStream ms = new MemoryStream(); qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes = ms.GetBuffer(); ms.Close(); BitmapImage image = new BitmapImage(); image.BeginInit(); image.StreamSource = new MemoryStream(bytes); image.EndInit(); QrImage.Source = image; QrImage.Tag = type.ToString(); }