268 lines
6.5 KiB
Go
268 lines
6.5 KiB
Go
package cmd
|
||
|
||
import (
|
||
"github.com/ayflying/utility_go/service"
|
||
"github.com/gogf/gf/v2/errors/gcode"
|
||
"github.com/gogf/gf/v2/errors/gerror"
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/net/ghttp"
|
||
"github.com/gogf/gf/v2/text/gstr"
|
||
)
|
||
|
||
//func MiddlewareAnonymous(r *ghttp.Request) {
|
||
// // 中间件处理逻辑
|
||
// r.Response.CORSDefault()
|
||
//
|
||
// ip := r.GetClientIp()
|
||
// r.SetCtxVar("ip", ip)
|
||
//
|
||
// //各种回调的日志返回
|
||
// //get, _ := r.GetJson()
|
||
// get := r.GetRequestMapStrStr()
|
||
// delete(get, "r")
|
||
// delete(get, "s")
|
||
// delete(get, "t")
|
||
// delete(get, "data")
|
||
// getJson, _ := gjson.EncodeString(get)
|
||
// g.Log("cmd").Debugf(r.GetCtx(), "from|%v|%v|%v", 0, r.RequestURI, getJson)
|
||
//
|
||
// r.Middleware.Next()
|
||
//
|
||
// //中间件后置
|
||
// err := r.GetError()
|
||
// if err != nil {
|
||
// code, err2 := strconv.Atoi(err.Error())
|
||
// if err2 != nil {
|
||
// return
|
||
// }
|
||
// if _, ok := consts.ErrCodeList[code]; ok {
|
||
// //g.Dump("===error:", gerror.Code(r.GetError()).Code())
|
||
// msg := g.Map{
|
||
// "code": code,
|
||
// "message": consts.ErrCodeList[code],
|
||
// //"data": r.GetHandlerResponse(),
|
||
// }
|
||
// r.Response.WriteJson(msg)
|
||
// //错误码置空
|
||
// r.SetError(nil)
|
||
// //g.Log("cmd").Debugf(r.GetCtx(), "to|%v|%v|%v", uid, r.RequestURI, msg)
|
||
// return
|
||
// }
|
||
// }
|
||
//
|
||
// //回复
|
||
// res, _ := gjson.EncodeString(r.GetHandlerResponse())
|
||
// g.Log("cmd").Debugf(r.GetCtx(), "to|%v|%v|%v", 0, r.RequestURI, res)
|
||
//}
|
||
|
||
func MiddlewareAdmin(r *ghttp.Request) {
|
||
// 中间件处理逻辑
|
||
r.Response.CORSDefault()
|
||
|
||
ip := r.GetClientIp()
|
||
r.SetCtxVar("ip", ip)
|
||
|
||
getUid := r.Cookie.Get("uid")
|
||
|
||
if getUid == nil {
|
||
//调试模式允许不验证用户名
|
||
debug, _ := g.Cfg().GetWithEnv(nil, "debug")
|
||
if !debug.Bool() {
|
||
|
||
msg := g.Map{
|
||
"code": 403,
|
||
"message": "登录失败",
|
||
//"data": r.GetHandlerResponse(),
|
||
}
|
||
//r.SetError(http.Error(r,"403",http.StatusForbidden))
|
||
r.Response.WriteJson(msg)
|
||
gerror.NewCode(gcode.CodeNil, "登录失败")
|
||
return
|
||
}
|
||
|
||
}
|
||
|
||
uid := getUid.Int()
|
||
|
||
//获取所有请求的信息
|
||
get := r.GetRequestMapStrStr()
|
||
if _, ok := get["uid"]; ok {
|
||
r.SetCtxVar("uid", get["uid"])
|
||
}
|
||
|
||
r.Middleware.Next()
|
||
|
||
//后置,所有post都写入日志
|
||
if r.Method == "POST" {
|
||
//黑名单列表
|
||
LogUrl := []string{
|
||
"/system/chatgpt",
|
||
}
|
||
if !gstr.InArray(LogUrl, r.RequestURI) {
|
||
//写入日志
|
||
service.SystemLog().AddLog(uid, r.RequestURI, ip, r.GetFormMap())
|
||
}
|
||
} else {
|
||
//需要写入的get
|
||
LogUrl := []string{
|
||
"/admin/config/mall/del",
|
||
"/admin/config/shop/del",
|
||
"/admin/group/del",
|
||
"/admin/user/del",
|
||
"/admin/community/posts/del",
|
||
"/admin/community/posts/limit",
|
||
"/admin/community/posts/limit/del",
|
||
"/admin/community/reply/del",
|
||
"/admin/community/recommend",
|
||
}
|
||
for _, item := range LogUrl {
|
||
if item == r.RequestURI {
|
||
service.SystemLog().AddLog(uid, r.RequestURI, ip, r.GetFormMap())
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
//// 中间件
|
||
//func Middleware(r *ghttp.Request) {
|
||
// // 中间件处理逻辑
|
||
// r.Response.CORSDefault()
|
||
//
|
||
// //获取玩家的guid
|
||
// guid := r.Header.Get("guid")
|
||
//
|
||
// //获取所有请求的信息
|
||
// get := r.GetRequestMapStrStr()
|
||
//
|
||
// //cacheKey := fmt.Sprintf("sign:%s", guid)
|
||
//
|
||
// ////进入debug模式
|
||
// //debugBool := g.Cfg().MustGetWithCmd(nil, "debug")
|
||
// ////如果收到签名,开始验证签名
|
||
// //if sign, _ := get["s"]; !debugBool.Bool() && sign != "" {
|
||
// //
|
||
// // //如果连续两次使用相同sign,直接抛出
|
||
// // getSign, _ := aycache.New().Get(nil, cacheKey)
|
||
// // if getSign.String() == sign {
|
||
// // //中间件授权错误
|
||
// // msg := g.Map{
|
||
// // "code": 11000,
|
||
// // "message": consts.ErrCodeList[11000],
|
||
// // }
|
||
// // r.Response.WriteJson(msg)
|
||
// // return
|
||
// // }
|
||
// // aycache.New().Set(nil, cacheKey, sign, time.Minute*10)
|
||
// //
|
||
// // secretKey := "asdkjqwhiasdoplmwofjk/aws"
|
||
// // nonce := get["r"]
|
||
// // timestamp := get["t"]
|
||
// //
|
||
// // message := timestamp + nonce
|
||
// //
|
||
// // timeUnix := time.Now().Unix() - gconv.Int64(timestamp)
|
||
// // if timeUnix > 600 || timeUnix < -600 {
|
||
// // //中间件授权错误
|
||
// // msg := g.Map{
|
||
// // "code": 11000,
|
||
// // "message": consts.ErrCodeList[11000],
|
||
// // }
|
||
// // r.Response.WriteJson(msg)
|
||
// // return
|
||
// // }
|
||
// //
|
||
// // // 创建 HMAC 对象
|
||
// // h := hmac.New(sha256.New, []byte(secretKey))
|
||
// //
|
||
// // // 更新 HMAC 对象的数据
|
||
// // h.Write([]byte(message))
|
||
// //
|
||
// // // 获取 HMAC 的十六进制表示
|
||
// // signature := hex.EncodeToString(h.Sum(nil))
|
||
// //
|
||
// // //如果加密算法不一致
|
||
// // if signature != sign {
|
||
// // //中间件授权错误
|
||
// // msg := g.Map{
|
||
// // "code": 11000,
|
||
// // "message": consts.ErrCodeList[11000],
|
||
// // }
|
||
// // r.Response.WriteJson(msg)
|
||
// // return
|
||
// // }
|
||
// //}
|
||
//
|
||
// uid, _ := service.MemberUser().Guid2uid(guid)
|
||
// if uid == 0 {
|
||
// //中间件授权错误
|
||
// msg := g.Map{
|
||
// "code": 11000,
|
||
// "message": consts.ErrCodeList[11000],
|
||
// //"data": r.GetHandlerResponse(),
|
||
// }
|
||
// r.Response.WriteJson(msg)
|
||
//
|
||
// return
|
||
// }
|
||
// r.SetCtxVar("guid", guid)
|
||
// r.SetCtxVar("uid", uid)
|
||
//
|
||
// ip := r.GetClientIp()
|
||
// r.SetCtxVar("ip", ip)
|
||
//
|
||
// delete(get, "r")
|
||
// delete(get, "s")
|
||
// delete(get, "t")
|
||
// delete(get, "data")
|
||
// //前置输出服务器收到信息
|
||
// getJson, _ := gjson.EncodeString(get)
|
||
// //后置输出服务器返回信息
|
||
// if r.GetCtxVar("not_log").IsEmpty() {
|
||
// g.Log("cmd").Debugf(r.GetCtx(), "from|%v|%v|%v", uid, r.RequestURI, getJson)
|
||
// }
|
||
//
|
||
// //运行开始时间
|
||
// RunStartTime := gtime.Now()
|
||
//
|
||
// //proto.Marshal()
|
||
//
|
||
// //中间件核心
|
||
// r.Middleware.Next()
|
||
//
|
||
// //返回运行时
|
||
// if getTime := gtime.Now().Sub(RunStartTime); getTime > time.Millisecond*1000 {
|
||
// g.Log().Debugf(nil, "当前运行时间:%v,uid=%d,url=%s", getTime, uid, r.RequestURI)
|
||
// }
|
||
//
|
||
// //中间件后置
|
||
// err := r.GetError()
|
||
// if err != nil {
|
||
// code, err2 := strconv.Atoi(err.Error())
|
||
// if err2 != nil {
|
||
// return
|
||
// }
|
||
// if _, ok := consts.ErrCodeList[code]; ok {
|
||
// //g.Dump("===error:", gerror.Code(r.GetError()).Code())
|
||
// msg := g.Map{
|
||
// "code": code,
|
||
// "message": consts.ErrCodeList[code],
|
||
// //"data": r.GetHandlerResponse(),
|
||
// }
|
||
// msgJson, _ := gjson.EncodeString(msg)
|
||
// r.Response.WriteJson(msgJson)
|
||
// //错误码置空
|
||
// r.SetError(nil)
|
||
// g.Log("cmd").Debugf(r.GetCtx(), "to|%v|%v|%v", uid, r.RequestURI, msg)
|
||
// return
|
||
// }
|
||
// }
|
||
//
|
||
// //后置输出服务器返回信息
|
||
// if r.GetCtxVar("not_log").IsEmpty() {
|
||
// res, _ := gjson.EncodeString(r.GetHandlerResponse())
|
||
// g.Log("cmd").Debugf(r.GetCtx(), "to|%v|%v|%v", uid, r.RequestURI, res)
|
||
// }
|
||
//
|
||
//}
|