package middleware import ( "blazing/cool" "blazing/modules/base/config" "blazing/modules/config/service" "fmt" "net/http" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/util/gconv" "github.com/golang-jwt/jwt/v4" "github.com/lxzan/gws" ) func MiddlewareCORS(r *ghttp.Request) { r.Response.CORSDefault() corsOptions := r.Response.DefaultCORSOptions() corsOptions.AllowDomain = []string{"*", "localhost", "tauri.localhost"} if !r.Response.CORSAllowedOrigin(corsOptions) { r.Response.WriteStatus(http.StatusForbidden) return } r.Response.CORS(corsOptions) if r.Response.Request.Method == "OPTIONS" { r.Response.WriteStatus(http.StatusOK) return } // fmt.Println(r.Response.Header()) //g.Dump(r.Response.Server.SetConfig(gtt)) //r.Response.Header().Del("Server") // 删除Server头 // r.Response.Header().Set("Server", "blazing") r.Middleware.Next() } func init() { if config.Config.Middleware.Authority.Enable { g.Server().BindMiddleware("/admin/*/open/*", BaseAuthorityMiddlewareOpen) g.Server().BindMiddleware("/admin/*/comm/*", BaseAuthorityMiddlewareComm) g.Server().BindMiddleware("/admin/*", BaseAuthorityMiddleware) // g.Server().BindMiddleware("/*", AutoI18n) g.Server().BindMiddleware("/*", MiddlewareCORS) // g.Server().BindMiddleware("/getip", func(r *ghttp.Request) { // r.Response.Write(cool.Config.File.Domain + ":" + gconv.String(cool.Config.LoginPort)) // }) } if config.Config.Middleware.Log.Enable { g.Server().BindMiddleware("/admin/*", BaseLog) } g.Server().BindHandler("/server/*", func(r *ghttp.Request) { tt := new(ServerHandler) id := gconv.Uint16(r.URL.Query().Get("id")) tt.ServerList = service.NewServerService().GetServerID(id) tt.isinstall = gconv.Uint32(r.URL.Query().Get("isinstall")) upgrader := gws.NewUpgrader(tt, &gws.ServerOption{ Authorize: func(rt *http.Request, session gws.SessionStorage) bool { tokenString := r.URL.Query().Get("Authorization") token, err := jwt.ParseWithClaims(tokenString, &cool.Claims{}, func(token *jwt.Token) (interface{}, error) { return []byte(config.Config.Jwt.Secret), nil }) if err != nil { return false } if !token.Valid { return false } admin := token.Claims.(*cool.Claims) if admin.UserId != 10001 { return false } // var name = r.URL.Query().Get("name") // if name == "" { // return false // } // t, _ := service.NewBaseSysUserService().Person(admin.UserID) //Loger.Debug(context.TODO(), t.Mimi) // session.Store("name", t.Mimi) //session.Store("key", r.Header.Get("Sec-WebSocket-Key")) return true }, }) socket, err := upgrader.Upgrade(r.Response.Writer, r.Request) if err != nil { fmt.Println(err) return } // ants.Submit(func() { // socket.ReadLoop() // }) // ants.Submit(func() { socket.ReadLoop() }) go socket.ReadLoop() }) }