123 lines
2.7 KiB
Go
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)
|
|
}
|
|
}
|
|
*/
|