From ab4c8ac3f6d3c541c8d988c05cc87150bb9c7ce6 Mon Sep 17 00:00:00 2001 From: Dominic Wong Date: Wed, 17 Nov 2021 16:53:45 +0000 Subject: [PATCH] valid email (#278) --- email/handler/email.go | 23 ++++++++++++++++++----- go.mod | 1 + 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/email/handler/email.go b/email/handler/email.go index cf5b7cc..edb1ab7 100644 --- a/email/handler/email.go +++ b/email/handler/email.go @@ -7,6 +7,7 @@ import ( "fmt" "io/ioutil" "net/http" + "regexp" "github.com/micro/micro/v3/service" "github.com/micro/micro/v3/service/client" @@ -59,12 +60,24 @@ type Email struct { spamSvc spampb.SpamService } -func (e *Email) Send(ctx context.Context, request *pb.SendRequest, response *pb.SendResponse) error { - if len(request.From) == 0 { - return errors.BadRequest("email.send.validation", "Missing from address") +// validEmail does very light validation +func validEmail(email string) bool { + if len(email) == 0 { + return false } - if len(request.To) == 0 { - return errors.BadRequest("email.send.validation", "Missing to address") + m, err := regexp.MatchString("^\\S+@\\S+$", email) + if err != nil { + return false + } + return m +} + +func (e *Email) Send(ctx context.Context, request *pb.SendRequest, response *pb.SendResponse) error { + if !validEmail(request.From) { + return errors.BadRequest("email.send.validation", "Invalid from address") + } + if !validEmail(request.To) { + return errors.BadRequest("email.send.validation", "Invalid to address") } if len(request.Subject) == 0 { return errors.BadRequest("email.send.validation", "Missing subject") diff --git a/go.mod b/go.mod index ed1c51f..8f8128c 100644 --- a/go.mod +++ b/go.mod @@ -36,6 +36,7 @@ require ( github.com/micro/micro-go v0.0.0-20211101221015-79ab982f8163 github.com/micro/micro/v3 v3.7.1-0.20211111170433-1ebb8328e280 github.com/miekg/dns v1.1.31 // indirect + github.com/onsi/gomega v1.10.5 github.com/oschwald/geoip2-golang v1.5.0 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/paulmach/go.geo v0.0.0-20180829195134-22b514266d33