45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
module SystemCheck
|
|
module IncomingEmail
|
|
class ImapAuthenticationCheck < SystemCheck::BaseCheck
|
|
set_name 'IMAP server credentials are correct?'
|
|
|
|
def check?
|
|
if mailbox_config
|
|
begin
|
|
imap = Net::IMAP.new(config[:host], port: config[:port], ssl: config[:ssl])
|
|
imap.starttls if config[:start_tls]
|
|
imap.login(config[:email], config[:password])
|
|
connected = true
|
|
rescue
|
|
connected = false
|
|
end
|
|
end
|
|
|
|
connected
|
|
end
|
|
|
|
def show_error
|
|
try_fixing_it(
|
|
'Check that the information in config/gitlab.yml is correct'
|
|
)
|
|
for_more_information(
|
|
'doc/administration/reply_by_email.md'
|
|
)
|
|
fix_and_rerun
|
|
end
|
|
|
|
private
|
|
|
|
def mailbox_config
|
|
return @config if @config
|
|
|
|
config_path = Rails.root.join('config', 'mail_room.yml').to_s
|
|
erb = ERB.new(File.read(config_path))
|
|
erb.filename = config_path
|
|
config_file = YAML.load(erb.result)
|
|
|
|
@config = config_file[:mailboxes]&.first
|
|
end
|
|
end
|
|
end
|
|
end
|