|
|
@@ -331,10 +331,11 @@ func TestGenerateInboundTag_IgnoresSelfOnUpdate(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// specific listen address gets the listen-prefixed shape and same suffix.
|
|
|
-func TestGenerateInboundTag_SpecificListenSameDisambiguation(t *testing.T) {
|
|
|
+// the listen address never appears in the tag; the transport suffix still
|
|
|
+// keeps a udp inbound distinct from a tcp one on the same port.
|
|
|
+func TestGenerateInboundTag_ListenIgnoredTransportDisambiguates(t *testing.T) {
|
|
|
setupConflictDB(t)
|
|
|
- seedInboundConflict(t, "in-1.2.3.4:443", "1.2.3.4", 443, model.VLESS, `{"network":"tcp"}`, `{}`)
|
|
|
+ seedInboundConflict(t, "in-443-tcp", "1.2.3.4", 443, model.VLESS, `{"network":"tcp"}`, `{}`)
|
|
|
|
|
|
svc := &InboundService{}
|
|
|
udp := &model.Inbound{
|
|
|
@@ -346,8 +347,8 @@ func TestGenerateInboundTag_SpecificListenSameDisambiguation(t *testing.T) {
|
|
|
if err != nil {
|
|
|
t.Fatalf("generateInboundTag: %v", err)
|
|
|
}
|
|
|
- if got != "in-1.2.3.4:443-udp" {
|
|
|
- t.Fatalf("expected in-1.2.3.4:443-udp, got %q", got)
|
|
|
+ if got != "in-443-udp" {
|
|
|
+ t.Fatalf("expected in-443-udp, got %q", got)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -644,26 +645,25 @@ func TestIsAutoGeneratedTag(t *testing.T) {
|
|
|
cases := []struct {
|
|
|
name string
|
|
|
tag string
|
|
|
- listen string
|
|
|
port int
|
|
|
nodeID *int
|
|
|
bits transportBits
|
|
|
want bool
|
|
|
}{
|
|
|
- {"canonical", "in-443-tcp", "0.0.0.0", 443, nil, tcp, true},
|
|
|
- {"canonical udp", "in-443-udp", "0.0.0.0", 443, nil, transportUDP, true},
|
|
|
- {"dedup suffix", "in-443-tcp-2", "0.0.0.0", 443, nil, tcp, true},
|
|
|
- {"listen scoped", "in-127.0.0.1:443-tcp", "127.0.0.1", 443, nil, tcp, true},
|
|
|
- {"node prefixed", "n1-in-443-tcp", "0.0.0.0", 443, intPtr(1), tcp, true},
|
|
|
- {"custom tag", "my-cool-tag", "0.0.0.0", 443, nil, tcp, false},
|
|
|
- {"stale port", "in-443-tcp", "0.0.0.0", 8443, nil, tcp, false},
|
|
|
- {"stale transport", "in-443-tcp", "0.0.0.0", 443, nil, transportUDP, false},
|
|
|
- {"non-numeric suffix", "in-443-tcp-x", "0.0.0.0", 443, nil, tcp, false},
|
|
|
- {"empty suffix", "in-443-tcp-", "0.0.0.0", 443, nil, tcp, false},
|
|
|
+ {"canonical", "in-443-tcp", 443, nil, tcp, true},
|
|
|
+ {"canonical udp", "in-443-udp", 443, nil, transportUDP, true},
|
|
|
+ {"dedup suffix", "in-443-tcp-2", 443, nil, tcp, true},
|
|
|
+ {"node prefixed", "n1-in-443-tcp", 443, intPtr(1), tcp, true},
|
|
|
+ {"legacy listen-scoped is now custom", "in-127.0.0.1:443-tcp", 443, nil, tcp, false},
|
|
|
+ {"custom tag", "my-cool-tag", 443, nil, tcp, false},
|
|
|
+ {"stale port", "in-443-tcp", 8443, nil, tcp, false},
|
|
|
+ {"stale transport", "in-443-tcp", 443, nil, transportUDP, false},
|
|
|
+ {"non-numeric suffix", "in-443-tcp-x", 443, nil, tcp, false},
|
|
|
+ {"empty suffix", "in-443-tcp-", 443, nil, tcp, false},
|
|
|
}
|
|
|
for _, c := range cases {
|
|
|
t.Run(c.name, func(t *testing.T) {
|
|
|
- if got := isAutoGeneratedTag(c.tag, c.listen, c.port, c.nodeID, c.bits); got != c.want {
|
|
|
+ if got := isAutoGeneratedTag(c.tag, c.port, c.nodeID, c.bits); got != c.want {
|
|
|
t.Fatalf("isAutoGeneratedTag(%q) = %v, want %v", c.tag, got, c.want)
|
|
|
}
|
|
|
})
|