sendmaillogic.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "bp.jydev.jianyu360.cn/BaseService/biService/entity"
  5. "bp.jydev.jianyu360.cn/BaseService/biService/service"
  6. "context"
  7. "fmt"
  8. "github.com/gogf/gf/v2/util/gconv"
  9. "github.com/tjfoc/gmsm/sm4"
  10. "regexp"
  11. "bp.jydev.jianyu360.cn/BaseService/biService/rpc/internal/svc"
  12. "bp.jydev.jianyu360.cn/BaseService/biService/rpc/pb"
  13. "github.com/zeromicro/go-zero/core/logx"
  14. )
  15. type SendMailLogic struct {
  16. ctx context.Context
  17. svcCtx *svc.ServiceContext
  18. logx.Logger
  19. }
  20. func NewSendMailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SendMailLogic {
  21. return &SendMailLogic{
  22. ctx: ctx,
  23. svcCtx: svcCtx,
  24. Logger: logx.WithContext(ctx),
  25. }
  26. }
  27. var reg1 = regexp.MustCompile("(?i)(insert|delete|update|master|truncate|declare|exec|alter|use)\\s")
  28. var reg2 = regexp.MustCompile("(?i)(select|from)\\s")
  29. func (l *SendMailLogic) SendMail(in *pb.ExportByDbReq) (*pb.BiReply, error) {
  30. if in.Query == "" || in.Token == "" || in.Title == "" || in.Content == "" || in.Mails == "" {
  31. return &pb.BiReply{
  32. ErrorCode: 1,
  33. ErrorMsg: "参数不能为空",
  34. Data: nil,
  35. }, nil
  36. }
  37. if reg1.MatchString(in.Query) && !reg2.MatchString(in.Query) {
  38. return &pb.BiReply{
  39. ErrorCode: 1,
  40. ErrorMsg: "查询语句不合法",
  41. Data: nil,
  42. }, nil
  43. }
  44. if RsaEncrypt([]byte(fmt.Sprintf("%s&%s&%s&%s", gconv.String(in.Content), gconv.String(in.Mails), gconv.String(in.Query), gconv.String(in.Title)))) == in.Token {
  45. return &pb.BiReply{
  46. ErrorCode: 1,
  47. ErrorMsg: "token验证不通过",
  48. Data: nil,
  49. }, nil
  50. }
  51. res := (&service.ExportByDbReq{
  52. Token: in.Token,
  53. Title: in.Title,
  54. Content: in.Content,
  55. Mails: in.Mails,
  56. Query: in.Query,
  57. Stype: in.Stype,
  58. }).ExportDataByDb()
  59. return &pb.BiReply{
  60. ErrorCode: 0,
  61. ErrorMsg: "",
  62. Data: res,
  63. }, nil
  64. }
  65. func RsaEncrypt(data []byte) string {
  66. key := []byte(entity.PublicKey)
  67. b, _ := sm4.Sm4Ecb(key, data, true)
  68. return common.GetMd5String(string(b))
  69. }