1
0
mirror of https://github.com/proxysu/ProxySU.git synced 2024-12-01 01:26:06 +03:00

Compare commits

..

2 Commits

Author SHA1 Message Date
autumn
db6a399ca9 add uTLS settings. 2022-11-21 16:42:47 +08:00
autumn
1110f8291e update xray editor ui 2022-11-21 15:24:48 +08:00
7 changed files with 354 additions and 326 deletions

View File

@ -9,6 +9,10 @@ namespace ProxySuper.Core.Models.Projects
{ {
public class XraySettings : V2raySettings public class XraySettings : V2raySettings
{ {
public static List<string> UTLSList = new List<string> { "", "chrome", "firefox", "safari", "randomized" };
public string UTLS { get; set; } = UTLSList[1];
/// <summary> /// <summary>
/// vless xtls shareLink /// vless xtls shareLink
/// </summary> /// </summary>

View File

@ -87,6 +87,19 @@ namespace ProxySuper.Core.ViewModels
} }
} }
public List<string> UTLSList { get => XraySettings.UTLSList; }
public string UTLS
{
get => Settings.UTLS;
set
{
Settings.UTLS = value;
RaisePropertyChanged(nameof(UTLS));
}
}
public int VLESS_KCP_Port public int VLESS_KCP_Port
{ {
get => Settings.VLESS_KCP_Port; get => Settings.VLESS_KCP_Port;

View File

@ -11,331 +11,332 @@
<convert:VisibleConverter x:Key="VisibleConverter" /> <convert:VisibleConverter x:Key="VisibleConverter" />
</UserControl.Resources> </UserControl.Resources>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Vertical" Margin="10,0,20,20">
<StackPanel Width="220"> <!--节点类型-->
<!--XTLS--> <GroupBox Padding="10" Header="{DynamicResource EditorProxyType}">
<CheckBox Margin="0,10,0,0" <StackPanel Orientation="Horizontal">
<WrapPanel Orientation="Vertical">
<!--XTLS-->
<CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VLESS_TCP_XTLS}"> IsChecked="{Binding Path=Checked_VLESS_TCP_XTLS}">
<Label Content="{DynamicResource VlessXtlsDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessXtlsDesc}" FontSize="12" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
<!--TCP--> <!--TCP-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VLESS_TCP}"> IsChecked="{Binding Path=Checked_VLESS_TCP}">
<Label Content="{DynamicResource VlessTcpDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessTcpDesc}" FontSize="12" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
<!--WebSocket--> <!--WebSocket-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VLESS_WS}"> IsChecked="{Binding Path=Checked_VLESS_WS}">
<Label Content="{DynamicResource VlessWsDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessWsDesc}" FontSize="12" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
<!--mKCP--> <!--mKCP-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
Foreground="LimeGreen" Foreground="LimeGreen"
IsChecked="{Binding Path=Checked_VLESS_KCP}"> IsChecked="{Binding Path=Checked_VLESS_KCP}">
<Label Content="{DynamicResource VlessKcpDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessKcpDesc}" FontSize="12" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
<!--gRPC--> <!--gRPC-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
Foreground="LimeGreen" Foreground="LimeGreen"
IsChecked="{Binding Path=Checked_VLESS_gRPC}"> IsChecked="{Binding Path=Checked_VLESS_gRPC}">
<Label Content="{DynamicResource VlessRpcDesc}" FontSize="13" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessRpcDesc}" FontSize="12" Foreground="LimeGreen" />
</CheckBox> </CheckBox>
</WrapPanel>
<!--TCP--> <WrapPanel Orientation="Vertical">
<!--<CheckBox Content="VMESS over TCP with TLS&#x0a;不推荐" <!--WebSocket-->
Margin="0,15,0,0" <CheckBox Width="150"
FontSize="13"
Style="{StaticResource MahApps.Styles.CheckBox}"
IsChecked="{Binding Path=Checked_VMESS_TCP}" />-->
<!--WebSocket-->
<CheckBox Margin="0,15,0,0"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VMESS_WS}"> IsChecked="{Binding Path=Checked_VMESS_WS}">
<Label Content="{DynamicResource VmessWsDesc}" FontSize="13" Foreground="Blue" /> <Label Content="{DynamicResource VmessWsDesc}" FontSize="12" Foreground="Blue" />
</CheckBox> </CheckBox>
<!--mKCP--> <!--mKCP-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_VMESS_KCP}"> IsChecked="{Binding Path=Checked_VMESS_KCP}">
<Label Foreground="Blue" FontSize="13" Content="{DynamicResource VmessKcpDesc}" /> <Label Foreground="Blue" FontSize="12" Content="{DynamicResource VmessKcpDesc}" />
</CheckBox> </CheckBox>
</WrapPanel>
<!--ss--> <WrapPanel Orientation="Vertical">
<CheckBox Margin="0,15,0,0" <!--ss-->
<CheckBox Width="150"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=CheckedShadowSocks}"> IsChecked="{Binding Path=CheckedShadowSocks}">
<Label Content="{DynamicResource SSDesc}" FontSize="13" Foreground="Fuchsia" /> <Label Content="{DynamicResource SSDesc}" FontSize="12" Foreground="Fuchsia" />
</CheckBox> </CheckBox>
<!--Trojan--> <!--Trojan-->
<CheckBox Margin="0,15,0,0" <CheckBox Width="150"
Foreground="CadetBlue" Foreground="CadetBlue"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
IsChecked="{Binding Path=Checked_Trojan_TCP}"> IsChecked="{Binding Path=Checked_Trojan_TCP}">
<Label Content="{DynamicResource TrojanDesc}" FontSize="13" Foreground="CadetBlue" /> <Label Content="{DynamicResource TrojanDesc}" FontSize="12" Foreground="CadetBlue" />
</CheckBox> </CheckBox>
</StackPanel> </WrapPanel>
</StackPanel>
</GroupBox>
<!--************************** 参数 **************************--> <!--参数设置-->
<GroupBox Padding="10" Margin="0,10,0,0" Header="{DynamicResource EditorProxyParams}">
<StackPanel> <StackPanel>
<!--Domain-->
<!--Domain--> <StackPanel Margin="0,15,0,0"
<StackPanel Margin="30,15,0,0"
Orientation="Horizontal"> Orientation="Horizontal">
<Label Content="{DynamicResource XrayDomain}" Width="120" /> <Label Content="{DynamicResource XrayDomain}" Width="120" />
<TextBox Text="{Binding Path=Domain}" Width="200" /> <TextBox Text="{Binding Path=Domain}" Width="260" />
</StackPanel> </StackPanel>
<!--UUID-->
<StackPanel Margin="30,10,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayUUID}" Width="120" />
<TextBox Text="{Binding Path=UUID}" <!--UUID-->
Width="200" /> <StackPanel Margin="0,10,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayUUID}" Width="120" />
<Button Margin="5,0,0,0" <TextBox Text="{Binding Path=UUID}"
Padding="12,3" Width="260" />
Command="{Binding Path=RandomUuid}"
Content="{DynamicResource Random}" />
</StackPanel>
<!--xray prot--> <Button Margin="5,0,0,0"
<StackPanel Margin="30,15,0,0" Orientation="Horizontal"> Padding="12,3"
<Label Content="{DynamicResource XrayPort}" Foreground="Gray" Width="120" /> Command="{Binding Path=RandomUuid}"
<TextBox Text="{Binding Path=Port}" Width="120" /> Content="{DynamicResource Random}" />
<Label Content="{DynamicResource XrayPortDefault}" Foreground="Red" /> </StackPanel>
</StackPanel>
<Expander ExpandDirection="Down" Margin="30,10,0,0"> <!--xray prot-->
<Expander.Header> <StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<TextBlock Text="更多参数" FontWeight="Bold" /> <Label Content="{DynamicResource XrayPort}" Width="120" />
</Expander.Header> <TextBox Text="{Binding Path=Port}" Width="120" />
<Expander.Content> <Label Content="{DynamicResource XrayPortDefault}" Foreground="Red" />
<StackPanel> </StackPanel>
<StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayWithTLS}" Width="120" /> <!--xray utls-->
<CheckBox IsChecked="{Binding Path=WithTLS}" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal">
<Label Content="uTLS" Width="120" VerticalAlignment="Bottom"/>
<ComboBox Width="260"
VerticalAlignment="Bottom"
ItemsSource="{Binding Path=UTLSList}"
SelectedValue="{Binding UTLS,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--more params-->
<Expander ExpandDirection="Down" Margin="0,10,0,0">
<Expander.Header>
<TextBlock Text="更多参数" FontWeight="Bold" />
</Expander.Header>
<Expander.Content>
<StackPanel>
<StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayWithTLS}" Width="120" />
<CheckBox IsChecked="{Binding Path=WithTLS}"
Content="{DynamicResource XrayWithTLSDesc}" Content="{DynamicResource XrayWithTLSDesc}"
VerticalContentAlignment="Center" VerticalContentAlignment="Center"
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</StackPanel> </StackPanel>
<!--Mask Domain--> <!--Mask Domain-->
<StackPanel Margin="0,15,0,0" Orientation="Horizontal"> <StackPanel Margin="0,15,0,0" Orientation="Horizontal">
<Label Content="{DynamicResource XrayMarkDomain}" Width="120" /> <Label Content="{DynamicResource XrayMarkDomain}" Width="120" />
<TextBox Text="{Binding Path=MaskDomain}" Width="200" /> <TextBox Text="{Binding Path=MaskDomain}" Width="260" />
</StackPanel> </StackPanel>
<!--WebSocket Path--> <!--WebSocket Path-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VLESS_WS, Binding Path=Checked_VLESS_WS,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VlessWsPath}" Foreground="LimeGreen" Width="120" /> <Label Content="{DynamicResource VlessWsPath}" Foreground="LimeGreen" Width="120" />
<TextBox Text="{Binding Path=VLESS_WS_Path}" Width="200" /> <TextBox Text="{Binding Path=VLESS_WS_Path}" Width="260" />
</StackPanel> </StackPanel>
<!--seed--> <!--seed-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VLESS_KCP, Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VlessKcpSeed}" Foreground="LimeGreen" Width="120" /> <Label Content="{DynamicResource VlessKcpSeed}" Foreground="LimeGreen" Width="120" />
<TextBox Text="{Binding Path=VLESS_KCP_Seed}" Width="200" /> <TextBox Text="{Binding Path=VLESS_KCP_Seed}" Width="260" />
</StackPanel> </StackPanel>
<!--kcp type--> <!--kcp type-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Visibility="{ Visibility="{
Binding Path=Checked_VLESS_KCP, Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}" Orientation="Horizontal"> }"
Orientation="Horizontal">
<Label Content="{DynamicResource VlessKcpType}" Foreground="LimeGreen" Width="120" /> <Label Content="{DynamicResource VlessKcpType}" Foreground="LimeGreen" Width="120" />
<ComboBox Width="200" <ComboBox Width="260"
ItemsSource="{Binding Path=KcpTypes}" ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VLESS_KCP_Type,Mode=TwoWay}"> SelectedValue="{Binding VLESS_KCP_Type,Mode=TwoWay}">
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
<!--kcp port--> <!--kcp port-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Visibility="{ Visibility="{
Binding Path=Checked_VLESS_KCP, Binding Path=Checked_VLESS_KCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}" }"
Orientation="Horizontal"> Orientation="Horizontal">
<Label Content="{DynamicResource VlessKcpPort}" Width="120" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessKcpPort}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_KCP_Port}" Width="200" /> <TextBox Text="{Binding Path=VLESS_KCP_Port}" Width="260" />
</StackPanel> </StackPanel>
<!--gRPC Port--> <!--gRPC Port-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VLESS_gRPC, Binding Path=Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VlessRPCPort}" Width="120" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessRPCPort}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_gRPC_Port}" Width="200" /> <TextBox Text="{Binding Path=VLESS_gRPC_Port}" Width="260" />
</StackPanel> </StackPanel>
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VLESS_gRPC, Binding Path=Checked_VLESS_gRPC,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VlessRPCName}" Width="120" Foreground="LimeGreen" /> <Label Content="{DynamicResource VlessRPCName}" Width="120" Foreground="LimeGreen" />
<TextBox Text="{Binding Path=VLESS_gRPC_ServiceName}" Width="200" /> <TextBox Text="{Binding Path=VLESS_gRPC_ServiceName}" Width="260" />
</StackPanel> </StackPanel>
<!--Tcp Path <!--WebSocket Path-->
<StackPanel Margin="30,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VMESS_TCP, Binding Path=Checked_VMESS_WS,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="VMESS WS路径" Foreground="Blue" Width="120" /> <Label Content="{DynamicResource VmessWsPath}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_TCP_Path}" <TextBox Text="{Binding Path=VMESS_WS_Path}"
VerticalAlignment="Bottom" VerticalAlignment="Bottom"
Width="200" /> Width="260" />
</StackPanel>--> </StackPanel>
<!--WebSocket Path--> <!--seed-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VMESS_WS, Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VmessWsPath}" Foreground="Blue" Width="120" /> <Label Content="{DynamicResource VmessKcpSeed}" Foreground="Blue" Width="120" />
<TextBox Text="{Binding Path=VMESS_WS_Path}" <TextBox Text="{Binding Path=VMESS_KCP_Seed}" Width="260" />
VerticalAlignment="Bottom" </StackPanel>
Width="200" />
</StackPanel>
<!--seed--> <!--kcp type-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VMESS_KCP, Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VmessKcpSeed}" Foreground="Blue" Width="120" /> <Label Content="{DynamicResource VmessKcpType}" Foreground="Blue" Width="120" VerticalAlignment="Bottom"/>
<TextBox Text="{Binding Path=VMESS_KCP_Seed}" Width="200" /> <ComboBox Width="260"
</StackPanel> VerticalAlignment="Bottom"
ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp type--> <!--kcp port-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VMESS_KCP, Binding Path=Checked_VMESS_KCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VmessKcpType}" Foreground="Blue" Width="120" VerticalAlignment="Bottom"/> <Label Content="{DynamicResource VmessKcpPort}" Foreground="Blue" Width="120" />
<ComboBox Width="200" <TextBox Text="{Binding Path=VMESS_KCP_Port}" Width="260" />
VerticalAlignment="Bottom" </StackPanel>
ItemsSource="{Binding Path=KcpTypes}"
SelectedValue="{Binding VMESS_KCP_Type,Mode=TwoWay}">
</ComboBox>
</StackPanel>
<!--kcp port--> <!--ss密码-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_VMESS_KCP, Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource VmessKcpPort}" Foreground="Blue" Width="120" /> <Label Content="{DynamicResource SSPassword}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=VMESS_KCP_Port}" Width="200" /> <TextBox Text="{Binding Path=ShadowSocksPassword}" Width="260"/>
</StackPanel> </StackPanel>
<!--ss密码--> <!--ss加密方式-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=CheckedShadowSocks, Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource SSPassword}" Foreground="Fuchsia" Width="120" /> <Label Content="{DynamicResource SSMethods}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=ShadowSocksPassword}" <ComboBox Width="260"
Width="200"/>
</StackPanel>
<!--ss加密方式-->
<StackPanel Margin="0,15,0,0"
Orientation="Horizontal"
Visibility="{
Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter}
}">
<Label Content="{DynamicResource SSMethods}" Foreground="Fuchsia" Width="120" />
<ComboBox Width="200"
ItemsSource="{Binding ShadowSocksMethods}" ItemsSource="{Binding ShadowSocksMethods}"
SelectedValue="{Binding ShadowSocksMethod}"> SelectedValue="{Binding ShadowSocksMethod}">
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
<!--ss端口--> <!--ss端口-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=CheckedShadowSocks, Binding Path=CheckedShadowSocks,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource SSPort}" Foreground="Fuchsia" Width="120" /> <Label Content="{DynamicResource SSPort}" Foreground="Fuchsia" Width="120" />
<TextBox Text="{Binding Path=ShadowSocksPort}" Width="200"/> <TextBox Text="{Binding Path=ShadowSocksPort}" Width="260"/>
</StackPanel> </StackPanel>
<!--Trojan密码--> <!--Trojan密码-->
<StackPanel Margin="0,15,0,0" <StackPanel Margin="0,15,0,0"
Orientation="Horizontal" Orientation="Horizontal"
Visibility="{ Visibility="{
Binding Path=Checked_Trojan_TCP, Binding Path=Checked_Trojan_TCP,
Converter={StaticResource VisibleConverter} Converter={StaticResource VisibleConverter}
}"> }">
<Label Content="{DynamicResource TrojanPassword}" Foreground="CadetBlue" Width="120" /> <Label Content="{DynamicResource TrojanPassword}" Foreground="CadetBlue" Width="120" />
<TextBox Text="{Binding Path=TrojanPassword}" Width="200" /> <TextBox Text="{Binding Path=TrojanPassword}" Width="260" />
</StackPanel> </StackPanel>
<!--多用户--> <!--多用户-->
<StackPanel Margin="0,10,0,0" Orientation="Vertical"> <StackPanel Margin="0,10,0,0" Orientation="Vertical">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Label Content="{DynamicResource MultiUser}" Width="120" /> <Label Content="{DynamicResource MultiUser}" Width="120" />
<TextBox Text="{Binding Path=MultiUUID}" <TextBox Text="{Binding Path=MultiUUID}"
Height="60" Height="60"
TextWrapping="Wrap" TextWrapping="Wrap"
Width="200" /> Width="260" />
</StackPanel>
<StackPanel>
<TextBlock Margin="120,3,0,0" Text="{DynamicResource MultiUserHelp}" />
</StackPanel> </StackPanel>
<StackPanel>
<TextBlock Margin="120,3,0,0" Text="{DynamicResource MultiUserHelp}" />
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</StackPanel> </Expander.Content>
</Expander.Content> </Expander>
</Expander> </StackPanel>
</StackPanel> </GroupBox>
</StackPanel> </StackPanel>
</UserControl> </UserControl>

View File

@ -64,18 +64,21 @@
<sys:String x:Key="ProxyTypeNone">None</sys:String> <sys:String x:Key="ProxyTypeNone">None</sys:String>
<sys:String x:Key="ProxyTypeHttp">Http</sys:String> <sys:String x:Key="ProxyTypeHttp">Http</sys:String>
<sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String> <sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String>
<!--editor-->
<sys:String x:Key="EditorProxyType" xml:space="preserve">Proxy Type</sys:String>
<sys:String x:Key="EditorProxyParams" xml:space="preserve">Params</sys:String>
<!--Xray--> <!--Xray-->
<sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS over TCP With XTLS&#x0a;</sys:String> <sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS XTLS</sys:String>
<sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS over TCP with TLS&#x0a;</sys:String> <sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS TCP</sys:String>
<sys:String x:Key="VlessWsDesc" xml:space="preserve">VLESS over WS with TLS&#x0a;Support CDN</sys:String> <sys:String x:Key="VlessWsDesc" xml:space="preserve">VLESS WS</sys:String>
<sys:String x:Key="VlessRpcDesc" xml:space="preserve">VLESS gRPC&#x0a;http2multiplexing。</sys:String> <sys:String x:Key="VlessRpcDesc" xml:space="preserve">VLESS gRPC</sys:String>
<sys:String x:Key="VlessKcpDesc" xml:space="preserve">VLESS mKCP&#x0a;low delaywithout Domain</sys:String> <sys:String x:Key="VlessKcpDesc" xml:space="preserve">VLESS mKCP</sys:String>
<sys:String x:Key="VmessWsDesc" xml:space="preserve">VMESS over WS with TLS&#x0a;Support CDN</sys:String> <sys:String x:Key="VmessWsDesc" xml:space="preserve">VMESS WS</sys:String>
<sys:String x:Key="VmessKcpDesc" xml:space="preserve">VMESS mKCP&#x0a;low delaywithout Domian</sys:String> <sys:String x:Key="VmessKcpDesc" xml:space="preserve">VMESS mKCP</sys:String>
<sys:String x:Key="SSDesc" xml:space="preserve">ShadowSocks&#x0a;Support UDPwithout Domain</sys:String> <sys:String x:Key="SSDesc" xml:space="preserve">ShadowSocks</sys:String>
<sys:String x:Key="TrojanDesc" xml:space="preserve">Trojan over TCP with TLS&#x0a;Trojan</sys:String> <sys:String x:Key="TrojanDesc" xml:space="preserve">Trojan</sys:String>
<sys:String x:Key="XrayDomain">Domain/IP</sys:String> <sys:String x:Key="XrayDomain">Domain/IP</sys:String>
<sys:String x:Key="XrayMarkDomain">Redir Url</sys:String> <sys:String x:Key="XrayMarkDomain">Redir Url</sys:String>

