about summary refs log tree commit diff
path: root/lib/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tasks')
-rw-r--r--lib/tasks/mastodon.rake55
1 files changed, 38 insertions, 17 deletions
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index d6c9e2d01..13df76f91 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -224,24 +224,43 @@ namespace :mastodon do
       prompt.say "\n"
 
       loop do
-        env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q|
-          q.required true
-          q.default 'smtp.mailgun.org'
-          q.modify :strip
-        end
+        if prompt.yes?('Do you want to send e-mails from localhost?', default: false)
+          env['SMTP_SERVER'] = 'localhost'
+          env['SMTP_PORT'] = 25
+          env['SMTP_AUTH_METHOD'] = 'none'
+          env['SMTP_OPENSSL_VERIFY_MODE'] = 'none'
+        else
+          env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q|
+            q.required true
+            q.default 'smtp.mailgun.org'
+            q.modify :strip
+          end
 
-        env['SMTP_PORT'] = prompt.ask('SMTP port:') do |q|
-          q.required true
-          q.default 587
-          q.convert :int
-        end
+          env['SMTP_PORT'] = prompt.ask('SMTP port:') do |q|
+            q.required true
+            q.default 587
+            q.convert :int
+          end
 
-        env['SMTP_LOGIN'] = prompt.ask('SMTP username:') do |q|
-          q.modify :strip
-        end
+          env['SMTP_LOGIN'] = prompt.ask('SMTP username:') do |q|
+            q.modify :strip
+          end
 
-        env['SMTP_PASSWORD'] = prompt.ask('SMTP password:') do |q|
-          q.echo false
+          env['SMTP_PASSWORD'] = prompt.ask('SMTP password:') do |q|
+            q.echo false
+          end
+
+          env['SMTP_AUTH_METHOD'] = prompt.ask('SMTP authentication:') do |q|
+            q.required
+            q.default 'plain'
+            q.modify :strip
+          end
+
+          env['SMTP_OPENSSL_VERIFY_MODE'] = prompt.ask('SMTP OpenSSL verify mode:') do |q|
+            q.required
+            q.default 'peer'
+            q.modify :strip
+          end
         end
 
         env['SMTP_FROM_ADDRESS'] = prompt.ask('E-mail address to send e-mails "from":') do |q|
@@ -261,7 +280,8 @@ namespace :mastodon do
             :user_name            => env['SMTP_LOGIN'].presence,
             :password             => env['SMTP_PASSWORD'].presence,
             :domain               => env['LOCAL_DOMAIN'],
-            :authentication       => :plain,
+            :authentication       => env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain,
+            :openssl_verify_mode  => env['SMTP_OPENSSL_VERIFY_MODE'],
             :enable_starttls_auto => true,
           }
 
@@ -271,6 +291,7 @@ namespace :mastodon do
 
           mail = ActionMailer::Base.new.mail to: send_to, subject: 'Test', body: 'Mastodon SMTP configuration works!'
           mail.deliver
+          break
         rescue StandardError => e
           prompt.error 'E-mail could not be sent with this configuration, try again.'
           prompt.error e.message
@@ -302,7 +323,7 @@ namespace :mastodon do
           prompt.say 'Running `RAILS_ENV=production rails db:setup` ...'
           prompt.say "\n"
 
-          if cmd.run!({ RAILS_ENV: 'production' }, :rails, 'db:setup').failure?
+          if cmd.run!({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }, :rails, 'db:setup').failure?
             prompt.say "\n"
             prompt.error 'That failed! Perhaps your configuration is not right'
           else