端口分配时加锁;网关上线后保存平台恢复的节点与授权数据;现在新节点连接后会按需向平台报告更新

This commit is contained in:
2025-05-27 16:03:00 +08:00
parent c2dcae7af5
commit 48dba2c0c3
11 changed files with 137 additions and 135 deletions

View File

@@ -40,7 +40,7 @@ func Start() error {
// 注册节点
slog.Debug("注册节点...")
id, host, err := report.Online(geo.Prov, geo.City, geo.Isp)
id, host, err := report.Online()
if err != nil {
return fmt.Errorf("注册节点失败: %w", err)
}
@@ -63,13 +63,6 @@ func Start() error {
}
}
// 下线节点
slog.Debug("下线节点...")
err = report.Offline()
if err != nil {
slog.Error("下线节点失败", "err", err)
}
return ctx.Err()
}

10
edge/env/env.go vendored
View File

@@ -9,15 +9,13 @@ import (
var Mode = "dev"
var Name = "dev-edge"
var EndpointOnline = "https://api.lanhuip.com/api/edge/online"
var EndpointOffline = "https://api.lanhuip.com/api/edge/offline"
var EndpointOnline = "https://api.lanhuip.com/api/edge/assign"
func Init() error {
var env = flag.String("e", "dev", "环境变量,可选值 dev 或 prod")
var name = flag.String("n", "", "节点唯一标识")
var online = flag.String("online", "", "服务注册地址")
var offline = flag.String("offline", "", "服务注销地址")
var online = flag.String("online", "", "服务发现地址")
flag.Parse()
@@ -39,10 +37,6 @@ func Init() error {
EndpointOnline = *online
}
if offline != nil && *offline != "" {
EndpointOffline = *offline
}
if Mode == "dev" {
slog.SetLogLoggerLevel(slog.LevelDebug)
} else {

View File

@@ -11,22 +11,8 @@ import (
"strings"
)
func Online(prov, city, isp string) (id int32, host string, err error) {
var ispInt = 0
switch isp {
case "电信":
ispInt = 1
case "联通":
ispInt = 2
case "移动":
ispInt = 3
}
func Online() (id int32, host string, err error) {
bytes, err := json.Marshal(map[string]any{
"prov": prov,
"city": city,
"isp": ispInt,
"name": env.Name,
"version": core.Version,
})
@@ -39,7 +25,10 @@ func Online(prov, city, isp string) (id int32, host string, err error) {
if err != nil {
return 0, "", fmt.Errorf("执行请求失败: %w", err)
}
defer resp.Body.Close()
defer func(Body io.ReadCloser) {
_ = Body.Close()
}(resp.Body)
if resp.StatusCode != http.StatusOK {
return 0, "", errors.New("状态码: " + resp.Status)
}
@@ -62,24 +51,3 @@ func Online(prov, city, isp string) (id int32, host string, err error) {
return respBody.Id, respBody.Host, nil
}
func Offline() error {
var bytes, err = json.Marshal(map[string]any{
"name": env.Name,
})
if err != nil {
return err
}
var body = strings.NewReader(string(bytes))
resp, err := http.Post(env.EndpointOffline, "application/json", body)
if err != nil {
return fmt.Errorf("执行请求失败: %w", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return errors.New("状态码: " + resp.Status)
}
return nil
}