diff --git a/backend/internal/cli/dns_test.go b/backend/internal/cli/dns_test.go index b0814e9..f9286aa 100644 --- a/backend/internal/cli/dns_test.go +++ b/backend/internal/cli/dns_test.go @@ -85,7 +85,7 @@ func TestDNSCheckReportsLiveResultWithoutPersistingConfiguration(t *testing.T) { t.Fatal("权限请求必须设置超时") } remaining := time.Until(deadline) - if remaining < 14*time.Second || remaining > 16*time.Second { + if remaining < 9*time.Second || remaining > 11*time.Second { t.Fatalf("阿里云 CLI 权限验证时限错误:%s", remaining) } report := dnsprovider.AuthorizationReport{Provider: "aliyun", RequestedDomain: name, Verified: outcome == "allowed"} diff --git a/backend/internal/dnsprovider/aliyun_authorization.go b/backend/internal/dnsprovider/aliyun_authorization.go index c4877fa..bdd6d9f 100644 --- a/backend/internal/dnsprovider/aliyun_authorization.go +++ b/backend/internal/dnsprovider/aliyun_authorization.go @@ -20,7 +20,7 @@ const ( aliyunDefaultRegion = "cn-hangzhou" aliyunAuthorizationTTL = 600 aliyunAuthorizationTimeout = 30 * time.Second - aliyunAPICallTimeout = 5 * time.Second + aliyunAPICallTimeout = 3 * time.Second ) // AuthorizationDomain 描述一个阿里云 DNS 根域名的授权探测结果。 diff --git a/backend/internal/dnsprovider/aliyun_authorization_verify_test.go b/backend/internal/dnsprovider/aliyun_authorization_verify_test.go index bd8b1da..0b2391c 100644 --- a/backend/internal/dnsprovider/aliyun_authorization_verify_test.go +++ b/backend/internal/dnsprovider/aliyun_authorization_verify_test.go @@ -207,7 +207,7 @@ func TestAliyunAuthorizationVerifyCleansUpAfterRequestCancellation(t *testing.T) } func TestPermissionVerificationTimeoutForAliyunIsIndependentFromPropagation(t *testing.T) { - if got := PermissionVerificationTimeoutFor(Aliyun); got != 15*time.Second { + if got := PermissionVerificationTimeoutFor(Aliyun); got != 10*time.Second { t.Fatalf("阿里云权限验证时限错误:%s", got) } if got := PermissionVerificationTimeoutFor(Cloudflare); got != 60*time.Second { diff --git a/backend/internal/dnsprovider/tester.go b/backend/internal/dnsprovider/tester.go index 1d77bb7..47392dc 100644 --- a/backend/internal/dnsprovider/tester.go +++ b/backend/internal/dnsprovider/tester.go @@ -40,7 +40,7 @@ const ( // AliyunPermissionVerificationTimeout 限制阿里云账号内的创建、查询和清理闭环。 // 该流程不等待公网 DNS 传播。 - AliyunPermissionVerificationTimeout = 15 * time.Second + AliyunPermissionVerificationTimeout = 10 * time.Second dnsCleanupTimeout = 30 * time.Second defaultDNSPermissionTXTLookupTimeout = 30 * time.Second diff --git a/backend/internal/httpapi/dns_api_test.go b/backend/internal/httpapi/dns_api_test.go index 9e7af18..b948052 100644 --- a/backend/internal/httpapi/dns_api_test.go +++ b/backend/internal/httpapi/dns_api_test.go @@ -81,8 +81,8 @@ func TestAdminAliyunDNSTestReportsFastVerificationTimeout(t *testing.T) { }`)) request.Header.Set("Content-Type", "application/json") serveAdminHTTP(server, response, request) - if response.Code != http.StatusOK || !strings.Contains(response.Body.String(), `"verification_timeout_secs":15`) { - t.Fatalf("管理端阿里云 DNS 在线测试未返回 15 秒等待上限:%d %s", response.Code, response.Body.String()) + if response.Code != http.StatusOK || !strings.Contains(response.Body.String(), `"verification_timeout_secs":10`) { + t.Fatalf("管理端阿里云 DNS 在线测试未返回 10 秒等待上限:%d %s", response.Code, response.Body.String()) } } diff --git a/backend/internal/httpapi/setup_test.go b/backend/internal/httpapi/setup_test.go index 66352dc..88cdb29 100644 --- a/backend/internal/httpapi/setup_test.go +++ b/backend/internal/httpapi/setup_test.go @@ -298,14 +298,14 @@ func TestSetupAliyunDNSTestUsesFastAccountAPITimeout(t *testing.T) { if response.Code != http.StatusUnprocessableEntity { t.Fatalf("模拟阿里云 DNS 验证失败应返回 422,实际为 %d:%s", response.Code, response.Body.String()) } - if !strings.Contains(response.Body.String(), `"verification_timeout_secs":15`) { - t.Fatalf("阿里云 DNS 验证失败响应应包含 15 秒等待上限:%s", response.Body.String()) + if !strings.Contains(response.Body.String(), `"verification_timeout_secs":10`) { + t.Fatalf("阿里云 DNS 验证失败响应应包含 10 秒等待上限:%s", response.Body.String()) } if !verifier.verifyHasDeadline { t.Fatal("阿里云 DNS 在线测试应收到带截止时间的上下文") } remaining := verifier.verifyDeadline.Sub(started) - if remaining < 14*time.Second || remaining > 16*time.Second { + if remaining < 9*time.Second || remaining > 11*time.Second { t.Fatalf("阿里云权限验证不应继承 ACME 传播配置:剩余时间=%s", remaining) } } @@ -580,7 +580,7 @@ func TestSetupDNSTestReturnsNotImplementedForUnavailableProvider(t *testing.T) { if strings.Contains(response.Body.String(), "access_key_secret") || strings.Contains(response.Body.String(), "secret") { t.Fatal("未开放 Provider 响应不应包含提交的凭据") } - if !strings.Contains(response.Body.String(), `"verification_timeout_secs":15`) { + if !strings.Contains(response.Body.String(), `"verification_timeout_secs":10`) { t.Fatalf("未开放 Provider 响应应包含当前最大等待时间:%s", response.Body.String()) } } diff --git a/frontend/src/views/Dashboard/Dashboard.js b/frontend/src/views/Dashboard/Dashboard.js index 80b5051..372afc8 100644 --- a/frontend/src/views/Dashboard/Dashboard.js +++ b/frontend/src/views/Dashboard/Dashboard.js @@ -1,7 +1,7 @@ import { computed, onBeforeUnmount, onMounted, ref, watch } from "vue"; const defaultDNSVerificationTimeoutSeconds = 60; -const aliyunDNSVerificationTimeoutSeconds = 15; +const aliyunDNSVerificationTimeoutSeconds = 10; function dnsVerificationTimeoutFor(providerID) { return String(providerID || "").trim().toLowerCase() === "aliyun" diff --git a/frontend/src/views/Dashboard/Dashboard.test.js b/frontend/src/views/Dashboard/Dashboard.test.js index 30ae03a..ef381fd 100644 --- a/frontend/src/views/Dashboard/Dashboard.test.js +++ b/frontend/src/views/Dashboard/Dashboard.test.js @@ -103,7 +103,7 @@ test("管理设置 DNS 验证显示等待进度,并在结束后停止计时", assert.equal(state.dnsTesting.value, true); assert.equal(state.dnsVerificationElapsedSeconds.value, 0); - assert.equal(state.dnsVerificationTimeoutSeconds.value, 15); + assert.equal(state.dnsVerificationTimeoutSeconds.value, 10); advanceTime(3200); runIntervals(); assert.equal(state.dnsVerificationElapsedSeconds.value, 3); @@ -113,12 +113,12 @@ test("管理设置 DNS 验证显示等待进度,并在结束后停止计时", credential_ref: "secret://test/only", verification_token: "test-token", expires_at: new Date(Date.now() + 60000).toISOString(), - verification_timeout_secs: 15, + verification_timeout_secs: 10, })); await task; assert.equal(state.dnsTesting.value, false); assert.equal(state.dnsVerificationElapsedSeconds.value, 0); - assert.equal(state.dnsVerificationTimeoutSeconds.value, 15); + assert.equal(state.dnsVerificationTimeoutSeconds.value, 10); advanceTime(1000); runIntervals(); assert.equal(state.dnsVerificationElapsedSeconds.value, 0); diff --git a/frontend/src/views/SetupWizard/SetupWizard.js b/frontend/src/views/SetupWizard/SetupWizard.js index f4c94d9..a34a928 100644 --- a/frontend/src/views/SetupWizard/SetupWizard.js +++ b/frontend/src/views/SetupWizard/SetupWizard.js @@ -1,7 +1,7 @@ import { computed, onMounted, onUnmounted, ref, watch } from "vue"; const defaultDNSVerificationTimeoutSeconds = 60; -const aliyunDNSVerificationTimeoutSeconds = 15; +const aliyunDNSVerificationTimeoutSeconds = 10; function dnsVerificationTimeoutFor(providerID) { return String(providerID || "").trim().toLowerCase() === "aliyun" diff --git a/frontend/src/views/SetupWizard/SetupWizard.test.js b/frontend/src/views/SetupWizard/SetupWizard.test.js index ebf2bb4..de6aae6 100644 --- a/frontend/src/views/SetupWizard/SetupWizard.test.js +++ b/frontend/src/views/SetupWizard/SetupWizard.test.js @@ -34,7 +34,7 @@ test("初始化 DNS 验证显示等待进度,并采用服务端返回的最长 assert.equal(state.dnsTesting.value, true); assert.equal(state.dnsVerificationElapsedSeconds.value, 0); - assert.equal(state.dnsVerificationTimeoutSeconds.value, 15); + assert.equal(state.dnsVerificationTimeoutSeconds.value, 10); advanceTime(2500); runIntervals(); @@ -45,12 +45,12 @@ test("初始化 DNS 验证显示等待进度,并采用服务端返回的最长 credential_ref: "secret://test/only", verification_token: "test-token", expires_at: new Date(Date.now() + 60000).toISOString(), - verification_timeout_secs: 15, + verification_timeout_secs: 10, })); await task; assert.equal(state.dnsTesting.value, false); assert.equal(state.dnsVerificationElapsedSeconds.value, 0); - assert.equal(state.dnsVerificationTimeoutSeconds.value, 15); + assert.equal(state.dnsVerificationTimeoutSeconds.value, 10); advanceTime(1000); runIntervals();