Browse Source

fix(sub): tag node-hosted entries with the node name in remarks (#5035)

An inbound pushed to nodes keeps the same remark on every copy, so a
multi-node subscription (and the panel's per-client link view) listed
several identically-named entries differing only by address. Append the
node name to the remark of node-hosted inbounds unless the admin already
included it.
MHSanaei 12 hours ago
parent
commit
b062cb5a14
1 changed files with 13 additions and 0 deletions
  1. 13 0
      internal/sub/service.go

+ 13 - 0
internal/sub/service.go

@@ -1519,6 +1519,19 @@ func (s *SubService) genRemark(inbound *model.Inbound, email string, extra strin
 	if len(extra) > 0 {
 		orders['o'] = extra
 	}
+	// A node-hosted inbound usually shares its remark with the local copy it
+	// was synced from, so a multi-node subscription would list several
+	// identically-named entries differing only by address (#5035). Tag such
+	// entries with the node name unless the admin already put it in the remark.
+	if inbound.NodeID != nil && s.nodesByID != nil {
+		if n, ok := s.nodesByID[*inbound.NodeID]; ok && n != nil && n.Name != "" && !strings.Contains(orders['i'], n.Name) {
+			if orders['i'] != "" {
+				orders['i'] += "@" + n.Name
+			} else {
+				orders['i'] = n.Name
+			}
+		}
+	}
 
 	var remark []string
 	for i := 0; i < len(orderChars); i++ {