Frp/servers.go
2024-12-24 20:50:42 +08:00

123 lines
2.7 KiB
Go

package main
import (
"fmt"
"Go_Test/config"
"github.com/redis/go-redis/v9"
)
// InitRedis 初始化Redis连接
func InitRedis() error {
// 创建Redis客户端连接
RedisClient = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "123456",
DB: 0,
})
/*
// 测试连接
_, err := RedisClient.Ping(ctx).Result()
if err != nil {
return fmt.Errorf("redis连接失败: %v", err)
}
fmt.Println("redis连接成功")
*/
// 获取所有 Frp 服务器信息
GetAllFrpServerInfo()
GetFrpServerInfo()
// 显示所有服务器信息
//ShowServerInfo()
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,
})
}
}
/*
// 显示服务器信息
func ShowServerInfo() {
// 获取当前时间
currentTime := time.Now().Format("2006-01-02 15:04:05")
fmt.Println("当前时间:", currentTime)
// 打印服务器信息
for i := 1; i <= GetFrpServerNum(); i++ {
fmt.Printf("Frp %d Server Info: \n", i)
fmt.Printf("Host: %s\nPort: %s\nToken: %s\n", ServerConfig[i-1].Host, ServerConfig[i-1].Port, ServerConfig[i-1].Token)
}
}
*/