71 lines
1.5 KiB
Go
71 lines
1.5 KiB
Go
package email
|
||
|
||
import (
|
||
"crypto/tls"
|
||
|
||
"go-common/app/job/main/videoup-report/conf"
|
||
"go-common/app/job/main/videoup-report/model/email"
|
||
"go-common/library/cache/redis"
|
||
gomail "gopkg.in/gomail.v2"
|
||
)
|
||
|
||
// Dao is redis dao.
|
||
type Dao struct {
|
||
c *conf.Config
|
||
redis *redis.Pool
|
||
email *gomail.Dialer
|
||
FansAddr map[int16][]string
|
||
emailAddr map[string][]string
|
||
PrivateAddr map[string][]string
|
||
//fast behavior detector
|
||
detector *email.FastDetector
|
||
//快速通道token
|
||
fastChan chan int
|
||
//邮件发送api的频率token,发送邮件5s后插入
|
||
controlChan chan int64
|
||
}
|
||
|
||
// New is new redis dao.
|
||
func New(c *conf.Config) (d *Dao) {
|
||
emailAddr := make(map[string][]string)
|
||
for _, v := range c.Mail.Addr {
|
||
emailAddr[v.Type] = v.Addr
|
||
}
|
||
|
||
privateMail := make(map[string][]string)
|
||
for _, v := range c.Mail.PrivateAddr {
|
||
privateMail[v.Type] = v.Addr
|
||
}
|
||
|
||
d = &Dao{
|
||
c: c,
|
||
redis: redis.NewPool(c.Redis.Mail),
|
||
email: gomail.NewDialer(c.Mail.Host, c.Mail.Port, c.Mail.Username, c.Mail.Password),
|
||
emailAddr: emailAddr,
|
||
PrivateAddr: privateMail,
|
||
detector: email.NewFastDetector(c.Mail.SpeedThreshold, c.Mail.OverspeedThreshold),
|
||
fastChan: make(chan int, 10240),
|
||
controlChan: make(chan int64, 1),
|
||
}
|
||
|
||
d.email.TLSConfig = &tls.Config{
|
||
InsecureSkipVerify: true,
|
||
}
|
||
d.fastChan <- 1
|
||
d.controlChan <- 1
|
||
return d
|
||
}
|
||
|
||
//Close close
|
||
func (d *Dao) Close() (err error) {
|
||
if d.redis != nil {
|
||
err = d.redis.Close()
|
||
}
|
||
return
|
||
}
|
||
|
||
//FastChan get fast channel
|
||
func (d *Dao) FastChan() <-chan int {
|
||
return d.fastChan
|
||
}
|