From 913c3da79b338caa63ce9ee2acb7f96ce78bf0d0 Mon Sep 17 00:00:00 2001 From: Akkia Date: Wed, 13 Apr 2022 12:27:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=80=9A=E8=BF=87=E4=BC=A0=E9=80=92?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AFCookie=E7=9A=84=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=BD=BFweb=E7=BB=88=E7=AB=AF=E5=85=BC=E5=AE=B9=E8=A2=ABCloudf?= =?UTF-8?q?lare=20Access=E4=BF=9D=E6=8A=A4=E7=9A=84=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/agent/main.go | 6 ++++++ cmd/dashboard/controller/common_page.go | 5 +++-- model/monitor.go | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 59d8721..0476b0b 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -433,6 +433,12 @@ func handleTerminalTask(task *pb.Task) { } header := http.Header{} header.Add("Secret", agentCliParam.ClientSecret) + // 目前只兼容Cloudflare验证 + // 后续可能需要兼容更多的Cookie验证情况 + if terminal.Cookie != "" { + cfCookie := fmt.Sprintf("CF_Authorization=%s", terminal.Cookie) + header.Add("Cookie", cfCookie) + } conn, _, err := websocket.DefaultDialer.Dial(fmt.Sprintf("%s://%s/terminal/%s", protocol, terminal.Host, terminal.Session), header) if err != nil { println("Terminal 连接失败:", err) diff --git a/cmd/dashboard/controller/common_page.go b/cmd/dashboard/controller/common_page.go index 8eb9692..470c720 100644 --- a/cmd/dashboard/controller/common_page.go +++ b/cmd/dashboard/controller/common_page.go @@ -275,13 +275,14 @@ func (cp *commonPage) terminal(c *gin.Context) { }, true) return } - + var cloudflareCookies string + cloudflareCookies, _ = c.Cookie("CF_Authorization") terminalData, _ := utils.Json.Marshal(&model.TerminalTask{ Host: terminal.host, UseSSL: terminal.useSSL, Session: terminalID, + Cookie: cloudflareCookies, }) - if err := server.TaskStream.Send(&proto.Task{ Type: model.TaskTypeTerminal, Data: string(terminalData), diff --git a/model/monitor.go b/model/monitor.go index cdabccd..309de37 100644 --- a/model/monitor.go +++ b/model/monitor.go @@ -27,6 +27,8 @@ type TerminalTask struct { UseSSL bool `json:"use_ssl,omitempty"` // 会话标识 Session string `json:"session,omitempty"` + // Agent在连接Server时需要的额外Cookie信息 + Cookie string `json:"cookie,omitempty"` } const (