srnd: properly parse email addresses
this replaces faulty address parsing code with calls to stdlib' email parser and some reasonable fallbacks. note that nntpArticle.Email() function was completely incorrect, but it's not used anywhere in code, apparently.
This commit is contained in:
parent
05ebac9aa5
commit
740bf82a1e
@ -295,12 +295,20 @@ func (self *nntpArticle) Newsgroup() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *nntpArticle) Name() string {
|
func (self *nntpArticle) Name() string {
|
||||||
from := self.headers.Get("From", "anonymous <a@no.n>")
|
const defname = "Anonymous"
|
||||||
idx := strings.Index(from, "<")
|
from := strings.TrimSpace(self.headers.Get("From", ""))
|
||||||
if idx > 1 {
|
if from == "" {
|
||||||
return from[:idx]
|
return defname
|
||||||
}
|
}
|
||||||
return "[Invalid From header]"
|
a, e := mail.ParseAddress(from)
|
||||||
|
if e != nil {
|
||||||
|
return fmt.Sprintf("[Invalid From header: %v]", e)
|
||||||
|
}
|
||||||
|
name := strings.TrimSpace(a.Name)
|
||||||
|
if name == "" {
|
||||||
|
return defname
|
||||||
|
}
|
||||||
|
return name
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *nntpArticle) Addr() (addr string) {
|
func (self *nntpArticle) Addr() (addr string) {
|
||||||
@ -327,13 +335,15 @@ func (self *nntpArticle) Addr() (addr string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *nntpArticle) Email() string {
|
func (self *nntpArticle) Email() string {
|
||||||
from := self.headers.Get("From", "anonymous <a@no.n>")
|
from := strings.TrimSpace(self.headers.Get("From", ""))
|
||||||
idx := strings.Index(from, "<")
|
if from == "" {
|
||||||
if idx > 2 {
|
return ""
|
||||||
return from[:idx-2]
|
|
||||||
}
|
}
|
||||||
return "[Invalid From header]"
|
a, e := mail.ParseAddress(from)
|
||||||
|
if e != nil {
|
||||||
|
return fmt.Sprintf("[Invalid From header: %v]", e)
|
||||||
|
}
|
||||||
|
return a.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *nntpArticle) Subject() string {
|
func (self *nntpArticle) Subject() string {
|
||||||
|
Reference in New Issue
Block a user