mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-05 01:47:15 +00:00
fix(sub): stop appending the node name to subscription remarks (#5231)
The #5035 change tagged node-hosted entries with the node name to disambiguate multi-node subscriptions, but the node name is panel-internal and leaked into the profile names end users see in their client apps. Drop the suffix entirely — remarks are the admin-set inbound remark again.
This commit is contained in:
@@ -1528,19 +1528,6 @@ func (s *SubService) genRemark(inbound *model.Inbound, email string, extra strin
|
|||||||
if len(extra) > 0 {
|
if len(extra) > 0 {
|
||||||
orders['o'] = extra
|
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
|
var remark []string
|
||||||
for i := 0; i < len(orderChars); i++ {
|
for i := 0; i < len(orderChars); i++ {
|
||||||
|
|||||||
@@ -26,6 +26,21 @@ func TestSubscriptionExpiryFromClient(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The name an admin gives a node is panel-internal and must not leak into
|
||||||
|
// the remarks end users see in their client apps (#5231) — not even for
|
||||||
|
// node-hosted inbounds, which briefly carried a node-name suffix (#5035).
|
||||||
|
func TestGenRemarkOmitsNodeName(t *testing.T) {
|
||||||
|
nodeID := 7
|
||||||
|
s := &SubService{
|
||||||
|
remarkModel: "-ieo",
|
||||||
|
nodesByID: map[int]*model.Node{7: {Id: 7, Name: "Berlin", Address: "node7.example.com"}},
|
||||||
|
}
|
||||||
|
ib := &model.Inbound{Remark: "vless-tcp", NodeID: &nodeID}
|
||||||
|
if got := s.genRemark(ib, "", ""); got != "vless-tcp" {
|
||||||
|
t.Fatalf("remark = %q, want %q (node name must not leak into client-visible remarks)", got, "vless-tcp")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFindClientIndex(t *testing.T) {
|
func TestFindClientIndex(t *testing.T) {
|
||||||
clients := []model.Client{
|
clients := []model.Client{
|
||||||
{Email: "a@example.com"},
|
{Email: "a@example.com"},
|
||||||
|
|||||||
Reference in New Issue
Block a user