Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Add Username
  • Loading branch information
DHR60 committed Feb 5, 2026
commit 06677431a0502abeedc5375cb21617d8ae32cdc5
5 changes: 1 addition & 4 deletions v2rayN/ServiceLib/Handler/ConfigHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -745,11 +745,8 @@ public static async Task<int> AddTuicServer(Config config, ProfileItem profileIt
profileItem.CoreType = ECoreType.sing_box;

profileItem.Address = profileItem.Address.TrimEx();
profileItem.Username = profileItem.Username.TrimEx();
profileItem.Password = profileItem.Password.TrimEx();
profileItem.SetProtocolExtra(profileItem.GetProtocolExtra() with
{
Username = profileItem.GetProtocolExtra().Username?.TrimEx()
});
profileItem.Network = string.Empty;

if (!Global.TuicCongestionControls.Contains(profileItem.HeaderType))
Expand Down
6 changes: 3 additions & 3 deletions v2rayN/ServiceLib/Handler/Fmt/SocksFmt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class SocksFmt : BaseFmt
remark = "#" + Utils.UrlEncode(item.Remarks);
}
//new
var pw = Utils.Base64Encode($"{item.GetProtocolExtra().Username}:{item.Password}", true);
var pw = Utils.Base64Encode($"{item.Username}:{item.Password}", true);
return ToUri(EConfigType.SOCKS, item.Address, item.Port, pw, null, remark);
}

Expand Down Expand Up @@ -78,7 +78,7 @@ public class SocksFmt : BaseFmt
}
item.Address = arr1[1][..indexPort];
item.Port = arr1[1][(indexPort + 1)..].ToInt();
item.SetProtocolExtra(item.GetProtocolExtra() with { Username = arr21.First() });
item.Username = arr21.First();
item.Password = arr21[1];
return item;
}
Expand All @@ -103,7 +103,7 @@ public class SocksFmt : BaseFmt
var userInfoParts = userInfo.Split([':'], 2);
if (userInfoParts.Length == 2)
{
item.SetProtocolExtra(item.GetProtocolExtra() with { Username = userInfoParts.First() });
item.Username = userInfoParts.First();
item.Password = userInfoParts[1];
}

Expand Down
4 changes: 2 additions & 2 deletions v2rayN/ServiceLib/Handler/Fmt/TuicFmt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class TuicFmt : BaseFmt
var userInfoParts = rawUserInfo.Split(new[] { ':' }, 2);
if (userInfoParts.Length == 2)
{
item.SetProtocolExtra(item.GetProtocolExtra() with { Username = userInfoParts.First() });
item.Username = userInfoParts.First();
item.Password = userInfoParts.Last();
}

Expand Down Expand Up @@ -53,6 +53,6 @@ public class TuicFmt : BaseFmt

dicQuery.Add("congestion_control", item.HeaderType);

return ToUri(EConfigType.TUIC, item.Address, item.Port, $"{item.GetProtocolExtra().Username ?? ""}:{item.Password}", dicQuery, remark);
return ToUri(EConfigType.TUIC, item.Address, item.Port, $"{item.Username ?? ""}:{item.Password}", dicQuery, remark);
}
}
11 changes: 5 additions & 6 deletions v2rayN/ServiceLib/Manager/AppManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -333,13 +333,14 @@ public async Task MigrateProfileExtra()
};
break;
case EConfigType.TUIC:
extra = extra with
{
Username = item.Id,
};
item.Username = item.Id;
item.Id = item.Security;
item.Password = item.Security;
break;
case EConfigType.HTTP:
case EConfigType.SOCKS:
item.Username = item.Security;
break;
case EConfigType.WireGuard:
extra = extra with
{
Expand All @@ -349,8 +350,6 @@ public async Task MigrateProfileExtra()
WgMtu = int.TryParse(item.ShortId, out var mtu) ? mtu : 1280
};
break;
default:
break;
}

item.SetProtocolExtra(extra);
Expand Down
2 changes: 2 additions & 0 deletions v2rayN/ServiceLib/Models/ProfileItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public ProfileItem()
Address = string.Empty;
Port = 0;
Password = string.Empty;
Username = string.Empty;
Network = string.Empty;
Remarks = string.Empty;
HeaderType = string.Empty;
Expand Down Expand Up @@ -151,6 +152,7 @@ public ProtocolExtraItem GetProtocolExtra()
public string Address { get; set; }
public int Port { get; set; }
public string Password { get; set; }
public string Username { get; set; }
public string Network { get; set; }
public string Remarks { get; set; }
public string HeaderType { get; set; }
Expand Down
3 changes: 0 additions & 3 deletions v2rayN/ServiceLib/Models/ProtocolExtraItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ public record ProtocolExtraItem
//public string? PluginArgs { get; init; }
public string? SsMethod { get; init; }

// socks and http
public string? Username { get; init; }

