From 615b199888f1c30ebda9da03569c42fc2f96b6a2 Mon Sep 17 00:00:00 2001 From: kazeyukiro Date: Sat, 3 Oct 2026 01:33:53 +0000 Subject: [PATCH] fix(ci): set Listener ID via embedded BaseModel in export/share --- backend/internal/converter/client.go | 2 +- backend/internal/export/tls_test.go | 2 +- backend/internal/protocol/share_modules.go | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/backend/internal/converter/client.go b/backend/internal/converter/client.go index a5db6b4..b5439a6 100644 --- a/backend/internal/converter/client.go +++ b/backend/internal/converter/client.go @@ -1031,7 +1031,7 @@ func applyClientSkipCertVerify(p, opts map[string]interface{}, connectHost strin break } } - l := models.Listener{ID: listenerID} + l := models.Listener{BaseModel: models.BaseModel{ID: listenerID}} profile := export.BuildProfileFromConfig(l, connectHost, cfg) if profile.SkipCert { p["skip-cert-verify"] = true diff --git a/backend/internal/export/tls_test.go b/backend/internal/export/tls_test.go index e1528b1..c829851 100644 --- a/backend/internal/export/tls_test.go +++ b/backend/internal/export/tls_test.go @@ -43,7 +43,7 @@ func TestBuildProfileFromConfigEmitsIPSNI(t *testing.T) { ip := "85.149.212.214" pem := testIPCertPEM(t, ip) l := models.Listener{ - ID: 1, + BaseModel: models.BaseModel{ID: 1}, AccessSNI: "www.bing.com", // must NOT win over IP SAN Port: "43829", } diff --git a/backend/internal/protocol/share_modules.go b/backend/internal/protocol/share_modules.go index 6a8c202..52e6ff9 100644 --- a/backend/internal/protocol/share_modules.go +++ b/backend/internal/protocol/share_modules.go @@ -12,7 +12,6 @@ import ( "golang.org/x/crypto/curve25519" "gopkg.in/yaml.v3" - "github.com/kazeyukiro/3m-ui/backend/internal/certutil" "github.com/kazeyukiro/3m-ui/backend/internal/database/models" "github.com/kazeyukiro/3m-ui/backend/internal/export" "github.com/kazeyukiro/3m-ui/backend/internal/netutil" @@ -897,7 +896,7 @@ func resolveShareTLS(in ShareInput, configuredSNI, host string, explicitSkip boo } // Rebuild a minimal listener view so export.BuildProfile owns certstore + path PEM. l := models.Listener{ - ID: in.Node.ID, + BaseModel: models.BaseModel{ID: in.Node.ID}, PublicHost: in.Node.PublicHost, PublicPort: in.Node.PublicPort, Port: in.Node.Port,