diff --git a/v2rayN/ServiceLib/Handler/Data/ConfigDbHandler.cs b/v2rayN/ServiceLib/Handler/Data/ConfigDbHandler.cs index db099171..2173fd1e 100644 --- a/v2rayN/ServiceLib/Handler/Data/ConfigDbHandler.cs +++ b/v2rayN/ServiceLib/Handler/Data/ConfigDbHandler.cs @@ -777,10 +777,6 @@ public static class ConfigDbHandler { profileItem.StreamSecurity = Global.StreamSecurity; } - if (profileItem.Password.IsNullOrEmpty()) - { - return -1; - } await AddServerCommon(profileItem, toFile); return 0; } diff --git a/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayOutboundService.cs b/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayOutboundService.cs index 47f9ce0c..e62a0e06 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayOutboundService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/V2ray/V2rayOutboundService.cs @@ -656,8 +656,11 @@ public partial class CoreConfigV2rayService case "masque": var headers = new Dictionary(StringComparer.OrdinalIgnoreCase); - var authValue = $"Basic {Utils.Base64Encode($"{_node.Username}:{_node.Password}")}"; - headers.Add("Authorization", authValue); + if (!string.IsNullOrEmpty(_node.Username) || !string.IsNullOrEmpty(_node.Password)) + { + var authValue = $"Basic {Utils.Base64Encode($"{_node.Username}:{_node.Password}")}"; + headers.Add("Authorization", authValue); + } if (!string.IsNullOrEmpty(protocolExtra?.MasqueHeaders)) { var userHeaders = Utils.ParseHeaders(protocolExtra.MasqueHeaders) diff --git a/v2rayN/ServiceLib/ViewModels/AddServerViewModel.cs b/v2rayN/ServiceLib/ViewModels/AddServerViewModel.cs index 6eddfda6..ab597116 100644 --- a/v2rayN/ServiceLib/ViewModels/AddServerViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/AddServerViewModel.cs @@ -501,7 +501,7 @@ public partial class AddServerViewModel : MyReactiveObject, ICloseable return; } } - if (SelectedSource.ConfigType is not EConfigType.SOCKS and not EConfigType.HTTP) + if (SelectedSource.ConfigType is not EConfigType.SOCKS and not EConfigType.HTTP and not EConfigType.MASQUE) { if (SelectedSource.Password.IsNullOrEmpty()) { diff --git a/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs index be35f9cb..275a7fa9 100644 --- a/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs @@ -311,6 +311,11 @@ public partial class AddServerWindow : WindowBase gridMasque.IsVisible = true; sepa2.IsVisible = false; gridTransport.IsVisible = false; + lstStreamSecurity.Remove(string.Empty); + if (string.IsNullOrEmpty(profileItem.StreamSecurity)) + { + profileItem.StreamSecurity = lstStreamSecurity.First(); + } break; } cmbStreamSecurity.ItemsSource = lstStreamSecurity; @@ -334,7 +339,7 @@ public partial class AddServerWindow : WindowBase private void CmbStreamSecurity_SelectionChanged(object? sender, SelectionChangedEventArgs e) { - var security = cmbStreamSecurity.SelectedItem.ToString(); + var security = cmbStreamSecurity.SelectedItem?.ToString(); if (security == Global.StreamSecurityReality) { gridRealityMore.IsVisible = true; diff --git a/v2rayN/v2rayN/Views/AddServerWindow.xaml.cs b/v2rayN/v2rayN/Views/AddServerWindow.xaml.cs index 02ebb2d4..00974592 100644 --- a/v2rayN/v2rayN/Views/AddServerWindow.xaml.cs +++ b/v2rayN/v2rayN/Views/AddServerWindow.xaml.cs @@ -299,6 +299,11 @@ public partial class AddServerWindow gridMasque.Visibility = Visibility.Visible; sepa2.Visibility = Visibility.Collapsed; gridTransport.Visibility = Visibility.Collapsed; + lstStreamSecurity.Remove(string.Empty); + if (string.IsNullOrEmpty(profileItem.StreamSecurity)) + { + profileItem.StreamSecurity = lstStreamSecurity.First(); + } break; } cmbStreamSecurity.ItemsSource = lstStreamSecurity; @@ -322,7 +327,7 @@ public partial class AddServerWindow private void CmbStreamSecurity_SelectionChanged(object sender, SelectionChangedEventArgs e) { - var security = cmbStreamSecurity.SelectedItem.ToString(); + var security = cmbStreamSecurity.SelectedItem?.ToString(); if (security == Global.StreamSecurityReality) { gridRealityMore.Visibility = Visibility.Visible;