req.go 855 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package RouterManchong
  2. import (
  3. "crypto/md5"
  4. "encoding/hex"
  5. "errors"
  6. "fmt"
  7. "manchong"
  8. "strconv"
  9. "time"
  10. )
  11. type reqBody struct {
  12. CONTENT struct {
  13. SIGN string `json:"SIGN"`
  14. TIMESTAMP string `json:"TIMESTAMP"`
  15. } `json:"CONTENT"`
  16. }
  17. func (r *reqBody) check(appid string) (string, error) {
  18. t, err := strconv.ParseInt(r.CONTENT.TIMESTAMP, 10, 0)
  19. if err != nil {
  20. return "11", err
  21. }
  22. now := time.Now().UnixNano() / 1e6
  23. if t > now+5*60*1000 || t < now-5*60*1000 {
  24. return "14", errors.New("TIMESTAMP超过时限")
  25. }
  26. appc, ok := manchong.CFG.Users[appid]
  27. if !ok {
  28. return "09", errors.New("APPID已经失效")
  29. }
  30. m5 := md5.New()
  31. m5.Write([]byte(fmt.Sprintf("%s%s", appc, r.CONTENT.TIMESTAMP)))
  32. str := hex.EncodeToString(m5.Sum(nil))
  33. if str != r.CONTENT.SIGN {
  34. return "08", errors.New("签名验证失败")
  35. }
  36. return "00", nil
  37. }