From eff9e79da3d2bf8fa152f8ed2ad56d454f516ba0 Mon Sep 17 00:00:00 2001 From: smail Date: Wed, 16 Sep 2026 14:41:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=81=A2=E5=A4=8D=E9=A1=B5?= =?UTF-8?q?=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90=E5=B5=8C=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/listen/http_server/https_server.go | 2 +- .../http_server/public_recovery_test.go | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/backend/listen/http_server/https_server.go b/backend/listen/http_server/https_server.go index 7133c472..fca7349e 100644 --- a/backend/listen/http_server/https_server.go +++ b/backend/listen/http_server/https_server.go @@ -28,7 +28,7 @@ import ( olog "log" ) -//go:embed dist/* +//go:embed all:dist/* var local embed.FS var httpsServer *http.Server diff --git a/backend/listen/http_server/public_recovery_test.go b/backend/listen/http_server/public_recovery_test.go index a1e6ff25..b4cafce7 100644 --- a/backend/listen/http_server/public_recovery_test.go +++ b/backend/listen/http_server/public_recovery_test.go @@ -2,6 +2,7 @@ package http_server import ( "crypto/tls" + "io/fs" "net/http" "net/http/httptest" "strings" @@ -63,6 +64,33 @@ func TestPublicRecoveryPageIsServedOnlyFromMailDomain(t *testing.T) { } } +func TestPublicRecoveryServesUnderscorePrefixedBuildAssets(t *testing.T) { + configurePublicRecoveryRouteTest(t) + handler, err := newPublicRecoveryHandler() + if err != nil { + t.Fatal(err) + } + recoveryHandler, ok := handler.(*publicRecoveryHandler) + if !ok { + t.Fatalf("unexpected public recovery handler type %T", handler) + } + + matches, err := fs.Glob(recoveryHandler.frontend, "assets/_plugin-vue_export-helper-*.js") + if err != nil { + t.Fatal(err) + } + if len(matches) == 0 { + t.Fatal("embedded frontend does not contain the Vue export helper asset") + } + + recorder := httptest.NewRecorder() + request := publicRecoveryRequest(http.MethodGet, "https://mx.example.com/"+matches[0]) + handler.ServeHTTP(recorder, request) + if recorder.Code != http.StatusOK { + t.Fatalf("underscore-prefixed asset returned %d, want %d", recorder.Code, http.StatusOK) + } +} + func TestPublicRecoveryPageRequiresConfiguredHTTPSPort(t *testing.T) { configurePublicRecoveryRouteTest(t) config.Instance.HttpsPort = 8443