From f78d2a6f72cee61d10b0b2a1a109bd63a3d3fdc3 Mon Sep 17 00:00:00 2001 From: gaoshiyao Date: Wed, 24 Jun 2020 19:50:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E7=A9=BA=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/handler/proxyhandler.go | 33 ++++++++++++++++++++++++++------- src/model/response.go | 1 + src/service/field.go | 3 ++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index a2ff54b..7e7b7d2 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -70,16 +70,35 @@ func Proxy(c *gin.Context) { Return(res) return nil })) - query := "" - if proxyData.Data_service_type1 == 2 { - query = "?f=json" - } - c.Request.URL = testutils.ParseURI(proxyData.RealUrl + query) - c.Request.RequestURI = proxyData.RealUrl + query - c.Request.Host = getHost(proxyData.RealUrl + query) + c.Request.URL = testutils.ParseURI(getProxyURL(proxyData.RealUrl, c.Request)) + c.Request.RequestURI = getRequestURI(c.Request) + c.Request.Host = getHost(proxyData.RealUrl) f.ServeHTTP(c.Writer, c.Request) } +func getProxyURL(realPath string, req *http.Request) string { + rawQuery := req.URL.RawQuery + var result = "" + if rawQuery == "" { + result = realPath + "?f=json" + } else { + result = realPath + "?" + rawQuery + } + return result +} + +func getRequestURI(req *http.Request) string { + path := req.URL.Path + rawQuery := req.URL.RawQuery + var result = "" + if rawQuery == "" { + result = path + } else { + result = path + "?" + rawQuery + } + return result +} + func Return(res interface{}) { var b []byte diff --git a/src/model/response.go b/src/model/response.go index 8061932..b1c6160 100644 --- a/src/model/response.go +++ b/src/model/response.go @@ -10,6 +10,7 @@ type ProxyData struct { Service_id int `json:"service_id" xorm:"service_id"` User_id string `json:"user_id" xorm:"user_id"` Data_service_type1 int `json:"data_service_type1" xorm:"data_service_type1"` + Name string `json:"name"` } type WebRes struct { diff --git a/src/service/field.go b/src/service/field.go index f97117d..9753801 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -386,11 +386,12 @@ func GetRealPath(applyId string) (res model.ProxyData, err error) { } has, err := db. Select(`service_apply.res_fields as res_fields,service.req_url as req_url,service_request_spcs.count as count,service_safe_config.sensituve_word as sensituve_word -,service_request_spcs.sensitive_count as sensitive_count,service_apply.service_id as service_id,service_apply.id as apply_id,service_apply.user_id as user_id,service.data_service_type1`). +,service_request_spcs.sensitive_count as sensitive_count,service_apply.service_id as service_id,service_apply.id as apply_id,service_apply.user_id as user_id,service.data_service_type1,domains.name`). Table(`service`). Join(`inner`, `service_apply`, `service_apply.service_id = service.id`). Join(`left`, `service_request_spcs`, `service_request_spcs.id = service_apply.request_spcs_id`). Join(`left`, `service_safe_config`, `service_apply.service_id = service_safe_config.service_id`). + Join("inner", "domains", "domains.id = service.data_service_type1"). Where(`service_apply.uuid=?`, applyId).Get(&res) if !has { err = errors.New(`未找到发布的服务!`) -- 2.26.0