187 lines
7.5 KiB
Go
187 lines
7.5 KiB
Go
package api
|
|
|
|
//
|
|
//import (
|
|
// "crypto/md5"
|
|
// "encoding/hex"
|
|
// "encoding/json"
|
|
// "fmt"
|
|
// "mongo.games.com/game/common"
|
|
// "mongo.games.com/game/model"
|
|
// "mongo.games.com/game/webapi"
|
|
// "mongo.games.com/goserver/core"
|
|
// "mongo.games.com/goserver/core/admin"
|
|
// "mongo.games.com/goserver/core/logger"
|
|
// "mongo.games.com/goserver/core/netlib"
|
|
// "mongo.games.com/goserver/core/transact"
|
|
// "mongo.games.com/goserver/core/utils"
|
|
// "io"
|
|
// "io/ioutil"
|
|
// "net/http"
|
|
// "time"
|
|
//)
|
|
//
|
|
//const (
|
|
// RANKSRVAPI_TRANSACTE_EVENT = "GAMESRVAPI_TRANSACTE_EVENT"
|
|
// RANKSRVAPI_TRANSACTE_RESPONSE = "RANKSRVAPI_TRANSACTE_RESPONSE"
|
|
//)
|
|
//
|
|
//// 处理 web 请求 rank server 相关的配置协议, 转发至 rank server 处理
|
|
//
|
|
//func RankSrvApi(rw http.ResponseWriter, req *http.Request) {
|
|
// defer utils.DumpStackIfPanic("api.RankSrvApi")
|
|
// logger.Logger.Info("RankSrvApi receive:", req.URL.Path, req.URL.RawQuery)
|
|
//
|
|
// if common.RequestCheck(req, model.GameParamData.WhiteHttpAddr) == false {
|
|
// logger.Logger.Info("RemoteAddr [%v] require api.", req.RemoteAddr)
|
|
// return
|
|
// }
|
|
// data, err := io.ReadAll(req.Body)
|
|
// if err != nil {
|
|
// logger.Logger.Info("Body err.", err)
|
|
// webApiResponse(rw, map[string]interface{}{
|
|
// webapi.RESPONSE_STATE: webapi.STATE_ERR,
|
|
// webapi.RESPONSE_ERRMSG: "Post data is null!",
|
|
// })
|
|
// return
|
|
// }
|
|
// logger.Logger.Info(string(data))
|
|
// m := req.URL.Query()
|
|
// timestamp := m.Get("nano")
|
|
// if timestamp == "" {
|
|
// logger.Logger.Info(req.RemoteAddr, " RankSrvApi param error: nano not allow null")
|
|
// return
|
|
// }
|
|
// sign := m.Get("sign")
|
|
// if sign == "" {
|
|
// logger.Logger.Info(req.RemoteAddr, " RankSrvApi param error: sign not allow null")
|
|
// return
|
|
// }
|
|
// startTime := time.Now().UnixNano()
|
|
// args := fmt.Sprintf("%v;%v;%v;%v", common.Config.AppId, req.URL.Path, string(data), timestamp)
|
|
// h := md5.New()
|
|
// io.WriteString(h, args)
|
|
// realSign := hex.EncodeToString(h.Sum(nil))
|
|
// if realSign != sign && !common.Config.IsDevMode {
|
|
// logger.Logger.Info(req.RemoteAddr, " srvCtrlMain sign error: expect ", realSign, " ; but get ", sign, " raw=", args)
|
|
// webApiResponse(rw, map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Sign error!"})
|
|
// return
|
|
// }
|
|
// var rep map[string]interface{}
|
|
// start := time.Now()
|
|
// res := make(chan map[string]interface{}, 1)
|
|
// core.CoreObject().SendCommand(&WebApiEvent{req: req, path: req.URL.Path, h: HandlerWrapper(func(event *WebApiEvent, data []byte) bool {
|
|
// logger.Logger.Trace("RankSrvApi start transcate")
|
|
// tnp := &transact.TransNodeParam{
|
|
// Tt: common.TransType_WebApi_ForRank,
|
|
// Ot: transact.TransOwnerType(common.GetSelfSrvType()),
|
|
// Oid: common.GetSelfSrvId(),
|
|
// AreaID: common.GetSelfAreaId(),
|
|
// }
|
|
// logger.Info("call info:", common.GetSelfAreaId(), common.GetSelfSrvType(), common.GetSelfSrvId())
|
|
// tNode := transact.DTCModule.StartTrans(tnp, event, transact.DefaultTransactTimeout) //超时时间30秒
|
|
// if tNode != nil {
|
|
// tNode.TransEnv.SetField(RANKSRVAPI_TRANSACTE_EVENT, event)
|
|
// tNode.Go(core.CoreObject())
|
|
// }
|
|
// return true
|
|
// }), body: data, rawQuery: req.URL.RawQuery, res: res}, false)
|
|
// select {
|
|
// case rep = <-res:
|
|
// if rep != nil {
|
|
// webApiResponse(rw, rep)
|
|
// }
|
|
// case <-time.After(ApiDefaultTimeout):
|
|
// rep = make(map[string]interface{})
|
|
// rep[webapi.RESPONSE_STATE] = webapi.STATE_ERR
|
|
// rep[webapi.RESPONSE_ERRMSG] = "proccess timeout!"
|
|
// webApiResponse(rw, rep)
|
|
// }
|
|
// ps := int64(time.Now().Sub(start) / time.Millisecond)
|
|
// result, err := json.Marshal(rep)
|
|
// if err == nil {
|
|
// log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(result[:]), startTime, ps)
|
|
// APILogChannelSington.Write(log)
|
|
// }
|
|
// return
|
|
//}
|
|
//
|
|
//func init() {
|
|
// transact.RegisteHandler(common.TransType_WebApi_ForRank, &transact.TransHanderWrapper{
|
|
// OnExecuteWrapper: transact.OnExecuteWrapper(func(tNode *transact.TransNode, ud interface{}) transact.TransExeResult {
|
|
// logger.Logger.Trace("RankSrvApi start TransType_WebApi_ForRank OnExecuteWrapper ")
|
|
// tnp := &transact.TransNodeParam{
|
|
// Tt: common.TransType_WebApi_ForRank,
|
|
// Ot: transact.TransOwnerType(common.RankServerType),
|
|
// Oid: common.GetRankSrvId(),
|
|
// AreaID: common.GetSelfAreaId(),
|
|
// Tct: transact.TransactCommitPolicy_TwoPhase,
|
|
// }
|
|
// logger.Infof("params: %+v", tnp)
|
|
// if event, ok := ud.(*WebApiEvent); ok {
|
|
// userData := &common.M2GWebApiRequest{Path: event.path, RawQuery: event.rawQuery, Body: event.body, ReqIp: event.req.RemoteAddr}
|
|
// tNode.StartChildTrans(tnp, userData, transact.DefaultTransactTimeout)
|
|
//
|
|
// pid := tNode.MyTnp.TId
|
|
// cid := tnp.TId
|
|
// logger.Logger.Tracef("RankSrvApi start TransType_WebApi_ForRank OnExecuteWrapper tid:%x childid:%x", pid, cid)
|
|
// return transact.TransExeResult_Success
|
|
// }
|
|
// return transact.TransExeResult_Failed
|
|
// }),
|
|
// OnCommitWrapper: transact.OnCommitWrapper(func(tNode *transact.TransNode) transact.TransExeResult {
|
|
// logger.Logger.Trace("RankSrvApi start TransType_WebApi_ForRank OnCommitWrapper")
|
|
// event := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_EVENT).(*WebApiEvent)
|
|
// resp := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_RESPONSE)
|
|
// if userData, ok := resp.(*common.M2GWebApiResponse); ok {
|
|
// if len(userData.Body) > 0 {
|
|
// m := make(map[string]interface{})
|
|
// err := json.Unmarshal(userData.Body, &m)
|
|
// if err == nil {
|
|
// event.Response(m)
|
|
// return transact.TransExeResult_Success
|
|
// }
|
|
// }
|
|
// }
|
|
// event.Response(map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "execute failed!"})
|
|
// return transact.TransExeResult_Success
|
|
// }),
|
|
// OnRollBackWrapper: transact.OnRollBackWrapper(func(tNode *transact.TransNode) transact.TransExeResult {
|
|
// logger.Logger.Trace("RankSrvApi start TransType_WebApi_ForRank OnRollBackWrapper")
|
|
// event := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_EVENT).(*WebApiEvent)
|
|
// resp := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_RESPONSE)
|
|
// if userData, ok := resp.(*common.M2GWebApiResponse); ok {
|
|
// if len(userData.Body) > 0 {
|
|
// m := make(map[string]interface{})
|
|
// err := json.Unmarshal(userData.Body, &m)
|
|
// if err == nil {
|
|
// event.Response(m)
|
|
// return transact.TransExeResult_Success
|
|
// }
|
|
// }
|
|
// return transact.TransExeResult_Success
|
|
// }
|
|
// event.Response(map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "execute failed!"})
|
|
// return transact.TransExeResult_Success
|
|
// }),
|
|
// OnChildRespWrapper: transact.OnChildRespWrapper(func(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, ud interface{}) transact.TransExeResult {
|
|
// logger.Logger.Tracef("RankSrvApi start TransType_WebApi_ForRank OnChildRespWrapper ret:%v childid:%x", retCode, hChild)
|
|
// userData := &common.M2GWebApiResponse{}
|
|
// err := netlib.UnmarshalPacketNoPackId(ud.([]byte), userData)
|
|
// if err == nil {
|
|
// tNode.TransEnv.SetField(RANKSRVAPI_TRANSACTE_RESPONSE, userData)
|
|
// } else {
|
|
// logger.Logger.Trace("trascate.OnChildRespWrapper err:", err)
|
|
// }
|
|
// return transact.TransExeResult(retCode)
|
|
// }),
|
|
// }) //RegisteHandler
|
|
//
|
|
// admin.MyAdminApp.Route("/api/rank/getConfig", RankSrvApi)
|
|
// admin.MyAdminApp.Route("/api/rank/updateConfig", RankSrvApi)
|
|
// admin.MyAdminApp.Route("/api/rank/debug/settings", RankSrvApi)
|
|
// admin.MyAdminApp.Route("/api/rank/debug/board", RankSrvApi)
|
|
// admin.MyAdminApp.Route("/api/rank/reset", RankSrvApi)
|
|
// admin.MyAdminApp.Route("/api/rank/syncUser", RankSrvApi) // 同步主库玩家信息
|
|
//}
|