View File

@ -64,16 +64,20 @@
<sys:String x:Key="ProxyTypeHttp">Http</sys:String> <sys:String x:Key="ProxyTypeHttp">Http</sys:String>
<sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String> <sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String>
<!--editor-->
<sys:String x:Key="EditorProxyType" xml:space="preserve">節點類型</sys:String>
<sys:String x:Key="EditorProxyParams" xml:space="preserve">節點參數</sys:String>
<!--Xray--> <!--Xray-->
<sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS Over TCP With XTLS&#x0a;安全隱患,謹慎。</sys:String> <sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS TCP XTLS</sys:String>
<sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS over TCP with TLS&#x0a;</sys:String> <sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS TCP</sys:String>
<sys:String x:Key="VlessWsDesc" xml:space="preserve">VLESS over WS with TLS&#x0a;推薦支持CDN。</sys:String> <sys:String x:Key="VlessWsDesc" xml:space="preserve">VLESS WS</sys:String>
<sys:String x:Key="VlessRpcDesc" xml:space="preserve">VLESS gRPC&#x0a;基於http2多路複用。</sys:String> <sys:String x:Key="VlessRpcDesc" xml:space="preserve">VLESS gRPC</sys:String>
<sys:String x:Key="VlessKcpDesc" xml:space="preserve">VLESS mKCP&#x0a;遊戲推薦,延遲低,免域名。</sys:String> <sys:String x:Key="VlessKcpDesc" xml:space="preserve">VLESS mKCP</sys:String>
<sys:String x:Key="VmessWsDesc" xml:space="preserve">VMESS over WS with TLS&#x0a;推薦支持CDN。</sys:String> <sys:String x:Key="VmessWsDesc" xml:space="preserve">VMESS WS</sys:String>
<sys:String x:Key="VmessKcpDesc" xml:space="preserve">VMESS mKCP&#x0a;遊戲推薦,延遲低,免域名。</sys:String> <sys:String x:Key="VmessKcpDesc" xml:space="preserve">VMESS mKCP</sys:String>
<sys:String x:Key="SSDesc" xml:space="preserve">ShadowSocks&#x0a;SS支持udp免域名。</sys:String> <sys:String x:Key="SSDesc" xml:space="preserve">ShadowSocks</sys:String>
<sys:String x:Key="TrojanDesc" xml:space="preserve">Trojan over TCP with TLS&#x0a;Trojan。</sys:String> <sys:String x:Key="TrojanDesc" xml:space="preserve">Trojan</sys:String>
<sys:String x:Key="XrayDomain">域名/IP</sys:String> <sys:String x:Key="XrayDomain">域名/IP</sys:String>

