From 8c928a83217bb1a18cec36fb157be1e792550a66 Mon Sep 17 00:00:00 2001 From: luorijun Date: Mon, 26 May 2025 10:55:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E5=85=B3=E9=87=8D=E5=90=AF=E6=97=B6?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E6=9D=83=E9=99=90=E4=B8=8E=E5=88=86=E9=85=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ gateway/core/auth.go | 5 +++++ gateway/fwd/ctrl.go | 2 +- gateway/report/report.go | 8 ++++++-- gateway/web/handlers/auth.go | 7 ++----- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b35a56c..4865bc9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +## TODO + +- 连接断开时尽量由 + ## 开发相关 ### 目录结构 diff --git a/gateway/core/auth.go b/gateway/core/auth.go index 50b9fc3..bdf78bb 100644 --- a/gateway/core/auth.go +++ b/gateway/core/auth.go @@ -8,3 +8,8 @@ type Permit struct { Username *string `json:"username"` Password *string `json:"password"` } + +type PermitDef struct { + Id int32 `json:"id"` + Permit +} diff --git a/gateway/fwd/ctrl.go b/gateway/fwd/ctrl.go index 9476989..9e093dc 100644 --- a/gateway/fwd/ctrl.go +++ b/gateway/fwd/ctrl.go @@ -103,7 +103,7 @@ func processCtrlConn(_ctx context.Context, conn net.Conn) (err error) { // 读取命令 cmd, err := reader.ReadByte() - if errors.Is(err, syscall.WSAECONNRESET) { + if errors.Is(err, syscall.ECONNRESET) || errors.Is(err, syscall.WSAECONNRESET) { slog.Debug("节点重置了控制通道连接(WSAECONNRESET)") return nil } diff --git a/gateway/report/report.go b/gateway/report/report.go index e97e50c..c43ecbd 100644 --- a/gateway/report/report.go +++ b/gateway/report/report.go @@ -23,8 +23,9 @@ func Online(name string) (err error) { } var body struct { - Id int32 `json:"id"` - Secret string `json:"secret"` + Id int32 `json:"id"` + Secret string `json:"secret"` + Permits []core.PermitDef `json:"permits"` } err = json.Unmarshal([]byte(resp), &body) if err != nil { @@ -33,6 +34,9 @@ func Online(name string) (err error) { app.Id = body.Id app.PlatformSecret = body.Secret + for _, def := range body.Permits { + app.Permits.Store(def.Id, &def.Permit) + } return nil } diff --git a/gateway/web/handlers/auth.go b/gateway/web/handlers/auth.go index 40bc04e..e552ebb 100644 --- a/gateway/web/handlers/auth.go +++ b/gateway/web/handlers/auth.go @@ -6,10 +6,7 @@ import ( "proxy-server/gateway/core" ) -type PermitReq struct { - Id int32 `json:"id"` - core.Permit -} +type PermitReq []core.PermitDef func Permit(ctx *fiber.Ctx) (err error) { @@ -20,7 +17,7 @@ func Permit(ctx *fiber.Ctx) (err error) { } // 获取请求参数 - req, err := core.Decrypt[[]PermitReq](&sec, app.PlatformSecret) + req, err := core.Decrypt[PermitReq](&sec, app.PlatformSecret) if err != nil { return err }