package beego import ( "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/cost_structured" "net/http" "os" "strconv" "github.com/beego/beego/v2/server/web/context" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/middleware" "github.com/beego/beego/v2/server/web" "github.com/linmadan/egglib-go/web/beego/filters" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" _ "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/routers" ) func init() { web.BConfig.AppName = "project" web.BConfig.CopyRequestBody = true web.BConfig.RunMode = "dev" web.BConfig.Listen.HTTPPort = constant.HTTP_PORT web.BConfig.Listen.EnableAdmin = false web.BConfig.WebConfig.CommentRouterPath = "/pkg/port/beego/routers" if os.Getenv("RUN_MODE") != "" { web.BConfig.RunMode = os.Getenv("RUN_MODE") } if os.Getenv("HTTP_PORT") != "" { portStr := os.Getenv("HTTP_PORT") if port, err := strconv.Atoi(portStr); err == nil { web.BConfig.Listen.HTTPPort = port } } //https支持 web.BConfig.Listen.EnableHTTPS = true web.BConfig.Listen.HTTPSPort = 443 web.BConfig.Listen.HTTPSCertFile = "./config/fjmaimaimai.com_bundle.crt" web.BConfig.Listen.HTTPSKeyFile = "./config/fjmaimaimai.com.key" if os.Getenv("HTTPS_PORT") != "" { portStr := os.Getenv("HTTPS_PORT") if port, err := strconv.Atoi(portStr); err == nil { web.BConfig.Listen.HTTPSPort = port } } filters.SecureKeyMap["token"] = "x-mmm-accesstoken" web.InsertFilter("/*", web.BeforeRouter, AllowCors()) web.InsertFilter("/*", web.BeforeRouter, filters.CreateRequstLogFilter(log.Logger)) web.InsertFilter("/v1/background/*", web.BeforeExec, middleware.CheckAccessToken()) web.InsertFilter("/v1/web/*", web.BeforeExec, middleware.CheckAccessToken()) web.InsertFilter("/v1/app/*", web.BeforeExec, middleware.CheckAccessToken()) web.InsertFilter("/v1/user/*", web.BeforeExec, middleware.CheckAccessToken()) web.InsertFilter("/*", web.AfterExec, filters.CreateResponseLogFilter(log.Logger), web.WithReturnOnOutput(false)) //web.InsertFilter("/v1/app11/*", web.BeforeExec, filters.SecureHandler( // filters.WithEnableCheckTimestamp(false), // filters.WithOnInvalidRequest(func(ctx *context.Context) { // headerData, _ := json.Marshal(ctx.Input.Context.Request.Header) // log.Logger.Info("签名验证失败:" + string(headerData)) // }), //)) web.InsertFilter("/v1/common/user/area/*", web.BeforeRouter, middleware.RedirectInternalService("/v1/common/user", allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}))) web.InsertFilter("/v1/manufacture/*", web.BeforeRouter, middleware.CheckAccessToken()) web.InsertFilter("/v1/manufacture/*", web.BeforeRouter, middleware.RedirectInternalService("/v1/manufacture", allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(domain.Operator{}))) web.InsertFilter("/v1/cost/*", web.BeforeRouter, middleware.CheckAccessToken()) web.InsertFilter("/v1/cost/*", web.BeforeRouter, middleware.RedirectInternalService("/v1/cost", cost_structured.NewHttpLibCostStructured(domain.Operator{}))) } func AllowCors() func(ctx *context.Context) { return func(ctx *context.Context) { ctx.Output.Header("Access-Control-Allow-Methods", "OPTIONS,DELETE,POST,GET,PUT,PATCH") ctx.Output.Header("Access-Control-Allow-Headers", "Content-Type,X-Mmm-Accesstoken,X-Mmm-Devicetype,X-Mmm-Sign,X-Mmm-Timestamp,X-Mmm-Uuid,X-Mmm-Version,x-mmm-appname,*") ctx.Output.Header("Access-Control-Allow-Credentials", "true") ctx.Output.Header("Access-Control-Allow-Origin", "*") //origin if ctx.Input.Method() == http.MethodOptions { // options请求,返回200 ctx.Output.SetStatus(http.StatusOK) _ = ctx.Output.Body([]byte("options support")) } } }