1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2025-02-16 14:43:14 +03:00

fix xray config issue

This commit is contained in:
next-autumn 2021-03-05 10:34:39 +08:00
parent 8199b3d9d2
commit b6e77b88b4
5 changed files with 42 additions and 55 deletions

View File

@ -19,7 +19,6 @@ namespace ProxySU_Core.Models
VLESS_TCP_Path = "/vlesstcp"; VLESS_TCP_Path = "/vlesstcp";
VMESS_WS_Path = "/vmessws"; VMESS_WS_Path = "/vmessws";
VMESS_TCP_Path = "/vmesstcp"; VMESS_TCP_Path = "/vmesstcp";
Trojan_TCP_Path = "/trojan";
TrojanPassword = Guid.NewGuid().ToString(); TrojanPassword = Guid.NewGuid().ToString();
} }
@ -53,11 +52,6 @@ namespace ProxySU_Core.Models
/// </summary> /// </summary>
public string VMESS_TCP_Path { get; set; } public string VMESS_TCP_Path { get; set; }
/// <summary>
/// trojan tcp路径
/// </summary>
public string Trojan_TCP_Path { get; set; }
/// <summary> /// <summary>
/// trojan密码 /// trojan密码
/// </summary> /// </summary>
@ -94,7 +88,7 @@ namespace ProxySU_Core.Models
case XrayType.VMESS_WS_TLS: case XrayType.VMESS_WS_TLS:
return VMESS_WS_Path; return VMESS_WS_Path;
case XrayType.Trojan_TCP_TLS: case XrayType.Trojan_TCP_TLS:
return Trojan_TCP_Path; return string.Empty;
default: default:
return string.Empty; return string.Empty;
} }

View File

@ -26,4 +26,4 @@
} }
} }
} }
}, }

View File

@ -80,80 +80,86 @@ namespace ProxySU_Core.ViewModels.Developers
{ {
var xrayConfig = LoadXrayConfig(); var xrayConfig = LoadXrayConfig();
var baseBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VLESS_TCP_XTLS.json")); var baseBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VLESS_TCP_XTLS.json"));
baseBound["port"] = parameters.Port; baseBound.port = parameters.Port;
baseBound["settings"]["fallbacks"].Add(new baseBound.settings.fallbacks.Add(JToken.FromObject(new
{ {
dest = 80, dest = 80,
xver = 1, xver = 1,
}); }));
xrayConfig["inbounds"].Add(baseBound); xrayConfig.inbounds.Add(baseBound);
if (parameters.Types.Contains(XrayType.VLESS_TCP_XTLS)) if (parameters.Types.Contains(XrayType.VLESS_TCP_XTLS))
{ {
baseBound["settings"]["clients"][0]["id"] = parameters.UUID; baseBound.settings.clients[0].id = parameters.UUID;
} }
if (parameters.Types.Contains(XrayType.VLESS_WS_TLS)) if (parameters.Types.Contains(XrayType.VLESS_WS_TLS))
{ {
baseBound["settings"]["clients"][0]["id"] = parameters.UUID; baseBound.settings.clients[0].id = parameters.UUID;
var wsInbound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VLESS_WS_TLS.json")); var wsInbound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VLESS_WS_TLS.json"));
wsInbound["port"] = VLESS_WS_Port; wsInbound.port = VLESS_WS_Port;
wsInbound["settings"]["clients"][0]["id"] = parameters.UUID; wsInbound.settings.clients[0].id = parameters.UUID;
wsInbound["streamSettings"]["wsSettings"]["path"] = parameters.VLESS_WS_Path; wsInbound.streamSettings.wsSettings.path = parameters.VLESS_WS_Path;
baseBound["settings"]["fallbacks"].Add(new baseBound.settings.fallbacks.Add(JToken.FromObject(new
{ {
dest = VLESS_WS_Port, dest = VLESS_WS_Port,
path = parameters.VLESS_WS_Path, path = parameters.VLESS_WS_Path,
xver = 1, xver = 1,
}); }));
xrayConfig["inbounds"].Add(wsInbound); xrayConfig.inbounds.Add(JToken.FromObject(wsInbound));
} }
if (parameters.Types.Contains(XrayType.VMESS_TCP_TLS)) if (parameters.Types.Contains(XrayType.VMESS_TCP_TLS))
{ {
var mtcpBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VMESS_TCP_TLS.json")); var mtcpBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VMESS_TCP_TLS.json"));
mtcpBound["port"] = VMESS_TCP_Port; mtcpBound.port = VMESS_TCP_Port;
mtcpBound["settings"]["clients"][0]["id"] = parameters.UUID; mtcpBound.settings.clients[0].id = parameters.UUID;
mtcpBound["streamSettings"]["tcpSettings"]["header"]["request"]["path"] = parameters.VMESS_TCP_Path; mtcpBound.streamSettings.tcpSettings.header.request.path = parameters.VMESS_TCP_Path;
baseBound["settings"]["fallbacks"].Add(new baseBound.settings.fallbacks.Add(JToken.FromObject(new
{ {
dest = VMESS_TCP_Port, dest = VMESS_TCP_Port,
path = parameters.VMESS_TCP_Path, path = parameters.VMESS_TCP_Path,
xver = 1, xver = 1,
}); }));
xrayConfig["inbounds"].Add(mtcpBound); xrayConfig.inbounds.Add(JToken.FromObject(mtcpBound));
} }
if (parameters.Types.Contains(XrayType.VMESS_WS_TLS)) if (parameters.Types.Contains(XrayType.VMESS_WS_TLS))
{ {
var mwsBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VMESS_WS_TLS.json")); var mwsBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "VMESS_WS_TLS.json"));
mwsBound["port"] = VMESS_WS_Port; mwsBound.port = VMESS_WS_Port;
mwsBound["settings"]["clients"][0]["id"] = parameters.UUID; mwsBound.settings.clients[0].id = parameters.UUID;
mwsBound["streamSettings"]["wsSettings"]["path"] = parameters.VMESS_WS_Path; mwsBound.streamSettings.wsSettings.path = parameters.VMESS_WS_Path;
baseBound["settings"]["fallbacks"].Add(new baseBound.settings.fallbacks.Add(JToken.FromObject(new
{ {
dest = VMESS_WS_Port, dest = VMESS_WS_Port,
path = parameters.VMESS_WS_Path, path = parameters.VMESS_WS_Path,
xver = 1, xver = 1,
}); }));
xrayConfig["inbounds"].Add(mwsBound); xrayConfig.inbounds.Add(JToken.FromObject(mwsBound));
} }
if (parameters.Types.Contains(XrayType.Trojan_TCP_TLS)) if (parameters.Types.Contains(XrayType.Trojan_TCP_TLS))
{ {
var trojanTcpBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "Trojan_TCP_TLS.json")); var trojanTcpBound = LoadJsonObj(Path.Combine(ServerInboundsDir, "Trojan_TCP_TLS.json"));
trojanTcpBound["port"] = Trojan_TCP_Port; trojanTcpBound.port = Trojan_TCP_Port;
trojanTcpBound["settings"]["clients"][0]["password"] = parameters.TrojanPassword; trojanTcpBound.settings.clients[0].password = parameters.TrojanPassword;
baseBound["settings"]["fallbacks"][0] = new baseBound.settings.fallbacks[0] = JToken.FromObject(new
{ {
dest = Trojan_TCP_Port, dest = Trojan_TCP_Port,
xver = 1, xver = 1,
}; });
xrayConfig["inbounds"].Add(trojanTcpBound); xrayConfig.inbounds.Add(JToken.FromObject(trojanTcpBound));
} }
return JsonConvert.SerializeObject(xrayConfig, Formatting.Indented); return JsonConvert.SerializeObject(
xrayConfig,
Formatting.Indented,
new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
});
} }
private static dynamic LoadJsonObj(string path) private static dynamic LoadJsonObj(string path)
@ -161,7 +167,7 @@ namespace ProxySU_Core.ViewModels.Developers
if (File.Exists(path)) if (File.Exists(path))
{ {
var jsonStr = File.ReadAllText(path, Encoding.UTF8); var jsonStr = File.ReadAllText(path, Encoding.UTF8);
return JsonConvert.DeserializeObject(jsonStr); return JToken.FromObject(JsonConvert.DeserializeObject(jsonStr));
} }
return null; return null;
} }

View File

@ -60,12 +60,6 @@ namespace ProxySU_Core.ViewModels
set => settings.VMESS_WS_Path = value; set => settings.VMESS_WS_Path = value;
} }
public string Trojan_TCP_Path
{
get => settings.Trojan_TCP_Path;
set => settings.Trojan_TCP_Path = value;
}
public string TrojanPassword public string TrojanPassword
{ {
get => settings.TrojanPassword; get => settings.TrojanPassword;
@ -193,7 +187,7 @@ namespace ProxySU_Core.ViewModels
settings.Types.Remove(XrayType.Trojan_TCP_TLS); settings.Types.Remove(XrayType.Trojan_TCP_TLS);
} }
Notify("Checked_Trojan_TCP"); Notify("Checked_Trojan_TCP");
Notify("Trojan_TCP_Path_Visibility"); Notify("Trojan_TCP_Pwd_Visibility");
} }
} }
@ -225,7 +219,7 @@ namespace ProxySU_Core.ViewModels
return Checked_VMESS_WS ? Visibility.Visible : Visibility.Hidden; return Checked_VMESS_WS ? Visibility.Visible : Visibility.Hidden;
} }
} }
public Visibility Trojan_TCP_Path_Visibility public Visibility Trojan_TCP_Pwd_Visibility
{ {
get get
{ {

View File

@ -297,19 +297,12 @@
Width="200" /> Width="200" />
</StackPanel> </StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal" Visibility="{Binding Settings.Trojan_TCP_Path_Visibility}"> <StackPanel Margin="0,10,0,0" Orientation="Horizontal" Visibility="{Binding Settings.Trojan_TCP_Pwd_Visibility}">
<Label Content="Trojan密码" Width="120" VerticalAlignment="Center" /> <Label Content="Trojan密码" Width="120" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.TrojanPassword}" <TextBox Text="{Binding Path=Settings.TrojanPassword}"
IsEnabled="{Binding Checked_Trojan_TCP}" IsEnabled="{Binding Checked_Trojan_TCP}"
Width="200" /> Width="200" />
</StackPanel> </StackPanel>
<StackPanel Margin="0,10,0,0" Orientation="Horizontal" Visibility="{Binding Settings.Trojan_TCP_Path_Visibility}">
<Label Content="Trojan Path" Width="120" VerticalAlignment="Center" />
<TextBox Text="{Binding Path=Settings.TrojanPath}"
IsEnabled="{Binding Checked_Trojan_TCP}"
Width="200" />
</StackPanel>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</GroupBox> </GroupBox>