mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-05-18 12:05:53 +00:00
fix(inbound): require email when adding or updating a client
AddInboundClient and UpdateInboundClient previously accepted an empty Email field for every protocol except shadowsocks (where email doubles as the client ID). Empty emails break downstream features that key off email — IP-limit logging, traffic stats, client-online tracking, subscription remarks. Reject empty/whitespace-only emails at the service layer so the API surface (POST /panel/api/inbounds/addClient and /updateClient/:id) returns a clear error instead of persisting an unidentifiable client. Also drop the stale `len(Email) > 0` guard in UpdateInboundClient that became dead code once empty emails are rejected.
This commit is contained in:
parent
3569b1be73
commit
e40554a7d5
1 changed files with 7 additions and 1 deletions
|
|
@ -849,6 +849,9 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) (bool, error) {
|
||||||
|
|
||||||
// Secure client ID
|
// Secure client ID
|
||||||
for _, client := range clients {
|
for _, client := range clients {
|
||||||
|
if strings.TrimSpace(client.Email) == "" {
|
||||||
|
return false, common.NewError("client email is required")
|
||||||
|
}
|
||||||
switch oldInbound.Protocol {
|
switch oldInbound.Protocol {
|
||||||
case "trojan":
|
case "trojan":
|
||||||
if client.Password == "" {
|
if client.Password == "" {
|
||||||
|
|
@ -1317,8 +1320,11 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId strin
|
||||||
if newClientId == "" || clientIndex == -1 {
|
if newClientId == "" || clientIndex == -1 {
|
||||||
return false, common.NewError("empty client ID")
|
return false, common.NewError("empty client ID")
|
||||||
}
|
}
|
||||||
|
if strings.TrimSpace(clients[0].Email) == "" {
|
||||||
|
return false, common.NewError("client email is required")
|
||||||
|
}
|
||||||
|
|
||||||
if len(clients[0].Email) > 0 && clients[0].Email != oldEmail {
|
if clients[0].Email != oldEmail {
|
||||||
existEmail, err := s.checkEmailsExistForClients(clients)
|
existEmail, err := s.checkEmailsExistForClients(clients)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue