88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"Go_Test/config"
|
|
)
|
|
|
|
// InitRedis 初始化Redis连接
|
|
func InitRedis() error {
|
|
var err error
|
|
RedisClient, err = config.NewRedisClient(0)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize Redis: %v", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 读取 Frp 服务器数量
|
|
func GetFrpServerNum() int {
|
|
keys, err := RedisClient.Keys(ctx, "Frp*").Result()
|
|
if err != nil {
|
|
fmt.Printf("获取frp前缀的key失败: %v\n", err)
|
|
return 0
|
|
}
|
|
return len(keys)
|
|
}
|
|
|
|
// 获取 redis 中的 frp 数据用 json 格式输出
|
|
func GetFrpServerInfo() {
|
|
// 获取所有 frp 服务器名称
|
|
keys, err := RedisClient.Keys(ctx, "Frp*").Result()
|
|
if err != nil {
|
|
fmt.Printf("获取frp前缀的key失败: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// 遍历所有 frp 服务器信息
|
|
for _, key := range keys {
|
|
// 存储在结构体中
|
|
frps, err := RedisClient.HGetAll(ctx, key).Result()
|
|
if err != nil {
|
|
fmt.Printf("获取frp前缀的key失败: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// 将 frp 信息添加到 servers 中
|
|
server := config.ServerConfigJson{
|
|
Host: frps["Host"],
|
|
Port: frps["Port"],
|
|
Token: frps["Token"],
|
|
}
|
|
servers[key] = server
|
|
}
|
|
}
|
|
|
|
// 获取所有 Frp 服务器信息
|
|
func GetAllFrpServerInfo() {
|
|
for i := 1; i <= GetFrpServerNum(); i++ {
|
|
key := fmt.Sprintf("Frp%d", i)
|
|
|
|
// 使用HGet获取hash中的字段值
|
|
host, err := RedisClient.HGet(ctx, key, "Host").Result()
|
|
if err != nil {
|
|
fmt.Printf("获取Frp%d Host失败: %v\n", i, err)
|
|
continue
|
|
}
|
|
|
|
port, err := RedisClient.HGet(ctx, key, "Port").Result()
|
|
if err != nil {
|
|
fmt.Printf("获取Frp%d Port失败: %v\n", i, err)
|
|
continue
|
|
}
|
|
|
|
token, err := RedisClient.HGet(ctx, key, "Token").Result()
|
|
if err != nil {
|
|
fmt.Printf("获取Frp%d Token失败: %v\n", i, err)
|
|
continue
|
|
}
|
|
|
|
// 将服务器信息添加到ServerConfig中
|
|
ServerConfig = append(ServerConfig, config.ServerConfig{
|
|
Host: host,
|
|
Port: port,
|
|
Token: token,
|
|
})
|
|
}
|
|
}
|