支持Redis的Tls连接

This commit is contained in:
kony
2025-03-21 18:47:24 +08:00
parent d99e242011
commit 02ee43cf61
5 changed files with 35 additions and 12 deletions

View File

@@ -12,6 +12,7 @@ var (
Arg_tun_local_addr string Arg_tun_local_addr string
Arg_tun_remote_addr string Arg_tun_remote_addr string
Arg_redis_addr string Arg_redis_addr string
Arg_redis_tls_addr string
Arg_redis_pass string Arg_redis_pass string
Arg_redis_id int Arg_redis_id int
Arg_tun_key string 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_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_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.StringVar(&Arg_redis_pass, "redis_pass", "", "Redis服务密码, 例如: 123456")
flag.IntVar(&Arg_redis_id, "redis_id", 15, "Redis服务可使用的表ID") flag.IntVar(&Arg_redis_id, "redis_id", 15, "Redis服务可使用的表ID")

View File

@@ -87,7 +87,7 @@ func GetConfig() ConfigInfo {
} }
func GetAddr() string { func GetAddr() string {
return GetConfig().Redis.Addr return GetConfig().Redis.TlsAddr
} }
func GetPasswd() string { func GetPasswd() string {

View File

@@ -28,7 +28,7 @@ func main2() {
// 第三方集成, 关注以下代码即可 // 第三方集成, 关注以下代码即可
go func() { 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) log.Println(err)
return return
} }

View File

@@ -1,6 +1,7 @@
package pro package pro
import ( import (
"crypto/tls"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@@ -22,7 +23,7 @@ var (
m_md5_tun_key string 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("初始化配置中") utils.Log().Debug("初始化配置中")
for { for {
if err := config.Init(); err != nil { 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("初始化配置完成") utils.Log().Debug("初始化配置完成")
if m_cli_redis_addr == "" { var redis_addr string
m_cli_redis_addr = config.GetAddr() var redis_pass string
m_cli_redis_pass = config.GetPasswd() var redis_id int
m_cli_redis_id = config.GetID() 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{ m_redis_db = redis.NewClient(&redis.Options{
Addr: m_cli_redis_addr, Addr: redis_addr,
Password: m_cli_redis_pass, Password: redis_pass,
DB: m_cli_redis_id, DB: redis_id,
//MaxRetries: 99,
DialTimeout: 5 * time.Second, DialTimeout: 5 * time.Second,
ReadTimeout: 5 * time.Second, ReadTimeout: 5 * time.Second,
WriteTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second,
TLSConfig: tlsConfig,
}) })
if m_redis_db == nil { if m_redis_db == nil {
return errors.New("Redis失败, 请重启程序") return errors.New("Redis失败, 请重启程序")

View File

@@ -91,7 +91,7 @@ func GetMainUI(myWindow *fyne.Window) *fyne.Container {
m_button_start.Resize(fyne.NewSize(100, 40)) m_button_start.Resize(fyne.NewSize(100, 40))
m_button_start.Disable() m_button_start.Disable()
go func() { 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()) UILogPrintF(err.Error())
return return
} }