mirror of
https://github.com/qingchencloud/cftunnel.git
synced 2026-08-28 18:20:34 +08:00
fix: 修正 init 权限引导(DNS/区域设置) + 修复进程状态检测
- 权限表: DNS 设置→DNS, 区域→区域设置 (匹配 CF 实际界面) - init 支持 --token/--account/--name 非交互式模式 - Running() 改用 kill -0 检测, 修复 macOS 上状态误报
This commit is contained in:
+24
-15
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user