Archived
1
0

fix sa hook

This commit is contained in:
Jeff Becker 2017-11-07 15:07:10 -05:00
parent 26d4f5dffb
commit 9230349b30
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05
3 changed files with 9 additions and 9 deletions

View File

@ -25,13 +25,13 @@ func (sp *SpamFilter) Configure(c SpamConfig) {
sp.addr = c.addr sp.addr = c.addr
} }
func (sp *SpamFilter) Enabled() bool { func (sp *SpamFilter) Enabled(newsgroup string) bool {
return sp.enabled return sp.enabled && newsgroup != "ctl"
} }
func (sp *SpamFilter) Rewrite(msg io.Reader, out io.WriteCloser) error { func (sp *SpamFilter) Rewrite(msg io.Reader, out io.WriteCloser, group string) error {
var buff [65636]byte var buff [65636]byte
if !sp.Enabled() { if !sp.Enabled(group) {
return ErrSpamFilterNotEnabled return ErrSpamFilterNotEnabled
} }
addr, err := net.ResolveTCPAddr("tcp", sp.addr) addr, err := net.ResolveTCPAddr("tcp", sp.addr)

View File

@ -65,7 +65,7 @@ type ArticleStore interface {
// process nntp message, register attachments and the article // process nntp message, register attachments and the article
// write the body into writer as we go through the message // write the body into writer as we go through the message
// writes mime body and does any spam rewrite // writes mime body and does any spam rewrite
ProcessMessage(wr io.Writer, msg io.Reader, filter func(string) bool) error ProcessMessage(wr io.Writer, msg io.Reader, filter func(string) bool, group string) error
// register this post with the daemon // register this post with the daemon
RegisterPost(nntp NNTPMessage) error RegisterPost(nntp NNTPMessage) error
// register signed message // register signed message
@ -441,7 +441,7 @@ func (self *articleStore) getMIMEHeader(messageID string) (hdr textproto.MIMEHea
return hdr return hdr
} }
func (self *articleStore) ProcessMessage(wr io.Writer, msg io.Reader, spamfilter func(string) bool) (err error) { func (self *articleStore) ProcessMessage(wr io.Writer, msg io.Reader, spamfilter func(string) bool, group string) (err error) {
process := func(nntp NNTPMessage) { process := func(nntp NNTPMessage) {
if !spamfilter(nntp.Message()) { if !spamfilter(nntp.Message()) {
err = errors.New("spam message") err = errors.New("spam message")
@ -462,12 +462,12 @@ func (self *articleStore) ProcessMessage(wr io.Writer, msg io.Reader, spamfilter
log.Println("error procesing message body", err) log.Println("error procesing message body", err)
} }
} }
if self.spamd.Enabled() { if self.spamd.Enabled(group) {
pr_in, pw_in := io.Pipe() pr_in, pw_in := io.Pipe()
pr_out, pw_out := io.Pipe() pr_out, pw_out := io.Pipe()
ec := make(chan error) ec := make(chan error)
go func() { go func() {
e := self.spamd.Rewrite(pr_in, pw_out) e := self.spamd.Rewrite(pr_in, pw_out, group)
ec <- e ec <- e
}() }()
go func() { go func() {

View File

@ -769,7 +769,7 @@ func storeMessage(daemon *NNTPDaemon, hdr textproto.MIMEHeader, body io.Reader)
io.CopyBuffer(pw, body, buff[:]) io.CopyBuffer(pw, body, buff[:])
pw.Close() pw.Close()
}() }()
err = daemon.store.ProcessMessage(f, pr, daemon.CheckText) err = daemon.store.ProcessMessage(f, pr, daemon.CheckText, hdr.Get("Newsgroups"))
pr.Close() pr.Close()
if err == nil { if err == nil {
// tell daemon // tell daemon