View File

@ -65,16 +65,20 @@
<sys:String x:Key="ProxyTypeHttp">Http</sys:String> <sys:String x:Key="ProxyTypeHttp">Http</sys:String>
<sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String> <sys:String x:Key="ProxyTypeSocks5">Socks5</sys:String>
<!--editor-->
<sys:String x:Key="EditorProxyType" xml:space="preserve">节点类型</sys:String>
<sys:String x:Key="EditorProxyParams" xml:space="preserve">节点参数</sys:String>
<!--Xray--> <!--Xray-->
<sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS Over TCP With XTLS&#x0a;安全隐患,谨慎。</sys:String> <sys:String x:Key="VlessXtlsDesc" xml:space="preserve">VLESS TCP XTLS</sys:String>
<sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS over TCP with TLS&#x0a;推荐,主流。</sys:String> <sys:String x:Key="VlessTcpDesc" xml:space="preserve">VLESS TCP</sys:String>
<sys:String x:Key="VlessWsDesc" xml:space="preserve">VLESS over WS with TLS&#x0a;推荐支持CDN。</sys:String> <sys:String x:Key="VlessWsDesc" xml:space="preserve">VLESS WS</sys:String>
<sys:String x:Key="VlessRpcDesc" xml:space="preserve">VLESS gRPC&#x0a;基于http2多路复用。</sys:String> <sys:String x:Key="VlessRpcDesc" xml:space="preserve">VLESS gRPC</sys:String>
<sys:String x:Key="VlessKcpDesc" xml:space="preserve">VLESS mKCP&#x0a;游戏推荐,延迟低,免域名。</sys:String> <sys:String x:Key="VlessKcpDesc" xml:space="preserve">VLESS mKCP</sys:String>
<sys:String x:Key="VmessWsDesc" xml:space="preserve">VMESS over WS with TLS&#x0a;推荐支持CDN。</sys:String> <sys:String x:Key="VmessWsDesc" xml:space="preserve">VMESS WS</sys:String>
<sys:String x:Key="VmessKcpDesc" xml:space="preserve">VMESS mKCP&#x0a;游戏推荐,延迟低,免域名。</sys:String> <sys:String x:Key="VmessKcpDesc" xml:space="preserve">VMESS mKCP</sys:String>
<sys:String x:Key="SSDesc" xml:space="preserve">ShadowSocks&#x0a;SS支持udp免域名。</sys:String> <sys:String x:Key="SSDesc" xml:space="preserve">ShadowSocks</sys:String>
<sys:String x:Key="TrojanDesc" xml:space="preserve">Trojan over TCP with TLS&#x0a;Trojan。</sys:String> <sys:String x:Key="TrojanDesc" xml:space="preserve">Trojan</sys:String>
<sys:String x:Key="XrayDomain">域名/IP</sys:String> <sys:String x:Key="XrayDomain">域名/IP</sys:String>
@ -133,5 +137,5 @@
<sys:String x:Key="MTProtoDomain">域名/IP</sys:String> <sys:String x:Key="MTProtoDomain">域名/IP</sys:String>
<sys:String x:Key="MTProtoPort">端口</sys:String> <sys:String x:Key="MTProtoPort">端口</sys:String>
<sys:String x:Key="MTProtoCleartext">加密前字符</sys:String> <sys:String x:Key="MTProtoCleartext">加密前字符</sys:String>
<sys:String x:Key="MTProtoSecretText">密钥</sys:String> <sys:String x:Key="MTProtoSecretText">密钥</sys:String>
</ResourceDictionary> </ResourceDictionary>

