fix: 修正 init 权限引导(DNS/区域设置) + 修复进程状态检测

- 权限表: DNS 设置→DNS, 区域→区域设置 (匹配 CF 实际界面)
- init 支持 --token/--account/--name 非交互式模式
- Running() 改用 kill -0 检测, 修复 macOS 上状态误报
This commit is contained in:
admin
2026-02-22 21:50:50 +08:00
parent 9905093fbc
commit ee94b78141
2 changed files with 26 additions and 20 deletions
+24 -15
View File
@@ -11,7 +11,12 @@ import (
"github.com/spf13/cobra"
)
var initToken, initAccountID, initTunnelName string
func init() {
initCmd.Flags().StringVar(&initToken, "token", "", "API 令牌")
initCmd.Flags().StringVar(&initAccountID, "account", "", "账户 ID")
initCmd.Flags().StringVar(&initTunnelName, "name", "my-tunnel", "隧道名称")
rootCmd.AddCommand(initCmd)
}
@@ -30,7 +35,7 @@ var initCmd = &cobra.Command{
fmt.Println(" 添加 3 条权限(点「+ 添加更多」逐条添加):")
fmt.Println(" ┌──────────────────────────────────────────────────┐")
fmt.Println(" │ 第 1 行: 帐户 │ Cloudflare Tunnel │ 编辑 │")
fmt.Println(" │ 第 2 行: 区域 │ DNS 设置 │ 编辑 │")
fmt.Println(" │ 第 2 行: 区域 │ DNS │ 编辑 │")
fmt.Println(" │ 第 3 行: 区域 │ 区域设置 │ 读取 │")
fmt.Println(" └──────────────────────────────────────────────────┘")
fmt.Println(" 提示: 第 2、3 行需先将左侧「帐户」切换为「区域」")
@@ -42,22 +47,26 @@ var initCmd = &cobra.Command{
fmt.Println(" 方式 B: 首页 → 账户名称旁「⋯」→ 复制账户 ID")
fmt.Println()
var apiToken, accountID, tunnelName string
apiToken := strings.TrimSpace(initToken)
accountID := strings.TrimSpace(initAccountID)
tunnelName := strings.TrimSpace(initTunnelName)
err := huh.NewForm(
huh.NewGroup(
huh.NewInput().Title("API 令牌 (API Token)").Value(&apiToken).Placeholder("在 Cloudflare 控制台创建"),
huh.NewInput().Title("账户 ID (Account ID)").Value(&accountID).Placeholder("32 位十六进制字符串"),
huh.NewInput().Title("隧道名称").Value(&tunnelName).Placeholder("my-tunnel"),
),
).Run()
if err != nil {
return err
// 有 flag 则跳过 TUI
if apiToken == "" || accountID == "" {
err := huh.NewForm(
huh.NewGroup(
huh.NewInput().Title("API 令牌 (API Token)").Value(&apiToken).Placeholder("在 Cloudflare 控制台创建"),
huh.NewInput().Title("账户 ID (Account ID)").Value(&accountID).Placeholder("32 位十六进制字符串"),
huh.NewInput().Title("隧道名称").Value(&tunnelName).Placeholder("my-tunnel"),
),
).Run()
if err != nil {
return err
}
apiToken = strings.TrimSpace(apiToken)
accountID = strings.TrimSpace(accountID)
tunnelName = strings.TrimSpace(tunnelName)
}
apiToken = strings.TrimSpace(apiToken)
accountID = strings.TrimSpace(accountID)
tunnelName = strings.TrimSpace(tunnelName)
if tunnelName == "" {
tunnelName = "my-tunnel"
}
+2 -5
View File
@@ -59,11 +59,8 @@ func Running() bool {
if err != nil {
return false
}
proc, err := os.FindProcess(pid)
if err != nil {
return false
}
return proc.Signal(nil) == nil
// 用 kill -0 检测进程是否存在
return exec.Command("kill", "-0", strconv.Itoa(pid)).Run() == nil
}
// PID 返回当前运行的 PID