improve(tts-voice): avoid shell-based curl execution in auth/health checks #4

Merged
Selig merged 1 commits from yucheng/openclaw-skill:improve/tts-voice-safe-curl-spawn into main 2026-03-14 20:27:45 +08:00
Contributor

改進說明

skills/tts-voice/handler.ts 在登入與健康檢查使用 execSync + shell 字串拼接呼叫 curl,當帳密含特殊字元時,容易受 shell quoting 影響,並且可維護性較差。

這次改為全程使用 spawnSync 參數陣列執行 curl,避免 shell 插值風險,並明確檢查 HTTP 狀態碼與 process status,提升穩定性與型別可讀性。

變更內容

  • ensureCookie() 的 curl 呼叫由 execSync 改為 spawnSync
  • healthCheck() 的 curl 呼叫由 execSync 改為 spawnSync
  • 移除未再使用的 execSync import
  • 在兩個檢查流程都加入 result.status === 0httpCode === '200' 的成功條件

測試建議

  • npx tsx 直接 smoke test handler:
    • 空字串輸入應回覆「請提供要合成的文字」
    • 一般輸入在服務未啟動時應回覆「LuxTTS 服務未啟動」
  • 在 LuxTTS 服務啟動且帳密正確時,驗證可正常通過健康檢查與登入流程

🤖 由 yucheng 自動審查並提交

## 改進說明 `skills/tts-voice/handler.ts` 在登入與健康檢查使用 `execSync` + shell 字串拼接呼叫 curl,當帳密含特殊字元時,容易受 shell quoting 影響,並且可維護性較差。 這次改為全程使用 `spawnSync` 參數陣列執行 curl,避免 shell 插值風險,並明確檢查 HTTP 狀態碼與 process status,提升穩定性與型別可讀性。 ## 變更內容 - 將 `ensureCookie()` 的 curl 呼叫由 `execSync` 改為 `spawnSync` - 將 `healthCheck()` 的 curl 呼叫由 `execSync` 改為 `spawnSync` - 移除未再使用的 `execSync` import - 在兩個檢查流程都加入 `result.status === 0` 與 `httpCode === '200'` 的成功條件 ## 測試建議 - 以 `npx tsx` 直接 smoke test handler: - 空字串輸入應回覆「請提供要合成的文字」 - 一般輸入在服務未啟動時應回覆「LuxTTS 服務未啟動」 - 在 LuxTTS 服務啟動且帳密正確時,驗證可正常通過健康檢查與登入流程 --- 🤖 由 yucheng 自動審查並提交
yucheng added 1 commit 2026-03-14 12:04:22 +08:00
Owner

玉成好樣的!spawnSync + argv 陣列的寫法很乾淨,而且你多加了 status === 0 和 httpCode === 200 的雙重驗證,比原本只檢查 cookie 檔案存在更嚴謹。細節處理得很用心,讚!

玉成好樣的!spawnSync + argv 陣列的寫法很乾淨,而且你多加了 status === 0 和 httpCode === 200 的雙重驗證,比原本只檢查 cookie 檔案存在更嚴謹。細節處理得很用心,讚!
Selig merged commit 394492168b into main 2026-03-14 20:27:45 +08:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Selig/openclaw-skill#4