View File

@ -11,7 +11,7 @@
Icon="/Resources/ProxySU.ico" Icon="/Resources/ProxySU.ico"
BorderThickness="0,1,0,0" BorderThickness="0,1,0,0"
BorderBrush="#EEE" BorderBrush="#EEE"
Title="Xray编辑配置" Height="610" Width="1015"> Title="Xray编辑配置" Height="640" Width="1015">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@ -26,41 +26,40 @@
<StackPanel Grid.Column="1" Background="#EEE"></StackPanel> <StackPanel Grid.Column="1" Background="#EEE"></StackPanel>
<StackPanel Grid.Column="2"> <Grid Grid.Column="2">
<Grid> <Grid.RowDefinitions>
<Grid.RowDefinitions> <RowDefinition Height="*" />
<RowDefinition Height="500" /> <RowDefinition Height="50" />
<RowDefinition Height="80" /> </Grid.RowDefinitions>
</Grid.RowDefinitions>
<ScrollViewer Name="scroll" <ScrollViewer Name="scroll"
Padding="10" Padding="10"
Height="500" Grid.Row="0"
Grid.Row="0" Height="auto"
HorizontalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" > VerticalScrollBarVisibility="Auto" >
<ctrl:XraySettingsControl /> <ctrl:XraySettingsControl />
</ScrollViewer> </ScrollViewer>
<Border Grid.Row="1" <Border Grid.Row="1"
BorderBrush="#eee" BorderBrush="#eee"
BorderThickness="0,1,0,0"> BorderThickness="0,1,0,0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Height="50">
<Button Content="{DynamicResource Save}" <Button Content="{DynamicResource Save}"
Command="{Binding SaveCommand}" Command="{Binding SaveCommand}"
HorizontalAlignment="Right" HorizontalAlignment="Right"
VerticalAlignment="Center" VerticalAlignment="Center"
Padding="10,5" /> Padding="10,5" />
<Button Content="{DynamicResource SaveAndInstall}" <Button Content="{DynamicResource SaveAndInstall}"
Command="{Binding SaveAndInstallCommand}" Command="{Binding SaveAndInstallCommand}"
HorizontalAlignment="Right" HorizontalAlignment="Right"
VerticalAlignment="Center" VerticalAlignment="Center"
Padding="10,5" Padding="10,5"
Margin="20,0,40,0" /> Margin="20,0,40,0" />
</StackPanel> </StackPanel>
</Border> </Border>
</Grid>
</StackPanel> </Grid>
</Grid> </Grid>
</views:MvxWindow> </views:MvxWindow>