Browse Source

restrict remote users from indexing

debug-remote-ip
Alexander Strizhakov 4 years ago
parent
commit
94ddbe4098
No known key found for this signature in database GPG Key ID: 22896A53AEF1381
4 changed files with 77 additions and 1 deletions
  1. +6
    -1
      lib/pleroma/web/metadata.ex
  2. +25
    -0
      lib/pleroma/web/metadata/restrict_indexing.ex
  3. +25
    -0
      test/web/metadata/metadata_test.exs
  4. +21
    -0
      test/web/metadata/restrict_indexing_test.exs

+ 6
- 1
lib/pleroma/web/metadata.ex View File

@@ -6,7 +6,12 @@ defmodule Pleroma.Web.Metadata do
alias Phoenix.HTML

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 =
params
|> parser.build_tags()


+ 25
- 0
lib/pleroma/web/metadata/restrict_indexing.ex View 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
- 0
test/web/metadata/metadata_test.exs View 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
- 0
test/web/metadata/restrict_indexing_test.exs View 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…
Cancel
Save