summaryrefslogtreecommitdiff
path: root/internal/cliactions/server/server.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2021-10-31 15:46:23 +0100
committerLibravatar GitHub <noreply@github.com>2021-10-31 15:46:23 +0100
commit2aaec827321ec711b98e13335899cf750f270105 (patch)
treebafa15a0c2a469adf97b2c437fdc31428516424e /internal/cliactions/server/server.go
parentregenerate swagger docs (#293) (diff)
downloadgotosocial-2aaec827321ec711b98e13335899cf750f270105.tar.xz
smtp + email confirmation (#285)
* add smtp configuration * add email confirm + reset templates * add email sender to testrig * flesh out the email sender interface * go fmt * golint * update from field with more clarity * tidy up the email formatting * fix tests * add email sender to processor * tidy client api processing a bit * further tidying in fromClientAPI * pin new account to user * send msg to processor on new account creation * generate confirm email uri * remove emailer from account processor again * add processCreateAccountFromClientAPI * move emailer accountprocessor => userprocessor * add email sender to user processor * SendConfirmEmail function * add noop email sender * use noop email sender in tests * only assemble message if callback is not nil * use noop email sender if no smtp host is defined * minify email html before sending * fix wrong email address * email confirm test * fmt * serve web hndler * add email confirm handler * init test log properly on testrig * log emails that *would* have been sent * go fmt ./... * unexport confirm email handler * updatedAt * test confirm email function * don't allow tokens older than 7 days * change error message a bit * add basic smtp docs * add a few more snippets * typo * add email sender to outbox tests * don't use dutch wikipedia link * don't minify email html
Diffstat (limited to 'internal/cliactions/server/server.go')
-rw-r--r--internal/cliactions/server/server.go29
1 files changed, 24 insertions, 5 deletions
diff --git a/internal/cliactions/server/server.go b/internal/cliactions/server/server.go
index 107d84d2c..3837952c7 100644
--- a/internal/cliactions/server/server.go
+++ b/internal/cliactions/server/server.go
@@ -36,6 +36,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/cliactions"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
+ "github.com/superseriousbusiness/gotosocial/internal/email"
"github.com/superseriousbusiness/gotosocial/internal/federation"
"github.com/superseriousbusiness/gotosocial/internal/federation/federatingdb"
"github.com/superseriousbusiness/gotosocial/internal/gotosocial"
@@ -76,22 +77,40 @@ var Start cliactions.GTSAction = func(ctx context.Context, c *config.Config) err
return fmt.Errorf("error creating router: %s", err)
}
+ // build converters and util
+ typeConverter := typeutils.NewConverter(c, dbService)
+ timelineManager := timelineprocessing.NewManager(dbService, typeConverter, c)
+
// Open the storage backend
storage, err := kv.OpenFile(c.StorageConfig.BasePath, nil)
if err != nil {
return fmt.Errorf("error creating storage backend: %s", err)
}
- // build converters and util
- typeConverter := typeutils.NewConverter(c, dbService)
- timelineManager := timelineprocessing.NewManager(dbService, typeConverter, c)
-
// build backend handlers
mediaHandler := media.New(c, dbService, storage)
oauthServer := oauth.New(ctx, dbService)
transportController := transport.NewController(c, dbService, &federation.Clock{}, http.DefaultClient)
federator := federation.NewFederator(dbService, federatingDB, transportController, c, typeConverter, mediaHandler)
- processor := processing.NewProcessor(c, typeConverter, federator, oauthServer, mediaHandler, storage, timelineManager, dbService)
+
+ // decide whether to create a noop email sender (won't send emails) or a real one
+ var emailSender email.Sender
+ if c.SMTPConfig.Host != "" {
+ // host is defined so create a proper sender
+ emailSender, err = email.NewSender(c)
+ if err != nil {
+ return fmt.Errorf("error creating email sender: %s", err)
+ }
+ } else {
+ // no host is defined so create a noop sender
+ emailSender, err = email.NewNoopSender(c.TemplateConfig.BaseDir, nil)
+ if err != nil {
+ return fmt.Errorf("error creating noop email sender: %s", err)
+ }
+ }
+
+ // create and start the message processor using the other services we've created so far
+ processor := processing.NewProcessor(c, typeConverter, federator, oauthServer, mediaHandler, storage, timelineManager, dbService, emailSender)
if err := processor.Start(ctx); err != nil {
return fmt.Errorf("error starting processor: %s", err)
}