Skip to content

Commit b8a0293

Browse files
committed
Add xhttp extra for xray
XTLS/Xray-core#4000
1 parent 59b7daa commit b8a0293

15 files changed

Lines changed: 151 additions & 56 deletions

v2rayN/ServiceLib/Handler/ConfigHandler.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ public static async Task<int> AddServer(Config config, ProfileItem profileItem)
240240
item.PublicKey = profileItem.PublicKey;
241241
item.ShortId = profileItem.ShortId;
242242
item.SpiderX = profileItem.SpiderX;
243+
item.Extra = profileItem.Extra;
243244
}
244245

245246
var ret = item.ConfigType switch

v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ protected static int GetStdTransport(ProfileItem item, string? securityDef, ref
107107
{
108108
dicQuery.Add("mode", Utils.UrlEncode(item.HeaderType));
109109
}
110+
if (Utils.IsNotEmpty(item.Extra))
111+
{
112+
dicQuery.Add("extra", Utils.UrlEncode(item.Extra));
113+
}
110114
break;
111115

112116
case nameof(ETransport.http):
@@ -180,6 +184,7 @@ protected static int ResolveStdTransport(NameValueCollection query, ref ProfileI
180184
item.RequestHost = Utils.UrlDecode(query["host"] ?? "");
181185
item.Path = Utils.UrlDecode(query["path"] ?? "/");
182186
item.HeaderType = Utils.UrlDecode(query["mode"] ?? "");
187+
item.Extra = Utils.UrlDecode(query["extra"] ?? "");
183188
break;
184189

185190
case nameof(ETransport.http):

v2rayN/ServiceLib/Models/ProfileItem.cs

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,44 +30,25 @@ public ProfileItem()
3030

3131
public string GetSummary()
3232
{
33-
string summary = string.Format("[{0}] ", (ConfigType).ToString());
34-
string[] arrAddr = Address.Split('.');
35-
string addr;
36-
if (arrAddr.Length > 2)
33+
var summary = $"[{(ConfigType).ToString()}] ";
34+
var arrAddr = Address.Split('.');
35+
var addr = arrAddr.Length switch
3736
{
38-
addr = $"{arrAddr.First()}***{arrAddr.Last()}";
39-
}
40-
else if (arrAddr.Length > 1)
41-
{
42-
addr = $"***{arrAddr.Last()}";
43-
}
44-
else
37+
> 2 => $"{arrAddr.First()}***{arrAddr.Last()}",
38+
> 1 => $"***{arrAddr.Last()}",
39+
_ => Address
40+
};
41+
summary += ConfigType switch
4542
{
46-
addr = Address;
47-
}
48-
switch (ConfigType)
49-
{
50-
case EConfigType.Custom:
51-
summary += string.Format("[{1}]{0}", Remarks, CoreType.ToString());
52-
break;
53-
54-
default:
55-
summary += string.Format("{0}({1}:{2})", Remarks, addr, Port);
56-
break;
57-
}
43+
EConfigType.Custom => $"[{CoreType.ToString()}]{Remarks}",
44+
_ => $"{Remarks}({addr}:{Port})"
45+
};
5846
return summary;
5947
}
6048

6149
public List<string>? GetAlpn()
6250
{
63-
if (Utils.IsNullOrEmpty(Alpn))
64-
{
65-
return null;
66-
}
67-
else
68-
{
69-
return Utils.String2List(Alpn);
70-
}
51+
return Utils.IsNullOrEmpty(Alpn) ? null : Utils.String2List(Alpn);
7152
}
7253

7354
public string GetNetwork()
@@ -110,5 +91,6 @@ public string GetNetwork()
11091
public string PublicKey { get; set; }
11192
public string ShortId { get; set; }
11293
public string SpiderX { get; set; }
94+
public string Extra { get; set; }
11395
}
11496
}

v2rayN/ServiceLib/Models/V2rayConfig.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ public class XhttpSettings4Ray
353353
public string? scMaxConcurrentPosts { get; set; }
354354
public string? scMinPostsIntervalMs { get; set; }
355355
public Xmux4Ray? xmux { get; set; }
356+
public object? extra { get; set; }
356357
}
357358

358359
public class Xmux4Ray

v2rayN/ServiceLib/Resx/ResUI.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,4 +1384,7 @@
13841384
<data name="TransportHeaderTypeTip5" xml:space="preserve">
13851385
<value>*xhttp mode</value>
13861386
</data>
1387+
<data name="TransportExtraTip" xml:space="preserve">
1388+
<value>XHTTP Extra raw JSON, format: { XHTTPObject }</value>
1389+
</data>
13871390
</root>

v2rayN/ServiceLib/Resx/ResUI.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,4 +1384,7 @@
13841384
<data name="TransportHeaderTypeTip5" xml:space="preserve">
13851385
<value>*xhttp mode</value>
13861386
</data>
1387+
<data name="TransportExtraTip" xml:space="preserve">
1388+
<value>XHTTP Extra raw JSON, format: { XHTTPObject }</value>
1389+
</data>
13871390
</root>

v2rayN/ServiceLib/Resx/ResUI.ru.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,4 +1384,7 @@
13841384
<data name="TransportHeaderTypeTip5" xml:space="preserve">
13851385
<value>*xhttp mode</value>
13861386
</data>
1387+
<data name="TransportExtraTip" xml:space="preserve">
1388+
<value>XHTTP Extra raw JSON, format: { XHTTPObject }</value>
1389+
</data>
13871390
</root>

v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,4 +1381,7 @@
13811381
<data name="TransportHeaderTypeTip5" xml:space="preserve">
13821382
<value>*xhttp 模式</value>
13831383
</data>
1384+
<data name="TransportExtraTip" xml:space="preserve">
1385+
<value>XHTTP Extra 原始 JSON,格式: { XHTTPObject }</value>
1386+
</data>
13841387
</root>

v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,4 +1381,7 @@
13811381
<data name="TransportHeaderTypeTip5" xml:space="preserve">
13821382
<value>*xhttp 模式</value>
13831383
</data>
1384+
<data name="TransportExtraTip" xml:space="preserve">
1385+
<value>XHTTP Extra 原始 JSON,格式: { XHTTPObject }</value>
1386+
</data>
13841387
</root>

0 commit comments

Comments
 (0)