From 02ee43cf614e5ad32b2069d62efe8cc8d2bbc0a7 Mon Sep 17 00:00:00 2001 From: kony <2312708932@qq.com> Date: Fri, 21 Mar 2025 18:47:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81Redis=E7=9A=84Tls=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/args.go | 2 ++ config/config.go | 2 +- main_cmd.go | 2 +- pro/comm.go | 39 ++++++++++++++++++++++++++++++--------- ui2/ui.go | 2 +- 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/config/args.go b/config/args.go index 5f12084..fa2a0e4 100644 --- a/config/args.go +++ b/config/args.go @@ -12,6 +12,7 @@ var ( Arg_tun_local_addr string Arg_tun_remote_addr string Arg_redis_addr string + Arg_redis_tls_addr string Arg_redis_pass string Arg_redis_id int Arg_tun_key string @@ -33,6 +34,7 @@ func Help() { flag.StringVar(&Arg_pprof_addr, "pprof_addr", "", "如果CPU/内存/网络异常, 可监测运行, 例如: 0.0.0.0:6060") flag.StringVar(&Arg_redis_addr, "redis_addr", "", "Redis服务地址端口, 例如: 1.2.3.4:6379") + flag.StringVar(&Arg_redis_tls_addr, "redis_tls_addr", "", "Redis服务TLS地址端口, 例如: 1.2.3.4:16378") flag.StringVar(&Arg_redis_pass, "redis_pass", "", "Redis服务密码, 例如: 123456") flag.IntVar(&Arg_redis_id, "redis_id", 15, "Redis服务可使用的表ID") diff --git a/config/config.go b/config/config.go index fdac89c..e25590d 100644 --- a/config/config.go +++ b/config/config.go @@ -87,7 +87,7 @@ func GetConfig() ConfigInfo { } func GetAddr() string { - return GetConfig().Redis.Addr + return GetConfig().Redis.TlsAddr } func GetPasswd() string { diff --git a/main_cmd.go b/main_cmd.go index e3fdde1..4eb5579 100644 --- a/main_cmd.go +++ b/main_cmd.go @@ -28,7 +28,7 @@ func main2() { // 第三方集成, 关注以下代码即可 go func() { - if err := pro.Init(config.Arg_redis_addr, config.Arg_redis_pass, config.Arg_redis_id); err != nil { + if err := pro.Init(); err != nil { log.Println(err) return } diff --git a/pro/comm.go b/pro/comm.go index 039a34f..742c0e9 100644 --- a/pro/comm.go +++ b/pro/comm.go @@ -1,6 +1,7 @@ package pro import ( + "crypto/tls" "encoding/json" "errors" "fmt" @@ -22,7 +23,7 @@ var ( m_md5_tun_key string ) -func Init(m_cli_redis_addr, m_cli_redis_pass string, m_cli_redis_id int) error { +func Init() error { utils.Log().Debug("初始化配置中") for { if err := config.Init(); err != nil { @@ -34,20 +35,40 @@ func Init(m_cli_redis_addr, m_cli_redis_pass string, m_cli_redis_id int) error { } utils.Log().Debug("初始化配置完成") - if m_cli_redis_addr == "" { - m_cli_redis_addr = config.GetAddr() - m_cli_redis_pass = config.GetPasswd() - m_cli_redis_id = config.GetID() + var redis_addr string + var redis_pass string + var redis_id int + tlsConfig := &tls.Config{ + InsecureSkipVerify: true, // 如果使用自签名证书,设置为true跳过证书验证(仅用于测试 + //Certificates: []tls.Certificate{cert}, + ClientAuth: tls.NoClientCert, // 验证模式:请求并验证客户端证书 + } + + if config.Arg_redis_addr == "" && config.Arg_redis_tls_addr == "" { + redis_addr = config.GetAddr() + redis_pass = config.GetPasswd() + redis_id = config.GetID() + + } else if config.Arg_redis_tls_addr != "" { + redis_addr = config.Arg_redis_tls_addr + redis_pass = config.Arg_redis_pass + redis_id = config.Arg_redis_id + + } else { + redis_addr = config.Arg_redis_addr + redis_pass = config.Arg_redis_pass + redis_id = config.Arg_redis_id + tlsConfig = nil } m_redis_db = redis.NewClient(&redis.Options{ - Addr: m_cli_redis_addr, - Password: m_cli_redis_pass, - DB: m_cli_redis_id, - //MaxRetries: 99, + Addr: redis_addr, + Password: redis_pass, + DB: redis_id, DialTimeout: 5 * time.Second, ReadTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second, + TLSConfig: tlsConfig, }) if m_redis_db == nil { return errors.New("Redis失败, 请重启程序") diff --git a/ui2/ui.go b/ui2/ui.go index a0563ff..f4bc19f 100644 --- a/ui2/ui.go +++ b/ui2/ui.go @@ -91,7 +91,7 @@ func GetMainUI(myWindow *fyne.Window) *fyne.Container { m_button_start.Resize(fyne.NewSize(100, 40)) m_button_start.Disable() go func() { - if err := pro.Init(config.Arg_redis_addr, config.Arg_redis_pass, config.Arg_redis_id); err != nil { + if err := pro.Init(); err != nil { UILogPrintF(err.Error()) return }