diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index 23d968913eab8cbf8de4085edd79f7dedda7096d..16965096ac67380b86a876e9d2a5b1a920d10b8c 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -11,6 +11,7 @@ import ( "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" "net/http" "strconv" @@ -174,3 +175,41 @@ func getHost(url string) (path string) { } return } + +func HealthCheck(c *gin.Context) { + res := model.WebRes{} + proxyData, err := service.GetReqPath() + 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/main.go b/src/main.go index 8d0a87de8df613cf513feb65fda0be832e52c69a..a70a614496fdef4d6612aa13f24885156f5cda90 100644 --- a/src/main.go +++ b/src/main.go @@ -18,7 +18,7 @@ import ( var ( argPort = pflag.Int("port", 8011, "") argPrefix = pflag.String("prefix", "/bgmesh/fiddler", "") - meshId = pflag.String("meshId", "", "") + meshId = pflag.String("meshId", "149", "") redisUrl = pflag.String("redisUrl", "redis://apaas-redis.apaas-v3:6379", "") redisTag = pflag.String("redisTag", "apaas-mesh-proxy", "") confPath = pflag.String("confPath", "/app/config/proxy.json", "") diff --git a/src/model/tables/service.go b/src/model/tables/service.go new file mode 100644 index 0000000000000000000000000000000000000000..c990e330c3fced454fa7ebc86fc9cd0069040082 --- /dev/null +++ b/src/model/tables/service.go @@ -0,0 +1,8 @@ +package tables + +type Service struct { + Id int `json:"id"xorm:"pk"` + ReqUrl string `json:"req_url"` + ReqType int `json:"req_type"` + //ReqType string `json:"req_type"` +} diff --git a/src/router/router.go b/src/router/router.go index d2780bb981963e99ab60e7f12013ef0897a2cf79..61f498a3f821e0d1df13b0e022880b0ac61d862a 100644 --- a/src/router/router.go +++ b/src/router/router.go @@ -32,8 +32,8 @@ func Load(middleware ...gin.HandlerFunc) http.Handler { e.Use(middleware...) root := e.Group(fmt.Sprintf("%s/%s", config.Prefix, config.MeshId)) { - root.Any("/:applyId", handler.Proxy) - root.GET("/:applyId/health", handler.Proxy) + root.GET("/health", handler.HealthCheck) + root.Any("/service/:applyId", handler.Proxy) } return e } diff --git a/src/service/field.go b/src/service/field.go index cbd1e445d86e033cf3d447d5ddf9635b01ef5331..a4480cf134828b872a9a0c1bd61a804c3014400a 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -16,6 +16,7 @@ import ( "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/dao" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model/request" + "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model/tables" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools" "gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools/dataconvertutil" "strconv" @@ -444,3 +445,14 @@ func GetRealPath(applyId string) (res model.ProxyData, err error) { } return } + +// 获取真实地址 +func GetReqPath() (res tables.Service, err error) { + db, err := client.GetConnect() + if err != nil { + return + } + res = tables.Service{} + _, err = db.ID(config.MeshId).Get(&res) + return +}