mirror of
https://github.com/qingchencloud/cftunnel.git
synced 2026-08-28 10:03:59 +08:00
266b978371
在 cloudflared 和用户服务之间插入鉴权反向代理中间件, 用户通过 --auth user:pass 即可启用密码保护。 - 新增 internal/authproxy 包(代理核心/端口探测/登录页) - quick 和 add 命令支持 --auth flag - up 命令启动前自动为有 Auth 的路由启动代理 - 登录页深色主题,底部链接官网 - 官网新增访问保护特性卡片/对比表/命令速查
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/qingchencloud/cftunnel/internal/daemon"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var quickAuth string
|
|
|
|
func init() {
|
|
quickCmd.Flags().StringVar(&quickAuth, "auth", "", "启用密码保护 (格式: 用户名:密码)")
|
|
rootCmd.AddCommand(quickCmd)
|
|
}
|
|
|
|
var quickCmd = &cobra.Command{
|
|
Use: "quick <端口>",
|
|
Short: "快速启动免域名隧道(生成 *.trycloudflare.com 随机域名)",
|
|
Long: "无需 Cloudflare 账户、API Token 或域名,一条命令生成临时公网地址。\n适合临时分享、快速调试,Ctrl+C 退出后域名自动失效。",
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
if quickAuth != "" {
|
|
user, pass, err := parseAuth(quickAuth)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return daemon.StartQuickWithAuth(args[0], user, pass)
|
|
}
|
|
return daemon.StartQuick(args[0])
|
|
},
|
|
}
|
|
|
|
// parseAuth 解析 "用户名:密码" 格式,密码部分允许包含冒号
|
|
func parseAuth(s string) (string, string, error) {
|
|
idx := strings.Index(s, ":")
|
|
if idx < 0 {
|
|
return "", "", fmt.Errorf("--auth 格式错误,应为 用户名:密码")
|
|
}
|
|
user := s[:idx]
|
|
pass := s[idx+1:]
|
|
if user == "" || pass == "" {
|
|
return "", "", fmt.Errorf("--auth 用户名和密码不能为空")
|
|
}
|
|
return user, pass, nil
|
|
}
|