Do not serve RSS/Atom feeds when instance is private

This commit is contained in:
Mark Felder 2020-08-31 15:58:21 -05:00 committed by rinpatch
commit a85ed6defb
5 changed files with 59 additions and 10 deletions

View file

@ -9,7 +9,15 @@ defmodule Pleroma.Web.Feed.TagController do
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.Feed.FeedView
def feed(conn, %{"tag" => raw_tag} = params) do
def feed(conn, params) do
if Pleroma.Config.get!([:instance, :public]) do
render_feed(conn, params)
else
render_error(conn, :not_found, "Not found")
end
end
def render_feed(conn, %{"tag" => raw_tag} = params) do
{format, tag} = parse_tag(raw_tag)
activities =

View file

@ -37,7 +37,15 @@ defmodule Pleroma.Web.Feed.UserController do
end
end
def feed(conn, %{"nickname" => nickname} = params) do
def feed(conn, params) do
if Pleroma.Config.get!([:instance, :public]) do
render_feed(conn, params)
else
errors(conn, {:error, :not_found})
end
end
def render_feed(conn, %{"nickname" => nickname} = params) do
format = get_format(conn)
format =

View file

@ -11,13 +11,17 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do
@impl Provider
def build_tags(%{user: user}) do
[
{:link,
[
rel: "alternate",
type: "application/atom+xml",
href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom"
], []}
]
if Pleroma.Config.get!([:instance, :public]) do
[
{:link,
[
rel: "alternate",
type: "application/atom+xml",
href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom"
], []}
]
else
[]
end
end
end