forked from AkkomaGang/akkoma
restrict remote users from indexing
This commit is contained in:
parent
8bd5ad8664
commit
94ddbe4098
4 changed files with 77 additions and 1 deletions
|
@ -6,7 +6,12 @@ defmodule Pleroma.Web.Metadata do
|
||||||
alias Phoenix.HTML
|
alias Phoenix.HTML
|
||||||
|
|
||||||
def build_tags(params) do
|
def build_tags(params) do
|
||||||
Enum.reduce(Pleroma.Config.get([__MODULE__, :providers], []), "", fn parser, acc ->
|
providers = [
|
||||||
|
Pleroma.Web.Metadata.Providers.RestrictIndexing
|
||||||
|
| Pleroma.Config.get([__MODULE__, :providers], [])
|
||||||
|
]
|
||||||
|
|
||||||
|
Enum.reduce(providers, "", fn parser, acc ->
|
||||||
rendered_html =
|
rendered_html =
|
||||||
params
|
params
|
||||||
|> parser.build_tags()
|
|> parser.build_tags()
|
||||||
|
|
25
lib/pleroma/web/metadata/restrict_indexing.ex
Normal file
25
lib/pleroma/web/metadata/restrict_indexing.ex
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.Metadata.Providers.RestrictIndexing do
|
||||||
|
@behaviour Pleroma.Web.Metadata.Providers.Provider
|
||||||
|
|
||||||
|
@moduledoc """
|
||||||
|
Restricts indexing of remote users.
|
||||||
|
"""
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def build_tags(%{user: %{local: false}}) do
|
||||||
|
[
|
||||||
|
{:meta,
|
||||||
|
[
|
||||||
|
name: "robots",
|
||||||
|
content: "noindex, noarchive"
|
||||||
|
], []}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def build_tags(%{user: %{local: true}}), do: []
|
||||||
|
end
|
25
test/web/metadata/metadata_test.exs
Normal file
25
test/web/metadata/metadata_test.exs
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.MetadataTest do
|
||||||
|
use Pleroma.DataCase, async: true
|
||||||
|
|
||||||
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
describe "restrict indexing remote users" do
|
||||||
|
test "for remote user" do
|
||||||
|
user = insert(:user, local: false)
|
||||||
|
|
||||||
|
assert Pleroma.Web.Metadata.build_tags(%{user: user}) =~
|
||||||
|
"<meta content=\"noindex, noarchive\" name=\"robots\">"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "for local user" do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
refute Pleroma.Web.Metadata.build_tags(%{user: user}) =~
|
||||||
|
"<meta content=\"noindex, noarchive\" name=\"robots\">"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
21
test/web/metadata/restrict_indexing_test.exs
Normal file
21
test/web/metadata/restrict_indexing_test.exs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.Metadata.Providers.RestrictIndexingTest do
|
||||||
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
|
describe "build_tags/1" do
|
||||||
|
test "for remote user" do
|
||||||
|
assert Pleroma.Web.Metadata.Providers.RestrictIndexing.build_tags(%{
|
||||||
|
user: %Pleroma.User{local: false}
|
||||||
|
}) == [{:meta, [name: "robots", content: "noindex, noarchive"], []}]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "for local user" do
|
||||||
|
assert Pleroma.Web.Metadata.Providers.RestrictIndexing.build_tags(%{
|
||||||
|
user: %Pleroma.User{local: true}
|
||||||
|
}) == []
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue