2019-02-20 09:51:25 -07:00
|
|
|
# Pleroma: A lightweight social networking server
|
2023-01-01 04:11:47 -07:00
|
|
|
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
|
2019-02-20 09:51:25 -07:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2019-04-09 22:13:46 -06:00
|
|
|
defmodule Pleroma.Emails.AdminEmail do
|
2019-02-20 09:51:25 -07:00
|
|
|
@moduledoc "Admin emails"
|
|
|
|
|
|
|
|
import Swoosh.Email
|
|
|
|
|
2020-01-20 05:23:21 -07:00
|
|
|
alias Pleroma.Config
|
2020-07-27 19:36:31 -06:00
|
|
|
alias Pleroma.HTML
|
2019-02-20 09:51:25 -07:00
|
|
|
alias Pleroma.Web.Router.Helpers
|
|
|
|
|
2020-07-09 09:53:51 -06:00
|
|
|
defp instance_config, do: Config.get(:instance)
|
2019-02-20 09:51:25 -07:00
|
|
|
defp instance_name, do: instance_config()[:name]
|
2019-04-12 23:20:36 -06:00
|
|
|
|
|
|
|
defp instance_notify_email do
|
|
|
|
Keyword.get(instance_config(), :notify_email, instance_config()[:email])
|
|
|
|
end
|
2019-02-20 09:51:25 -07:00
|
|
|
|
2020-01-20 05:23:21 -07:00
|
|
|
def test_email(mail_to \\ nil) do
|
|
|
|
html_body = """
|
|
|
|
<h3>Instance Test Email</h3>
|
|
|
|
<p>A test email was requested. Hello. :)</p>
|
|
|
|
"""
|
|
|
|
|
|
|
|
new()
|
|
|
|
|> to(mail_to || Config.get([:instance, :email]))
|
|
|
|
|> from({instance_name(), instance_notify_email()})
|
|
|
|
|> subject("Instance Test Email")
|
|
|
|
|> html_body(html_body)
|
|
|
|
end
|
|
|
|
|
2019-02-20 09:51:25 -07:00
|
|
|
def report(to, reporter, account, statuses, comment) do
|
|
|
|
comment_html =
|
|
|
|
if comment do
|
|
|
|
"<p>Comment: #{comment}"
|
|
|
|
else
|
|
|
|
""
|
|
|
|
end
|
|
|
|
|
|
|
|
statuses_html =
|
2019-05-16 13:09:18 -06:00
|
|
|
if is_list(statuses) && length(statuses) > 0 do
|
2019-02-20 09:51:25 -07:00
|
|
|
statuses_list_html =
|
|
|
|
statuses
|
2019-03-21 19:17:14 -06:00
|
|
|
|> Enum.map(fn
|
|
|
|
%{id: id} ->
|
|
|
|
status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, id)
|
|
|
|
"<li><a href=\"#{status_url}\">#{status_url}</li>"
|
|
|
|
|
2020-11-16 09:22:32 -07:00
|
|
|
%{"id" => id} when is_binary(id) ->
|
|
|
|
"<li><a href=\"#{id}\">#{id}</li>"
|
|
|
|
|
2019-03-21 19:17:14 -06:00
|
|
|
id when is_binary(id) ->
|
|
|
|
"<li><a href=\"#{id}\">#{id}</li>"
|
2019-02-20 09:51:25 -07:00
|
|
|
end)
|
|
|
|
|> Enum.join("\n")
|
|
|
|
|
|
|
|
"""
|
|
|
|
<p> Statuses:
|
|
|
|
<ul>
|
|
|
|
#{statuses_list_html}
|
|
|
|
</ul>
|
|
|
|
</p>
|
|
|
|
"""
|
|
|
|
else
|
|
|
|
""
|
|
|
|
end
|
|
|
|
|
|
|
|
html_body = """
|
2020-11-04 09:12:47 -07:00
|
|
|
<p>Reported by: <a href="#{reporter.ap_id}">#{reporter.nickname}</a></p>
|
|
|
|
<p>Reported Account: <a href="#{account.ap_id}">#{account.nickname}</a></p>
|
2019-02-20 09:51:25 -07:00
|
|
|
#{comment_html}
|
|
|
|
#{statuses_html}
|
2020-07-09 10:55:40 -06:00
|
|
|
<p>
|
2021-05-31 14:09:11 -06:00
|
|
|
<a href="#{Pleroma.Web.Endpoint.url()}/pleroma/admin/#/reports/index">View Reports in AdminFE</a>
|
2019-02-20 09:51:25 -07:00
|
|
|
"""
|
|
|
|
|
|
|
|
new()
|
|
|
|
|> to({to.name, to.email})
|
2019-04-10 04:57:41 -06:00
|
|
|
|> from({instance_name(), instance_notify_email()})
|
2019-02-20 09:51:25 -07:00
|
|
|
|> subject("#{instance_name()} Report")
|
|
|
|
|> html_body(html_body)
|
|
|
|
end
|
2020-07-14 19:31:20 -06:00
|
|
|
|
|
|
|
def new_unapproved_registration(to, account) do
|
|
|
|
html_body = """
|
2020-11-04 09:12:47 -07:00
|
|
|
<p>New account for review: <a href="#{account.ap_id}">@#{account.nickname}</a></p>
|
2020-07-27 19:36:31 -06:00
|
|
|
<blockquote>#{HTML.strip_tags(account.registration_reason)}</blockquote>
|
2021-05-31 14:09:11 -06:00
|
|
|
<a href="#{Pleroma.Web.Endpoint.url()}/pleroma/admin/#/users/#{account.id}/">Visit AdminFE</a>
|
2020-07-14 19:31:20 -06:00
|
|
|
"""
|
|
|
|
|
|
|
|
new()
|
|
|
|
|> to({to.name, to.email})
|
|
|
|
|> from({instance_name(), instance_notify_email()})
|
|
|
|
|> subject("New account up for review on #{instance_name()} (@#{account.nickname})")
|
|
|
|
|> html_body(html_body)
|
|
|
|
end
|
2019-02-20 09:51:25 -07:00
|
|
|
end
|