/
fasthttp.go
57 lines (51 loc) · 1.7 KB
/
fasthttp.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package middleware
import (
"fmt"
"github.com/1340691923/xwl_bi/engine/logs"
"github.com/1340691923/xwl_bi/model"
"github.com/1340691923/xwl_bi/platform-basic-libs/util"
"github.com/valyala/fasthttp"
"go.uber.org/zap"
"runtime"
"strings"
"time"
)
func Cors(handle fasthttp.RequestHandler) fasthttp.RequestHandler {
return func(ctx *fasthttp.RequestCtx) {
defer func() {
if r := recover(); r != nil {
//打印调用栈信息
buf := make([]byte, 2048)
n := runtime.Stack(buf, false)
stackInfo := fmt.Sprintf("%s", buf[:n])
logs.Logger.Sugar().Errorf("panic stack info %s", stackInfo)
logs.Logger.Sugar().Errorf("--->HaveLoginUserSign Error:", r)
ctx.Response.SetBodyString(`{"code":500}`)
}
}()
ctx.Response.Header.Set("Access-Control-Allow-Origin", "*") //允许访问所有域
ctx.Response.Header.Set("Access-Control-Allow-Headers", "Content-Type") //header的类型
handle(ctx)
}
}
func FTimer(handle fasthttp.RequestHandler) fasthttp.RequestHandler {
return func(ctx *fasthttp.RequestCtx) {
startT := time.Now()
handle(ctx)
logs.Logger.Info("handle lost time", zap.String("time", time.Now().Sub(startT).String()))
}
}
func WechatSpider(handle fasthttp.RequestHandler) fasthttp.RequestHandler {
return func(ctx *fasthttp.RequestCtx) {
UserAgent := strings.ToLower(util.Bytes2str(ctx.Request.Header.UserAgent()))
if util.InstrArr(model.GlobConfig.Report.UserAgentBanList, UserAgent) {
logs.Logger.Error("WechatSpider", zap.String("该UserAgent禁止访问接口!", ctx.Request.Header.String()))
util.WriteJSON(ctx, map[string]interface{}{
"code": 500,
"msg": "该UserAgent禁止访问接口!",
})
return
}
handle(ctx)
}
}