29
pkg/probod/mailer_config.go
Normal file
29
pkg/probod/mailer_config.go
Normal file
@@ -0,0 +1,29 @@
|
||||
// Copyright (c) 2025 Probo Inc <hello@getprobo.com>.
|
||||
//
|
||||
// Permission to use, copy, modify, and/or distribute this software for any
|
||||
// purpose with or without fee is hereby granted, provided that the above
|
||||
// copyright notice and this permission notice appear in all copies.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
// PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
package probod
|
||||
|
||||
type (
|
||||
mailerConfig struct {
|
||||
SenderName string `json:"sender-name"`
|
||||
SenderEmail string `json:"sender-email"`
|
||||
SMTP smtpConfig `json:"smtp"`
|
||||
}
|
||||
|
||||
smtpConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
User string `json:"user"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
)
|
||||
@@ -27,6 +27,7 @@ import (
|
||||
"github.com/getprobo/probo/pkg/awsconfig"
|
||||
"github.com/getprobo/probo/pkg/coredata"
|
||||
"github.com/getprobo/probo/pkg/crypto/passwdhash"
|
||||
"github.com/getprobo/probo/pkg/mailer"
|
||||
"github.com/getprobo/probo/pkg/probo"
|
||||
"github.com/getprobo/probo/pkg/server"
|
||||
console_v1 "github.com/getprobo/probo/pkg/server/api/console/v1"
|
||||
@@ -47,10 +48,11 @@ type (
|
||||
}
|
||||
|
||||
config struct {
|
||||
Pg pgConfig `json:"pg"`
|
||||
Api apiConfig `json:"api"`
|
||||
Auth authConfig `json:"auth"`
|
||||
AWS awsConfig `json:"aws"`
|
||||
Pg pgConfig `json:"pg"`
|
||||
Api apiConfig `json:"api"`
|
||||
Auth authConfig `json:"auth"`
|
||||
AWS awsConfig `json:"aws"`
|
||||
Mailer mailerConfig `json:"mailer"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -94,6 +96,13 @@ func New() *Implm {
|
||||
SecretAccessKey: "thisisnotasecret",
|
||||
Endpoint: "http://127.0.0.1:9000",
|
||||
},
|
||||
Mailer: mailerConfig{
|
||||
SenderEmail: "no-reply@notification.getprobo.com",
|
||||
SenderName: "Probo",
|
||||
SMTP: smtpConfig{
|
||||
Addr: "localhost:1025",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -198,8 +207,23 @@ func (impl *Implm) Run(
|
||||
}
|
||||
}()
|
||||
|
||||
mailerCtx, stopMailer := context.WithCancel(context.Background())
|
||||
mailer := mailer.NewMailer(pgClient, l, mailer.Config{
|
||||
SenderEmail: impl.cfg.Mailer.SenderEmail,
|
||||
SenderName: impl.cfg.Mailer.SenderName,
|
||||
Addr: impl.cfg.Mailer.SMTP.Addr,
|
||||
})
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := mailer.Run(mailerCtx); err != nil {
|
||||
cancel(fmt.Errorf("mailer crashed: %w", err))
|
||||
}
|
||||
}()
|
||||
|
||||
<-ctx.Done()
|
||||
|
||||
stopMailer()
|
||||
stopApiServer()
|
||||
|
||||
wg.Wait()
|
||||
|
||||
Reference in New Issue
Block a user