// wireguard
public string? WgPublicKey { get; init; }
public string? WgPresharedKey { get; init; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,20 +90,20 @@ private async Task<int> GenOutbound(ProfileItem node, Outbound4Sbox outbound)
case EConfigType.SOCKS:
{
outbound.version = "5";
if (protocolExtra.Username.IsNotEmpty()
if (node.Username.IsNotEmpty()
&& node.Password.IsNotEmpty())
{
outbound.username = protocolExtra.Username;
outbound.username = node.Username;
outbound.password = node.Password;
}
break;
}
case EConfigType.HTTP:
{
if (protocolExtra.Username.IsNotEmpty()
if (node.Username.IsNotEmpty()
&& node.Password.IsNotEmpty())
{
outbound.username = protocolExtra.Username;
outbound.username = node.Username;
outbound.password = node.Password;
}
break;
Expand Down Expand Up @@ -190,7 +190,7 @@ private async Task<int> GenOutbound(ProfileItem node, Outbound4Sbox outbound)
}
case EConfigType.TUIC:
{
outbound.uuid = protocolExtra.Username;
outbound.uuid = node.Username;
outbound.password = node.Password;
outbound.congestion_control = node.HeaderType;
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,12 @@ private async Task<int> GenOutbound(ProfileItem node, Outbounds4Ray outbound)
serversItem.method = null;
serversItem.password = null;

if (protocolExtra.Username.IsNotEmpty()
if (node.Username.IsNotEmpty()
&& node.Password.IsNotEmpty())
{
SocksUsersItem4Ray socksUsersItem = new()
{
user = protocolExtra.Username ?? "",
user = node.Username ?? "",
pass = node.Password,
level = 1
};
Expand Down
5 changes: 0 additions & 5 deletions v2rayN/ServiceLib/ViewModels/AddServerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@ public class AddServerViewModel : MyReactiveObject
[Reactive]
public string SsMethod { get; set; }

[Reactive]
public string Username { get; set; }

[Reactive]
public string WgPublicKey { get; set; }
//[Reactive]
Expand Down Expand Up @@ -119,7 +116,6 @@ public AddServerViewModel(ProfileItem profileItem, Func<EViewAction, object?, Ta
VmessSecurity = protocolExtra?.VmessSecurity?.IsNullOrEmpty() == false ? protocolExtra.VmessSecurity : Global.DefaultSecurity;
VlessEncryption = protocolExtra?.VlessEncryption.IsNullOrEmpty() == false ? protocolExtra.VlessEncryption : Global.None;
SsMethod = protocolExtra?.SsMethod ?? string.Empty;
Username = protocolExtra?.Username ?? string.Empty;
WgPublicKey = protocolExtra?.WgPublicKey ?? string.Empty;
WgInterfaceAddress = protocolExtra?.WgInterfaceAddress ?? string.Empty;
WgReserved = protocolExtra?.WgReserved ?? string.Empty;
Expand Down Expand Up @@ -182,7 +178,6 @@ private async Task SaveServerAsync()
VmessSecurity = VmessSecurity.NullIfEmpty(),
VlessEncryption = VlessEncryption.NullIfEmpty(),
SsMethod = SsMethod.NullIfEmpty(),
Username = Username.NullIfEmpty(),
WgPublicKey = WgPublicKey.NullIfEmpty(),
WgInterfaceAddress = WgInterfaceAddress.NullIfEmpty(),
WgReserved = WgReserved.NullIfEmpty(),
Expand Down
4 changes: 2 additions & 2 deletions v2rayN/v2rayN.Desktop/Views/AddServerWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public AddServerWindow(ProfileItem profileItem)
case EConfigType.SOCKS:
case EConfigType.HTTP:
this.Bind(ViewModel, vm => vm.SelectedSource.Password, v => v.txtId4.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.Username, v => v.txtSecurity4.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.Username, v => v.txtSecurity4.Text).DisposeWith(disposables);
break;

case EConfigType.VLESS:
Expand All @@ -152,7 +152,7 @@ public AddServerWindow(ProfileItem profileItem)
break;

case EConfigType.TUIC:
this.Bind(ViewModel, vm => vm.Username, v => v.txtId8.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.Username, v => v.txtId8.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.Password, v => v.txtSecurity8.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.HeaderType, v => v.cmbHeaderType8.SelectedValue).DisposeWith(disposables);
break;
Expand Down
4 changes: 2 additions & 2 deletions v2rayN/v2rayN/Views/AddServerWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public AddServerWindow(ProfileItem profileItem)
case EConfigType.SOCKS:
case EConfigType.HTTP:
this.Bind(ViewModel, vm => vm.SelectedSource.Password, v => v.txtId4.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.Username, v => v.txtSecurity4.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.Username, v => v.txtSecurity4.Text).DisposeWith(disposables);
break;

case EConfigType.VLESS:
Expand All @@ -147,7 +147,7 @@ public AddServerWindow(ProfileItem profileItem)
break;

case EConfigType.TUIC:
this.Bind(ViewModel, vm => vm.Username, v => v.txtId8.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.Username, v => v.txtId8.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.Password, v => v.txtSecurity8.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.HeaderType, v => v.cmbHeaderType8.Text).DisposeWith(disposables);
break;
Expand Down