mirror of
https://github.com/2dust/v2rayN.git
synced 2025-11-29 03:02:53 +00:00
Fix sing-box ws
This commit is contained in:
parent
6b87c09a96
commit
4b79799175
2 changed files with 26 additions and 1 deletions
|
|
@ -216,6 +216,8 @@ public class Transport4Sbox
|
|||
public string? idle_timeout { get; set; }
|
||||
public string? ping_timeout { get; set; }
|
||||
public bool? permit_without_stream { get; set; }
|
||||
public int? max_early_data { get; set; }
|
||||
public string? early_data_header_name { get; set; }
|
||||
}
|
||||
|
||||
public class Headers4Sbox
|
||||
|
|
|
|||
|
|
@ -364,7 +364,30 @@ public partial class CoreConfigSingboxService
|
|||
|
||||
case nameof(ETransport.ws):
|
||||
transport.type = nameof(ETransport.ws);
|
||||
transport.path = node.Path.IsNullOrEmpty() ? null : node.Path;
|
||||
var wsPath = node.Path;
|
||||
|
||||
// Parse ed parameter from path using regex
|
||||
if (!wsPath.IsNullOrEmpty())
|
||||
{
|
||||
var regex = new Regex(@"[?&]ed=(\d+)");
|
||||
var match = regex.Match(wsPath);
|
||||
if (match.Success && int.TryParse(match.Groups[1].Value, out var edValue))
|
||||
{
|
||||
transport.max_early_data = edValue;
|
||||
transport.early_data_header_name = "Sec-WebSocket-Protocol";
|
||||
// Remove ed parameter from path
|
||||
wsPath = regex.Replace(wsPath, "");
|
||||
// Clean up any leftover & at the beginning of query string
|
||||
wsPath = wsPath.Replace("?&", "?");
|
||||
// Remove trailing ? if no parameters left
|
||||
if (wsPath.EndsWith("?"))
|
||||
{
|
||||
wsPath = wsPath.TrimEnd('?');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
transport.path = wsPath.IsNullOrEmpty() ? null : wsPath;
|
||||
if (node.RequestHost.IsNotEmpty())
|
||||
{
|
||||
transport.headers = new()
|
||||
|
|
|
|||
Loading…
Reference in a new issue