From 1dd6b306ae4515fa6b053e39ce5ef9a54c9bc2e6 Mon Sep 17 00:00:00 2001 From: fuzhongyun <15339891972@163.com> Date: Fri, 27 Mar 2026 18:55:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/server/router/router.go | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/internal/server/router/router.go b/internal/server/router/router.go index a088f4a..5cc3ecb 100644 --- a/internal/server/router/router.go +++ b/internal/server/router/router.go @@ -6,6 +6,8 @@ import ( "ai_scheduler/internal/services" "encoding/json" "fmt" + "io" + "net/http" "strings" "sync" "time" @@ -101,6 +103,51 @@ func SetupRoutes(app *fiber.App, ChatService *services.ChatService, sessionServi // 外部系统支持 r.Post("/support/address/ingest/:platform", supportService.AddressIngest) // 通用收获地址提取 + + // 转发Python服务 + r.All("/proxy/fingerprint", forwardToPythonService) +} + +func forwardToPythonService(c *fiber.Ctx) error { + targetURL := "http://192.168.6.115:10086/fingerprint" + + req, err := http.NewRequest(c.Method(), targetURL, c.Context().Request.BodyStream()) + if err != nil { + return c.Status(fiber.StatusInternalServerError).SendString(err.Error()) + } + + c.Request().Header.VisitAll(func(key, value []byte) { + req.Header.Add(string(key), string(value)) + }) + + if c.Context().QueryArgs().Len() > 0 { + q := req.URL.Query() + c.Context().QueryArgs().VisitAll(func(key, value []byte) { + q.Add(string(key), string(value)) + }) + req.URL.RawQuery = q.Encode() + } + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return c.Status(fiber.StatusBadGateway).SendString(err.Error()) + } + defer resp.Body.Close() + + for key, values := range resp.Header { + for _, value := range values { + c.Set(key, value) + } + } + + c.Status(resp.StatusCode) + body, err := io.ReadAll(resp.Body) + if err != nil { + return c.Status(fiber.StatusInternalServerError).SendString(err.Error()) + } + + return c.Send(body) } func routerSocket(app *fiber.App, chatService *services.ChatService) {