summaryrefslogtreecommitdiff
path: root/cmd
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 /cmd
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 'cmd')
-rw-r--r--cmd/gotosocial/flags.go1
-rw-r--r--cmd/gotosocial/smtpflags.go59
2 files changed, 60 insertions, 0 deletions
diff --git a/cmd/gotosocial/flags.go b/cmd/gotosocial/flags.go
index 355ec0b81..8e162f6c7 100644
--- a/cmd/gotosocial/flags.go
+++ b/cmd/gotosocial/flags.go
@@ -39,6 +39,7 @@ func getFlags() []cli.Flag {
statusesFlags(flagNames, envNames, defaults),
letsEncryptFlags(flagNames, envNames, defaults),
oidcFlags(flagNames, envNames, defaults),
+ smtpFlags(flagNames, envNames, defaults),
}
for _, fs := range flagSets {
flags = append(flags, fs...)
diff --git a/cmd/gotosocial/smtpflags.go b/cmd/gotosocial/smtpflags.go
new file mode 100644
index 000000000..5c790ef7e
--- /dev/null
+++ b/cmd/gotosocial/smtpflags.go
@@ -0,0 +1,59 @@
+/*
+ GoToSocial
+ Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package main
+
+import (
+ "github.com/superseriousbusiness/gotosocial/internal/config"
+ "github.com/urfave/cli/v2"
+)
+
+func smtpFlags(flagNames, envNames config.Flags, defaults config.Defaults) []cli.Flag {
+ return []cli.Flag{
+ &cli.StringFlag{
+ Name: flagNames.SMTPHost,
+ Usage: "Host of the smtp server. Eg., 'smtp.eu.mailgun.org'",
+ Value: defaults.SMTPHost,
+ EnvVars: []string{envNames.SMTPHost},
+ },
+ &cli.IntFlag{
+ Name: flagNames.SMTPPort,
+ Usage: "Port of the smtp server. Eg., 587",
+ Value: defaults.SMTPPort,
+ EnvVars: []string{envNames.SMTPPort},
+ },
+ &cli.StringFlag{
+ Name: flagNames.SMTPUsername,
+ Usage: "Username to authenticate with the smtp server as. Eg., 'postmaster@mail.example.org'",
+ Value: defaults.SMTPUsername,
+ EnvVars: []string{envNames.SMTPUsername},
+ },
+ &cli.StringFlag{
+ Name: flagNames.SMTPPassword,
+ Usage: "Password to pass to the smtp server.",
+ Value: defaults.SMTPPassword,
+ EnvVars: []string{envNames.SMTPPassword},
+ },
+ &cli.StringFlag{
+ Name: flagNames.SMTPFrom,
+ Usage: "Address to use as the 'from' field of the email. Eg., 'gotosocial@example.org'",
+ Value: defaults.SMTPFrom,
+ EnvVars: []string{envNames.SMTPFrom},
+ },
+ }
+}