端口分配时加锁;网关上线后保存平台恢复的节点与授权数据;现在新节点连接后会按需向平台报告更新
This commit is contained in:
@@ -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
10
edge/env/env.go
vendored
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user