From 7ecf955eb7a33a6a3c62bf356dc2f9771c29473a Mon Sep 17 00:00:00 2001 From: Chang lue Tsen Date: Thu, 4 Sep 2025 09:26:50 -0400 Subject: [PATCH] fix(server): encode ServerKey in base64 and update last reported time for nodes --- internal/logic/server/getServerConfigLogic.go | 3 ++- internal/logic/server/serverPushStatusLogic.go | 10 ++++++++++ internal/logic/server/serverPushUserTrafficLogic.go | 11 +++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/internal/logic/server/getServerConfigLogic.go b/internal/logic/server/getServerConfigLogic.go index 499d8d8..7cfe596 100644 --- a/internal/logic/server/getServerConfigLogic.go +++ b/internal/logic/server/getServerConfigLogic.go @@ -1,6 +1,7 @@ package server import ( + "encoding/base64" "encoding/json" "fmt" @@ -102,7 +103,7 @@ func (l *GetServerConfigLogic) compatible(config node.Protocol) map[string]inter result = ShadowsocksNode{ Port: config.Port, Cipher: config.Cipher, - ServerKey: config.ServerKey, + ServerKey: base64.StdEncoding.EncodeToString([]byte(config.ServerKey)), } case Vless: result = VlessNode{ diff --git a/internal/logic/server/serverPushStatusLogic.go b/internal/logic/server/serverPushStatusLogic.go index c711011..d7c0bad 100644 --- a/internal/logic/server/serverPushStatusLogic.go +++ b/internal/logic/server/serverPushStatusLogic.go @@ -3,6 +3,7 @@ package server import ( "context" "errors" + "time" "github.com/perfect-panel/server/internal/model/node" "github.com/perfect-panel/server/internal/svc" @@ -42,5 +43,14 @@ func (l *ServerPushStatusLogic) ServerPushStatus(req *types.ServerPushStatusRequ l.Errorw("[ServerPushStatus] UpdateNodeStatus error", logger.Field("error", err)) return errors.New("update node status failed") } + now := time.Now() + serverInfo.LastReportedAt = &now + + err = l.svcCtx.NodeModel.UpdateServer(l.ctx, serverInfo) + if err != nil { + l.Errorw("[ServerPushStatus] UpdateServer error", logger.Field("error", err)) + return nil + } + return nil } diff --git a/internal/logic/server/serverPushUserTrafficLogic.go b/internal/logic/server/serverPushUserTrafficLogic.go index 4f73691..d94e827 100644 --- a/internal/logic/server/serverPushUserTrafficLogic.go +++ b/internal/logic/server/serverPushUserTrafficLogic.go @@ -3,6 +3,7 @@ package server import ( "context" "encoding/json" + "time" "github.com/hibiken/asynq" "github.com/perfect-panel/server/internal/svc" @@ -51,5 +52,15 @@ func (l *ServerPushUserTrafficLogic) ServerPushUserTraffic(req *types.ServerPush } else { l.Infow("[ServerPushUserTraffic] Push traffic task success", logger.Field("task", t), logger.Field("info", info)) } + + // Update server last reported time + now := time.Now() + serverInfo.LastReportedAt = &now + + err = l.svcCtx.NodeModel.UpdateServer(l.ctx, serverInfo) + if err != nil { + l.Errorw("[ServerPushUserTraffic] UpdateServer error", logger.Field("error", err)) + return nil + } return nil }