12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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
- }
|