diff --git a/.beagle.yml b/.beagle.yml index d163ece709bf03ca4c2c4bb35b2d402015f133ed..35ec4bf0561b28478b7343bda1e3374993625fe3 100644 --- a/.beagle.yml +++ b/.beagle.yml @@ -2,22 +2,21 @@ workspace: path: src/gitlab.wodcloud.com/apaas/apaas-meshproxy clone: git: - image: registry.cn-qingdao.aliyuncs.com/wod-devops/git:1.5.0 + image: registry.cn-qingdao.aliyuncs.com/wod/devops-git:1.0 dns: 223.5.5.5 pipeline: go: - image: registry.cn-qingdao.aliyuncs.com/wod-devops/go:1.13.1-stretch + image: registry.cn-qingdao.aliyuncs.com/wod/devops-go:1.14.4-stretch dns: 223.5.5.5 environment: - GOPROXY=https://goproxy.cn,direct main: src binary: proxy volumes: -# - /cache/gopath/pkg:/drone/pkg - /data/cache/gopath/pkg:/drone/pkg docker-dev: dns: 223.5.5.5 - image: registry.cn-qingdao.aliyuncs.com/wod-devops/docker:1.0 + image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 volumes: - /var/run/docker.sock:/var/run/docker.sock base: registry.cn-qingdao.aliyuncs.com/wod/alpine-glibc:3.8 @@ -31,10 +30,10 @@ pipeline: - source: REGISTRY_PASSWORD_ALIYUN target: REGISTRY_PASSWORD when: - branch: [dev] + branch: [ dev ] docker-master: dns: 223.5.5.5 - image: registry.cn-qingdao.aliyuncs.com/wod-devops/docker:1.0 + image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 volumes: - /var/run/docker.sock:/var/run/docker.sock base: registry.cn-qingdao.aliyuncs.com/wod/alpine-glibc:3.8 @@ -47,20 +46,20 @@ pipeline: - source: REGISTRY_PASSWORD_ALIYUN target: REGISTRY_PASSWORD when: - branch: [master] -# docker-latest: -# image: registry.cn-qingdao.aliyuncs.com/wod-devops/docker:1.0 -# volumes: -# - /var/run/docker.sock:/var/run/docker.sock -# base: registry.cn-qingdao.aliyuncs.com/wod/alpine-glibc:3.8 -# repo: wod/apaas-meshproxy -# version: v3 -# registry: hub.wodcloud.com -# secrets: -# - source: REGISTRY_USER -# target: REGISTRY_USER -# - source: REGISTRY_PASSWORD -# target: REGISTRY_PASSWORD -# when: -# branch: [master] - + branch: [ master ] + docker-release: + dns: 223.5.5.5 + image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + base: registry.cn-qingdao.aliyuncs.com/wod/alpine-glibc:3.8 + repo: wod/apaas-meshproxy + version: "v3.0" + registry: registry.cn-qingdao.aliyuncs.com + secrets: + - source: REGISTRY_USER_ALIYUN + target: REGISTRY_USER + - source: REGISTRY_PASSWORD_ALIYUN + target: REGISTRY_PASSWORD + when: + branch: [ master ] \ No newline at end of file diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index a9c9d21e250e0b2f3441ab81bd7d9f6eedee73ee..b27e12f243327a95f5347846c886615d7d065784 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -8,11 +8,11 @@ import ( "errors" "fmt" "github.com/gin-gonic/gin" + "github.com/spf13/cast" "github.com/vulcand/oxy/forward" "github.com/vulcand/oxy/testutils" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/service" - "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools" "io/ioutil" "log" "net/http" @@ -165,7 +165,24 @@ func Proxy(c *gin.Context) { reqURL.RawQuery = c.Request.URL.RawQuery } else { if c.Request.URL.RawQuery != "" { - reqURL.RawQuery = "&" + c.Request.URL.RawQuery + oldQ := c.Request.URL.Query() + newQ := c.Request.URL.Query() + for k, v := range newQ { + if len(v) > 1 { + for kk, vv := range v { + if kk == 0 { + oldQ.Set(k, vv) + } else { + oldQ.Add(k, vv) + } + } + } else if len(v) == 1 { + oldQ.Set(k, v[0]) + } else { + oldQ.Del(k) + } + } + reqURL.RawQuery = oldQ.Encode() } } @@ -174,6 +191,10 @@ func Proxy(c *gin.Context) { c.Request.RequestURI = reqURL.RequestURI() fmt.Println("c.Request-------", c.Request) c.Request.Host = getHost(proxyData.ReqUrl) + //发送服务ID和用户ID + c.Request.Header.Set("applyuserid", proxyData.ApplyUserId) + c.Request.Header.Set("applyserviceid", cast.ToString(proxyData.ServiceId)) + fmt.Println("proxyData.RealUrl-------", proxyData.ReqUrl) forwarder.ServeHTTP(c.Writer, c.Request) } @@ -248,39 +269,44 @@ func getHost(httpurl string) (path string) { func HealthCheck(c *gin.Context) { res := model.WebRes{} - apiId := c.Param("apiid") - proxyData, err := service.GetReqPath(apiId) - if err != nil { - res.Data = err.Error() - c.JSON(500, res) - return - } - var requstMethod string - //获取真实地址1GET 2POST 3 PUT 4 DELETE - if proxyData.ReqType == 1 { - requstMethod = "GET" - } else if proxyData.ReqType == 2 { - requstMethod = "POST" - } else if proxyData.ReqType == 3 { - requstMethod = "PUT" - } else if proxyData.ReqType == 4 { - requstMethod = "DELETE" - } - header := make(map[string]string, 0) - resp, err := tools.ProxySendRes(c.Request, requstMethod, proxyData.ReqUrl, "", header) - if err != nil { - res.Data = err.Error() - c.JSON(500, res) - return - } - fmt.Println(resp) - if resp.StatusCode < 400 { - res.Data = "success" - } else { - res.Data = "fail" - } res.Success = 1 - //请求真实地址根据返回状态码判断是否服务可用 + res.Data = "success" c.JSON(200, res) - return + + // + //apiId := c.Param("apiid") + //proxyData, err := service.GetReqPath(apiId) + //if err != nil { + // res.Data = err.Error() + // c.JSON(500, res) + // return + //} + //var requstMethod string + ////获取真实地址1GET 2POST 3 PUT 4 DELETE + //if proxyData.ReqType == 1 { + // requstMethod = "GET" + //} else if proxyData.ReqType == 2 { + // requstMethod = "POST" + //} else if proxyData.ReqType == 3 { + // requstMethod = "PUT" + //} else if proxyData.ReqType == 4 { + // requstMethod = "DELETE" + //} + //header := make(map[string]string, 0) + //resp, err := tools.ProxySendRes(c.Request, requstMethod, proxyData.ReqUrl, "", header) + //if err != nil { + // res.Data = err.Error() + // c.JSON(500, res) + // return + //} + //fmt.Println(resp) + //if resp.StatusCode < 400 { + // res.Data = "success" + //} else { + // res.Data = "fail" + //} + //res.Success = 1 + ////请求真实地址根据返回状态码判断是否服务可用 + //c.JSON(200, res) + //return } diff --git a/src/router/middleware/header/header.go b/src/router/middleware/header/header.go index 571354604fe45d6f97dab08f5e9b486c3fe6b0ae..050e32bfeab8e6f1410d4a1f1e1c3645da6456d9 100644 --- a/src/router/middleware/header/header.go +++ b/src/router/middleware/header/header.go @@ -50,7 +50,7 @@ func Options(c *gin.Context) { // and resource access headers. func Secure(c *gin.Context) { c.Header("Access-Control-Allow-Origin", "*") - c.Header("X-Frame-Options", "DENY") + c.Header("X-Frame-Options", "ALLOWALL") c.Header("X-Content-Type-Options", "nosniff") c.Header("X-XSS-Protection", "1; mode=block") if c.Request.TLS != nil { diff --git a/src/service/field.go b/src/service/field.go index a849405e5db3f16e7909f28ebe7e57f521abce24..5d3fd74c2a97eef15dee98b9fea36a8dfb78d126 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -8,7 +8,6 @@ package service import ( - "encoding/json" "errors" "fmt" "github.com/spf13/cast" @@ -280,16 +279,20 @@ func ApplyCallCounts(proxyData model.ProxyData) (err error) { //过滤返回字段 func FiledFilter(proxyData model.ProxyData, respbody []byte) []byte { - var fields []request.ServiceField - fields = dataconvertutil.GetResponseField(proxyData.ResFields) - _, arrmodel := dataconvertutil.ConvertJson(fields) - realData := make(map[string]interface{}) - json.Unmarshal(respbody, &realData) - if arrmodel != nil && len(arrmodel) != 0 && len(realData) != 0 { - bytes, _ := json.Marshal(Change(arrmodel[0], realData)) - return bytes - } return respbody + + //var fields []request.ServiceField + //fields = dataconvertutil.GetResponseField(proxyData.ResFields) + //_, arrmodel := dataconvertutil.ConvertJson(fields) + //realData := make(map[string]interface{}) + //if err := json.Unmarshal(respbody, &realData); err != nil { + // return respbody + //} + //if arrmodel != nil && len(arrmodel) != 0 && len(realData) != 0 { + // bytes, _ := json.Marshal(Change(arrmodel[0], realData)) + // return bytes + //} + //return respbody } //返回申请字段