diff options
| author | Mark Felder <feld@FreeBSD.org> | 2020-10-13 10:08:38 -0500 | 
|---|---|---|
| committer | Mark Felder <feld@FreeBSD.org> | 2020-10-13 10:08:38 -0500 | 
| commit | b738f709532ff18845f5d8cc3888d0bd67f750ab (patch) | |
| tree | 87596ad2bf711bdbc3dc75293996157c3c99d955 /lib | |
| parent | c4fae2611ff4da7c418de236fa643021ddc778c8 (diff) | |
| parent | 8b6221d4ecd1d7e354e7de831dd46e285cb85077 (diff) | |
| download | pleroma-b738f709532ff18845f5d8cc3888d0bd67f750ab.tar.gz pleroma-b738f709532ff18845f5d8cc3888d0bd67f750ab.zip  | |
Merge branch 'develop' into feature/gen-magic
Diffstat (limited to 'lib')
179 files changed, 594 insertions, 209 deletions
diff --git a/lib/credo/check/consistency/file_location.ex b/lib/credo/check/consistency/file_location.ex new file mode 100644 index 000000000..500983608 --- /dev/null +++ b/lib/credo/check/consistency/file_location.ex @@ -0,0 +1,166 @@ +# Pleroma: A lightweight social networking server +# Originally taken from +# https://github.com/VeryBigThings/elixir_common/blob/master/lib/vbt/credo/check/consistency/file_location.ex +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Credo.Check.Consistency.FileLocation do +  @moduledoc false + +  # credo:disable-for-this-file Credo.Check.Readability.Specs + +  @checkdoc """ +  File location should follow the namespace hierarchy of the module it defines. + +  Examples: + +      - `lib/my_system.ex` should define the `MySystem` module +      - `lib/my_system/accounts.ex` should define the `MySystem.Accounts` module +  """ +  @explanation [warning: @checkdoc] + +  @special_namespaces [ +    "controllers", +    "views", +    "operations", +    "channels" +  ] + +  # `use Credo.Check` required that module attributes are already defined, so we need +  # to place these attributes +  # before use/alias expressions. +  # credo:disable-for-next-line VBT.Credo.Check.Consistency.ModuleLayout +  use Credo.Check, category: :warning, base_priority: :high + +  alias Credo.Code + +  def run(source_file, params \\ []) do +    case verify(source_file, params) do +      :ok -> +        [] + +      {:error, module, expected_file} -> +        error(IssueMeta.for(source_file, params), module, expected_file) +    end +  end + +  defp verify(source_file, params) do +    source_file.filename +    |> Path.relative_to_cwd() +    |> verify(Code.ast(source_file), params) +  end + +  @doc false +  def verify(relative_path, ast, params) do +    if verify_path?(relative_path, params), +      do: ast |> main_module() |> verify_module(relative_path, params), +      else: :ok +  end + +  defp verify_path?(relative_path, params) do +    case Path.split(relative_path) do +      ["lib" | _] -> not exclude?(relative_path, params) +      ["test", "support" | _] -> false +      ["test", "test_helper.exs"] -> false +      ["test" | _] -> not exclude?(relative_path, params) +      _ -> false +    end +  end + +  defp exclude?(relative_path, params) do +    params +    |> Keyword.get(:exclude, []) +    |> Enum.any?(&String.starts_with?(relative_path, &1)) +  end + +  defp main_module(ast) do +    {_ast, modules} = Macro.prewalk(ast, [], &traverse/2) +    Enum.at(modules, -1) +  end + +  defp traverse({:defmodule, _meta, args}, modules) do +    [{:__aliases__, _, name_parts}, _module_body] = args +    {args, [Module.concat(name_parts) | modules]} +  end + +  defp traverse(ast, state), do: {ast, state} + +  # empty file - shouldn't really happen, but we'll let it through +  defp verify_module(nil, _relative_path, _params), do: :ok + +  defp verify_module(main_module, relative_path, params) do +    parsed_path = parsed_path(relative_path, params) + +    expected_file = +      expected_file_base(parsed_path.root, main_module) <> +        Path.extname(parsed_path.allowed) + +    cond do +      expected_file == parsed_path.allowed -> +        :ok + +      special_namespaces?(parsed_path.allowed) -> +        original_path = parsed_path.allowed + +        namespace = +          Enum.find(@special_namespaces, original_path, fn namespace -> +            String.contains?(original_path, namespace) +          end) + +        allowed = String.replace(original_path, "/" <> namespace, "") + +        if expected_file == allowed, +          do: :ok, +          else: {:error, main_module, expected_file} + +      true -> +        {:error, main_module, expected_file} +    end +  end + +  defp special_namespaces?(path), do: String.contains?(path, @special_namespaces) + +  defp parsed_path(relative_path, params) do +    parts = Path.split(relative_path) + +    allowed = +      Keyword.get(params, :ignore_folder_namespace, %{}) +      |> Stream.flat_map(fn {root, folders} -> Enum.map(folders, &Path.join([root, &1])) end) +      |> Stream.map(&Path.split/1) +      |> Enum.find(&List.starts_with?(parts, &1)) +      |> case do +        nil -> +          relative_path + +        ignore_parts -> +          Stream.drop(ignore_parts, -1) +          |> Enum.concat(Stream.drop(parts, length(ignore_parts))) +          |> Path.join() +      end + +    %{root: hd(parts), allowed: allowed} +  end + +  defp expected_file_base(root_folder, module) do +    {parent_namespace, module_name} = module |> Module.split() |> Enum.split(-1) + +    relative_path = +      if parent_namespace == [], +        do: "", +        else: parent_namespace |> Module.concat() |> Macro.underscore() + +    file_name = module_name |> Module.concat() |> Macro.underscore() + +    Path.join([root_folder, relative_path, file_name]) +  end + +  defp error(issue_meta, module, expected_file) do +    format_issue(issue_meta, +      message: +        "Mismatch between file name and main module #{inspect(module)}. " <> +          "Expected file path to be #{expected_file}. " <> +          "Either move the file or rename the module.", +      line_no: 1 +    ) +  end +end diff --git a/lib/mix/tasks/pleroma/count_statuses.ex b/lib/mix/tasks/pleroma/count_statuses.ex index e1e8195dd..8761d8f17 100644 --- a/lib/mix/tasks/pleroma/count_statuses.ex +++ b/lib/mix/tasks/pleroma/count_statuses.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Mix.Tasks.Pleroma.CountStatuses do    @shortdoc "Re-counts statuses for all users" diff --git a/lib/mix/tasks/pleroma/digest.ex b/lib/mix/tasks/pleroma/digest.ex index 3595f912d..cac148b88 100644 --- a/lib/mix/tasks/pleroma/digest.ex +++ b/lib/mix/tasks/pleroma/digest.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Mix.Tasks.Pleroma.Digest do    use Mix.Task    import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/docs.ex b/lib/mix/tasks/pleroma/docs.ex index 6088fc71d..ad5c37fc9 100644 --- a/lib/mix/tasks/pleroma/docs.ex +++ b/lib/mix/tasks/pleroma/docs.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Mix.Tasks.Pleroma.Docs do    use Mix.Task    import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/ecto/ecto.ex b/lib/mix/tasks/pleroma/ecto.ex index 3363cd45f..3363cd45f 100644 --- a/lib/mix/tasks/pleroma/ecto/ecto.ex +++ b/lib/mix/tasks/pleroma/ecto.ex diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 9972cb988..bc5facc09 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Mix.Tasks.Pleroma.Email do    use Mix.Task    import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index 91440b453..fc21ae062 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -33,7 +33,10 @@ defmodule Mix.Tasks.Pleroma.Instance do            uploads_dir: :string,            static_dir: :string,            listen_ip: :string, -          listen_port: :string +          listen_port: :string, +          strip_uploads: :string, +          anonymize_uploads: :string, +          dedupe_uploads: :string          ],          aliases: [            o: :output, @@ -158,6 +161,30 @@ defmodule Mix.Tasks.Pleroma.Instance do          )          |> Path.expand() +      strip_uploads = +        get_option( +          options, +          :strip_uploads, +          "Do you want to strip location (GPS) data from uploaded images? (y/n)", +          "y" +        ) === "y" + +      anonymize_uploads = +        get_option( +          options, +          :anonymize_uploads, +          "Do you want to anonymize the filenames of uploads? (y/n)", +          "n" +        ) === "y" + +      dedupe_uploads = +        get_option( +          options, +          :dedupe_uploads, +          "Do you want to deduplicate uploaded files? (y/n)", +          "n" +        ) === "y" +        Config.put([:instance, :static_dir], static_dir)        secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) @@ -188,7 +215,13 @@ defmodule Mix.Tasks.Pleroma.Instance do            uploads_dir: uploads_dir,            rum_enabled: rum_enabled,            listen_ip: listen_ip, -          listen_port: listen_port +          listen_port: listen_port, +          upload_filters: +            upload_filters(%{ +              strip: strip_uploads, +              anonymize: anonymize_uploads, +              dedupe: dedupe_uploads +            })          )        result_psql = @@ -247,4 +280,31 @@ defmodule Mix.Tasks.Pleroma.Instance do      File.write(robots_txt_path, robots_txt)      shell_info("Writing #{robots_txt_path}.")    end + +  defp upload_filters(filters) when is_map(filters) do +    enabled_filters = +      if filters.strip do +        [Pleroma.Upload.Filter.ExifTool] +      else +        [] +      end + +    enabled_filters = +      if filters.anonymize do +        enabled_filters ++ [Pleroma.Upload.Filter.AnonymizeFilename] +      else +        enabled_filters +      end + +    enabled_filters = +      if filters.dedupe do +        enabled_filters ++ [Pleroma.Upload.Filter.Dedupe] +      else +        enabled_filters +      end + +    enabled_filters +  end + +  defp upload_filters(_), do: []  end diff --git a/lib/mix/tasks/pleroma/notification_settings.ex b/lib/mix/tasks/pleroma/notification_settings.ex index 00f5ba7bf..f99275de1 100644 --- a/lib/mix/tasks/pleroma/notification_settings.ex +++ b/lib/mix/tasks/pleroma/notification_settings.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Mix.Tasks.Pleroma.NotificationSettings do    @shortdoc "Enable&Disable privacy option for push notifications"    @moduledoc """ diff --git a/lib/mix/tasks/pleroma/robotstxt.ex b/lib/mix/tasks/pleroma/robots_txt.ex index 24f08180e..24f08180e 100644 --- a/lib/mix/tasks/pleroma/robotstxt.ex +++ b/lib/mix/tasks/pleroma/robots_txt.ex diff --git a/lib/transports.ex b/lib/phoenix/transports/web_socket/raw.ex index aab7fad99..aab7fad99 100644 --- a/lib/transports.ex +++ b/lib/phoenix/transports/web_socket/raw.ex diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 4ed8df09c..301b4e273 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -52,7 +52,7 @@ defmodule Pleroma.Application do      Pleroma.HTML.compile_scrubbers()      Pleroma.Config.Oban.warn()      Config.DeprecationWarnings.warn() -    Pleroma.Plugs.HTTPSecurityPlug.warn_if_disabled() +    Pleroma.Web.Plugs.HTTPSecurityPlug.warn_if_disabled()      Pleroma.ApplicationRequirements.verify!()      setup_instrumenters()      load_custom_modules() @@ -88,7 +88,7 @@ defmodule Pleroma.Application do          Pleroma.Repo,          Config.TransferTask,          Pleroma.Emoji, -        Pleroma.Plugs.RateLimiter.Supervisor +        Pleroma.Web.Plugs.RateLimiter.Supervisor        ] ++          cachex_children() ++          http_children(adapter, @env) ++ diff --git a/lib/pleroma/bbs/authenticator.ex b/lib/pleroma/bbs/authenticator.ex index 815de7002..83ebb756d 100644 --- a/lib/pleroma/bbs/authenticator.ex +++ b/lib/pleroma/bbs/authenticator.ex @@ -4,8 +4,8 @@  defmodule Pleroma.BBS.Authenticator do    use Sshd.PasswordAuthenticator -  alias Pleroma.Plugs.AuthenticationPlug    alias Pleroma.User +  alias Pleroma.Web.Plugs.AuthenticationPlug    def authenticate(username, password) do      username = to_string(username) diff --git a/lib/pleroma/captcha/captcha.ex b/lib/pleroma/captcha.ex index 6ab754b6f..6ab754b6f 100644 --- a/lib/pleroma/captcha/captcha.ex +++ b/lib/pleroma/captcha.ex diff --git a/lib/pleroma/captcha/captcha_service.ex b/lib/pleroma/captcha/service.ex index 959038cef..959038cef 100644 --- a/lib/pleroma/captcha/captcha_service.ex +++ b/lib/pleroma/captcha/service.ex diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 4ba6eaa77..59c6b0f58 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -39,7 +39,8 @@ defmodule Pleroma.Config.DeprecationWarnings do           :ok <- check_media_proxy_whitelist_config(),           :ok <- check_welcome_message_config(),           :ok <- check_gun_pool_options(), -         :ok <- check_activity_expiration_config() do +         :ok <- check_activity_expiration_config(), +         :ok <- check_remote_ip_plug_name() do        :ok      else        _ -> @@ -176,4 +177,20 @@ defmodule Pleroma.Config.DeprecationWarnings do        warning_preface      )    end + +  @spec check_remote_ip_plug_name() :: :ok | nil +  def check_remote_ip_plug_name do +    warning_preface = """ +    !!!DEPRECATION WARNING!!! +    Your config is using old namespace for RemoteIp Plug. Setting should work for now, but you are advised to change to new namespace to prevent possible issues later: +    """ + +    move_namespace_and_warn( +      [ +        {Pleroma.Plugs.RemoteIp, Pleroma.Web.Plugs.RemoteIp, +         "\n* `config :pleroma, Pleroma.Plugs.RemoteIp` is now `config :pleroma, Pleroma.Web.Plugs.RemoteIp`"} +      ], +      warning_preface +    ) +  end  end diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex index 9f601b1a3..8e0351d52 100644 --- a/lib/pleroma/config/oban.ex +++ b/lib/pleroma/config/oban.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Config.Oban do    require Logger diff --git a/lib/pleroma/config/config_db.ex b/lib/pleroma/config_db.ex index e5b7811aa..e5b7811aa 100644 --- a/lib/pleroma/config/config_db.ex +++ b/lib/pleroma/config_db.ex diff --git a/lib/pleroma/conversation/participation_recipient_ship.ex b/lib/pleroma/conversation/participation/recipient_ship.ex index de40bacac..de40bacac 100644 --- a/lib/pleroma/conversation/participation_recipient_ship.ex +++ b/lib/pleroma/conversation/participation/recipient_ship.ex diff --git a/lib/pleroma/docs/generator.ex b/lib/pleroma/docs/generator.ex index a671a6278..a70f83b73 100644 --- a/lib/pleroma/docs/generator.ex +++ b/lib/pleroma/docs/generator.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Docs.Generator do    @callback process(keyword()) :: {:ok, String.t()} diff --git a/lib/pleroma/docs/json.ex b/lib/pleroma/docs/json.ex index feeb4320e..13618b509 100644 --- a/lib/pleroma/docs/json.ex +++ b/lib/pleroma/docs/json.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Docs.JSON do    @behaviour Pleroma.Docs.Generator    @external_resource "config/description.exs" diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index da3f20f43..eac0789a6 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Docs.Markdown do    @behaviour Pleroma.Docs.Generator diff --git a/lib/pleroma/emails/admin_email.ex b/lib/pleroma/emails/admin_email.ex index c27ad1065..8979db2f8 100644 --- a/lib/pleroma/emails/admin_email.ex +++ b/lib/pleroma/emails/admin_email.ex @@ -88,7 +88,7 @@ defmodule Pleroma.Emails.AdminEmail do      html_body = """      <p>New account for review: <a href="#{user_url(account)}">@#{account.nickname}</a></p>      <blockquote>#{HTML.strip_tags(account.registration_reason)}</blockquote> -    <a href="#{Pleroma.Web.base_url()}/pleroma/admin">Visit AdminFE</a> +    <a href="#{Pleroma.Web.base_url()}/pleroma/admin/#/users/#{account.id}/">Visit AdminFE</a>      """      new() diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 8f1989ada..0670f29f1 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Emoji.Pack do    @derive {Jason.Encoder, only: [:files, :pack, :files_count]}    defstruct files: %{}, diff --git a/lib/pleroma/gun/gun.ex b/lib/pleroma/gun.ex index 4043e4880..4043e4880 100644 --- a/lib/pleroma/gun/gun.ex +++ b/lib/pleroma/gun.ex diff --git a/lib/pleroma/gun/connection_pool.ex b/lib/pleroma/gun/connection_pool.ex index f34602b73..e322f192a 100644 --- a/lib/pleroma/gun/connection_pool.ex +++ b/lib/pleroma/gun/connection_pool.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Gun.ConnectionPool do    @registry __MODULE__ diff --git a/lib/pleroma/gun/connection_pool/reclaimer.ex b/lib/pleroma/gun/connection_pool/reclaimer.ex index cea800882..241e8b04f 100644 --- a/lib/pleroma/gun/connection_pool/reclaimer.ex +++ b/lib/pleroma/gun/connection_pool/reclaimer.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Gun.ConnectionPool.Reclaimer do    use GenServer, restart: :temporary diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index bf57e9e5f..b71816bed 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Gun.ConnectionPool.Worker do    alias Pleroma.Gun    use GenServer, restart: :temporary diff --git a/lib/pleroma/gun/connection_pool/worker_supervisor.ex b/lib/pleroma/gun/connection_pool/worker_supervisor.ex index 39615c956..4c23bcbd9 100644 --- a/lib/pleroma/gun/connection_pool/worker_supervisor.ex +++ b/lib/pleroma/gun/connection_pool/worker_supervisor.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Gun.ConnectionPool.WorkerSupervisor do    @moduledoc "Supervisor for pool workers. Does not do anything except enforce max connection limit" diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http.ex index 052597191..052597191 100644 --- a/lib/pleroma/http/http.ex +++ b/lib/pleroma/http.ex diff --git a/lib/pleroma/http/adapter_helper/default.ex b/lib/pleroma/http/adapter_helper/default.ex index e13441316..8567a616b 100644 --- a/lib/pleroma/http/adapter_helper/default.ex +++ b/lib/pleroma/http/adapter_helper/default.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.HTTP.AdapterHelper.Default do    alias Pleroma.HTTP.AdapterHelper diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index ef84553c1..ff60513fd 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.HTTP.AdapterHelper.Hackney do    @behaviour Pleroma.HTTP.AdapterHelper diff --git a/lib/pleroma/jwt.ex b/lib/pleroma/jwt.ex index 10102ff5d..faeb77781 100644 --- a/lib/pleroma/jwt.ex +++ b/lib/pleroma/jwt.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.JWT do    use Joken.Config diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 47036a6f6..38a863443 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.ModerationLog do    use Ecto.Schema diff --git a/lib/pleroma/reverse_proxy/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex index 8ae1157df..8ae1157df 100644 --- a/lib/pleroma/reverse_proxy/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy.ex diff --git a/lib/pleroma/telemetry/logger.ex b/lib/pleroma/telemetry/logger.ex index 197b1d091..003079cf3 100644 --- a/lib/pleroma/telemetry/logger.ex +++ b/lib/pleroma/telemetry/logger.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Telemetry.Logger do    @moduledoc "Transforms Pleroma telemetry events to logs" diff --git a/lib/pleroma/tests/auth_test_controller.ex b/lib/pleroma/tests/auth_test_controller.ex index fb04411d9..b30d83567 100644 --- a/lib/pleroma/tests/auth_test_controller.ex +++ b/lib/pleroma/tests/auth_test_controller.ex @@ -8,9 +8,9 @@ defmodule Pleroma.Tests.AuthTestController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    # Serves only with proper OAuth token (:api and :authenticated_api)    # Skipping EnsurePublicOrAuthenticatedPlug has no effect in this case diff --git a/lib/pleroma/uploaders/uploader.ex b/lib/pleroma/uploaders/uploader.ex index 9a94534e9..6249eceb1 100644 --- a/lib/pleroma/uploaders/uploader.ex +++ b/lib/pleroma/uploaders/uploader.ex @@ -12,7 +12,7 @@ defmodule Pleroma.Uploaders.Uploader do    @doc """    Instructs how to get the file from the backend. -  Used by `Pleroma.Plugs.UploadedMedia`. +  Used by `Pleroma.Web.Plugs.UploadedMedia`.    """    @type get_method :: {:static_dir, directory :: String.t()} | {:url, url :: String.t()}    @callback get_file(file :: String.t()) :: {:ok, get_method()} diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web.ex index 4f9281851..7779826e3 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web.ex @@ -2,11 +2,6 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.Plug do -  # Substitute for `call/2` which is defined with `use Pleroma.Web, :plug` -  @callback perform(Plug.Conn.t(), Plug.opts()) :: Plug.Conn.t() -end -  defmodule Pleroma.Web do    @moduledoc """    A module that keeps using definitions for controllers, @@ -25,12 +20,12 @@ defmodule Pleroma.Web do    below.    """ -  alias Pleroma.Plugs.EnsureAuthenticatedPlug -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.ExpectAuthenticatedCheckPlug -  alias Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.PlugHelper +  alias Pleroma.Web.Plugs.EnsureAuthenticatedPlug +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.ExpectAuthenticatedCheckPlug +  alias Pleroma.Web.Plugs.ExpectPublicOrAuthenticatedCheckPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.PlugHelper    def controller do      quote do diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 27bf6347d..570bcc7e7 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -9,7 +9,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do    alias Pleroma.Delivery    alias Pleroma.Object    alias Pleroma.Object.Fetcher -  alias Pleroma.Plugs.EnsureAuthenticatedPlug    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.ActivityPub.Builder @@ -23,8 +22,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do    alias Pleroma.Web.ActivityPub.Visibility    alias Pleroma.Web.ControllerHelper    alias Pleroma.Web.Endpoint -  alias Pleroma.Web.FederatingPlug    alias Pleroma.Web.Federator +  alias Pleroma.Web.Plugs.EnsureAuthenticatedPlug +  alias Pleroma.Web.Plugs.FederatingPlug    require Logger @@ -48,7 +48,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do    plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:upload_media])    plug( -    Pleroma.Plugs.Cache, +    Pleroma.Web.Plugs.Cache,      [query_params: false, tracking_fun: &__MODULE__.track_object_fetch/2]      when action in [:activity, :object]    ) diff --git a/lib/pleroma/web/activity_pub/builder.ex b/lib/pleroma/web/activity_pub/builder.ex index 9a7b7d9de..298aff6b7 100644 --- a/lib/pleroma/web/activity_pub/builder.ex +++ b/lib/pleroma/web/activity_pub/builder.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.ActivityPub.Builder do    @moduledoc """    This module builds the objects. Meant to be used for creating local objects. diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index b9a83a544..2eec0ce86 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.ActivityPub.SideEffects do    @moduledoc """    This module looks at an inserted object and executes the side effects that it diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index d5713c3dd..bdd3e195d 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -10,7 +10,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do    alias Pleroma.Config    alias Pleroma.MFA    alias Pleroma.ModerationLog -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Stats    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub @@ -21,6 +20,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do    alias Pleroma.Web.AdminAPI.ModerationLogView    alias Pleroma.Web.AdminAPI.Search    alias Pleroma.Web.Endpoint +  alias Pleroma.Web.Plugs.OAuthScopesPlug    alias Pleroma.Web.Router    @users_page_size 50 diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex index 967600d69..af8ff8292 100644 --- a/lib/pleroma/web/admin_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -10,10 +10,10 @@ defmodule Pleroma.Web.AdminAPI.ChatController do    alias Pleroma.Chat.MessageReference    alias Pleroma.ModerationLog    alias Pleroma.Pagination -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.AdminAPI    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView +  alias Pleroma.Web.Plugs.OAuthScopesPlug    require Logger diff --git a/lib/pleroma/web/admin_api/controllers/config_controller.ex b/lib/pleroma/web/admin_api/controllers/config_controller.ex index 0df13007f..5d155af3d 100644 --- a/lib/pleroma/web/admin_api/controllers/config_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/config_controller.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigController do    alias Pleroma.Config    alias Pleroma.ConfigDB -  alias Pleroma.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug(OAuthScopesPlug, %{scopes: ["write"], admin: true} when action == :update) diff --git a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex index 504d9b517..37dbfeb72 100644 --- a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex @@ -5,9 +5,9 @@  defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.InstanceStatic -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.InstanceDocument +  alias Pleroma.Web.Plugs.InstanceStatic +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/admin_api/controllers/invite_controller.ex b/lib/pleroma/web/admin_api/controllers/invite_controller.ex index 7d169b8d2..6a9b4038a 100644 --- a/lib/pleroma/web/admin_api/controllers/invite_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/invite_controller.ex @@ -8,8 +8,8 @@ defmodule Pleroma.Web.AdminAPI.InviteController do    import Pleroma.Web.ControllerHelper, only: [json_response: 3]    alias Pleroma.Config -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.UserInviteToken +  alias Pleroma.Web.Plugs.OAuthScopesPlug    require Logger diff --git a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex index 131e22d78..6d92e9f7f 100644 --- a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex @@ -5,9 +5,9 @@  defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.ApiSpec.Admin, as: Spec    alias Pleroma.Web.MediaProxy +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex b/lib/pleroma/web/admin_api/controllers/o_auth_app_controller.ex index dca23ea73..116a05a4d 100644 --- a/lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/o_auth_app_controller.ex @@ -7,8 +7,8 @@ defmodule Pleroma.Web.AdminAPI.OAuthAppController do    import Pleroma.Web.ControllerHelper, only: [json_response: 3] -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.OAuth.App +  alias Pleroma.Web.Plugs.OAuthScopesPlug    require Logger diff --git a/lib/pleroma/web/admin_api/controllers/relay_controller.ex b/lib/pleroma/web/admin_api/controllers/relay_controller.ex index 6c19f09f7..611388447 100644 --- a/lib/pleroma/web/admin_api/controllers/relay_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/relay_controller.ex @@ -6,8 +6,8 @@ defmodule Pleroma.Web.AdminAPI.RelayController do    use Pleroma.Web, :controller    alias Pleroma.ModerationLog -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.ActivityPub.Relay +  alias Pleroma.Web.Plugs.OAuthScopesPlug    require Logger diff --git a/lib/pleroma/web/admin_api/controllers/report_controller.ex b/lib/pleroma/web/admin_api/controllers/report_controller.ex index 4c011e174..86da93893 100644 --- a/lib/pleroma/web/admin_api/controllers/report_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/report_controller.ex @@ -9,12 +9,12 @@ defmodule Pleroma.Web.AdminAPI.ReportController do    alias Pleroma.Activity    alias Pleroma.ModerationLog -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.ReportNote    alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.AdminAPI    alias Pleroma.Web.AdminAPI.Report    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    require Logger diff --git a/lib/pleroma/web/admin_api/controllers/status_controller.ex b/lib/pleroma/web/admin_api/controllers/status_controller.ex index bc48cc527..2bb437cfe 100644 --- a/lib/pleroma/web/admin_api/controllers/status_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/status_controller.ex @@ -7,10 +7,10 @@ defmodule Pleroma.Web.AdminAPI.StatusController do    alias Pleroma.Activity    alias Pleroma.ModerationLog -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.MastodonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    require Logger diff --git a/lib/pleroma/web/api_spec/operations/admin/oauth_app_operation.ex b/lib/pleroma/web/api_spec/operations/admin/o_auth_app_operation.ex index a75f3e622..a75f3e622 100644 --- a/lib/pleroma/web/api_spec/operations/admin/oauth_app_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/o_auth_app_operation.ex diff --git a/lib/pleroma/web/auth/pleroma_authenticator.ex b/lib/pleroma/web/auth/pleroma_authenticator.ex index c611b3e09..d6d2a8d06 100644 --- a/lib/pleroma/web/auth/pleroma_authenticator.ex +++ b/lib/pleroma/web/auth/pleroma_authenticator.ex @@ -3,10 +3,10 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.Auth.PleromaAuthenticator do -  alias Pleroma.Plugs.AuthenticationPlug    alias Pleroma.Registration    alias Pleroma.Repo    alias Pleroma.User +  alias Pleroma.Web.Plugs.AuthenticationPlug    import Pleroma.Web.Auth.Authenticator,      only: [fetch_credentials: 1, fetch_user: 1] diff --git a/lib/pleroma/web/auth/totp_authenticator.ex b/lib/pleroma/web/auth/totp_authenticator.ex index 1794e407c..edc9871ea 100644 --- a/lib/pleroma/web/auth/totp_authenticator.ex +++ b/lib/pleroma/web/auth/totp_authenticator.ex @@ -5,8 +5,8 @@  defmodule Pleroma.Web.Auth.TOTPAuthenticator do    alias Pleroma.MFA    alias Pleroma.MFA.TOTP -  alias Pleroma.Plugs.AuthenticationPlug    alias Pleroma.User +  alias Pleroma.Web.Plugs.AuthenticationPlug    @doc "Verify code or check backup code."    @spec verify(String.t(), User.t()) :: diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api.ex index 60a50b027..60a50b027 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api.ex diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 9d7b24eb2..21f4d43e9 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -12,12 +12,12 @@ defmodule Pleroma.Web.CommonAPI.Utils do    alias Pleroma.Conversation.Participation    alias Pleroma.Formatter    alias Pleroma.Object -  alias Pleroma.Plugs.AuthenticationPlug    alias Pleroma.Repo    alias Pleroma.User    alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.ActivityPub.Visibility    alias Pleroma.Web.MediaProxy +  alias Pleroma.Web.Plugs.AuthenticationPlug    require Logger    require Pleroma.Constants diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index 8b153763d..56562c12f 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -9,17 +9,17 @@ defmodule Pleroma.Web.Endpoint do    socket("/socket", Pleroma.Web.UserSocket) -  plug(Pleroma.Plugs.SetLocalePlug) +  plug(Pleroma.Web.Plugs.SetLocalePlug)    plug(CORSPlug) -  plug(Pleroma.Plugs.HTTPSecurityPlug) -  plug(Pleroma.Plugs.UploadedMedia) +  plug(Pleroma.Web.Plugs.HTTPSecurityPlug) +  plug(Pleroma.Web.Plugs.UploadedMedia)    @static_cache_control "public, no-cache"    # InstanceStatic needs to be before Plug.Static to be able to override shipped-static files    # If you're adding new paths to `only:` you'll need to configure them in InstanceStatic as well    # Cache-control headers are duplicated in case we turn off etags in the future -  plug(Pleroma.Plugs.InstanceStatic, +  plug(Pleroma.Web.Plugs.InstanceStatic,      at: "/",      gzip: true,      cache_control_for_etags: @static_cache_control, @@ -29,7 +29,7 @@ defmodule Pleroma.Web.Endpoint do    )    # Careful! No `only` restriction here, as we don't know what frontends contain. -  plug(Pleroma.Plugs.FrontendStatic, +  plug(Pleroma.Web.Plugs.FrontendStatic,      at: "/",      frontend_type: :primary,      gzip: true, @@ -41,7 +41,7 @@ defmodule Pleroma.Web.Endpoint do    plug(Plug.Static.IndexHtml, at: "/pleroma/admin/") -  plug(Pleroma.Plugs.FrontendStatic, +  plug(Pleroma.Web.Plugs.FrontendStatic,      at: "/pleroma/admin",      frontend_type: :admin,      gzip: true, @@ -79,7 +79,7 @@ defmodule Pleroma.Web.Endpoint do      plug(Phoenix.CodeReloader)    end -  plug(Pleroma.Plugs.TrailingFormatPlug) +  plug(Pleroma.Web.Plugs.TrailingFormatPlug)    plug(Plug.RequestId)    plug(Plug.Logger, log: :debug) @@ -122,7 +122,7 @@ defmodule Pleroma.Web.Endpoint do      extra: extra    ) -  plug(Pleroma.Plugs.RemoteIp) +  plug(Pleroma.Web.Plugs.RemoteIp)    defmodule Instrumenter do      use Prometheus.PhoenixInstrumenter diff --git a/lib/pleroma/web/fallback_redirect_controller.ex b/lib/pleroma/web/fallback/redirect_controller.ex index 431ad5485..6f759d559 100644 --- a/lib/pleroma/web/fallback_redirect_controller.ex +++ b/lib/pleroma/web/fallback/redirect_controller.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Fallback.RedirectController do +defmodule Pleroma.Web.Fallback.RedirectController do    use Pleroma.Web, :controller    require Logger @@ -75,7 +75,7 @@ defmodule Fallback.RedirectController do    end    defp index_file_path do -    Pleroma.Plugs.InstanceStatic.file_path("index.html") +    Pleroma.Web.Plugs.InstanceStatic.file_path("index.html")    end    defp build_tags(conn, params) do diff --git a/lib/pleroma/web/fed_sockets/fed_sockets.ex b/lib/pleroma/web/fed_sockets.ex index 1fd5899c8..1fd5899c8 100644 --- a/lib/pleroma/web/fed_sockets/fed_sockets.ex +++ b/lib/pleroma/web/fed_sockets.ex diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator.ex index 130654145..130654145 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator.ex diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 71eb1ea7e..752983c3b 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -5,27 +5,26 @@  defmodule Pleroma.Web.Feed.UserController do    use Pleroma.Web, :controller -  alias Fallback.RedirectController    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.ActivityPub.ActivityPubController    alias Pleroma.Web.Feed.FeedView -  plug(Pleroma.Plugs.SetFormatPlug when action in [:feed_redirect]) +  plug(Pleroma.Web.Plugs.SetFormatPlug when action in [:feed_redirect])    action_fallback(:errors)    def feed_redirect(%{assigns: %{format: "html"}} = conn, %{"nickname" => nickname}) do      with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname_or_id(nickname)} do -      RedirectController.redirector_with_meta(conn, %{user: user}) +      Pleroma.Web.Fallback.RedirectController.redirector_with_meta(conn, %{user: user})      end    end    def feed_redirect(%{assigns: %{format: format}} = conn, _params)        when format in ["json", "activity+json"] do      with %{halted: false} = conn <- -           Pleroma.Plugs.EnsureAuthenticatedPlug.call(conn, -             unless_func: &Pleroma.Web.FederatingPlug.federating?/1 +           Pleroma.Web.Plugs.EnsureAuthenticatedPlug.call(conn, +             unless_func: &Pleroma.Web.Plugs.FederatingPlug.federating?/1             ) do        ActivityPubController.call(conn, :user)      end diff --git a/lib/pleroma/web/mailer/subscription_controller.ex b/lib/pleroma/web/mailer/subscription_controller.ex index 478a83518..ace44afd1 100644 --- a/lib/pleroma/web/mailer/subscription_controller.ex +++ b/lib/pleroma/web/mailer/subscription_controller.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.Mailer.SubscriptionController do    use Pleroma.Web, :controller diff --git a/lib/pleroma/web/masto_fe_controller.ex b/lib/pleroma/web/masto_fe_controller.ex index 43ec70021..08f92d55f 100644 --- a/lib/pleroma/web/masto_fe_controller.ex +++ b/lib/pleroma/web/masto_fe_controller.ex @@ -5,9 +5,9 @@  defmodule Pleroma.Web.MastoFEController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action == :put_settings) diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 95d8452df..4f9696d52 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -15,9 +15,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do      ]    alias Pleroma.Maps -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.ActivityPub.Builder @@ -29,6 +26,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do    alias Pleroma.Web.MastodonAPI.StatusView    alias Pleroma.Web.OAuth.OAuthController    alias Pleroma.Web.OAuth.OAuthView +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.RateLimiter    alias Pleroma.Web.TwitterAPI.TwitterAPI    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex index a516b6c20..143dcf80c 100644 --- a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex @@ -5,12 +5,12 @@  defmodule Pleroma.Web.MastodonAPI.AppController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Repo    alias Pleroma.Web.OAuth.App    alias Pleroma.Web.OAuth.Scopes    alias Pleroma.Web.OAuth.Token +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    action_fallback(Pleroma.Web.MastodonAPI.FallbackController) diff --git a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex index 57c0be5fe..75b809aab 100644 --- a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do    action_fallback(Pleroma.Web.MastodonAPI.FallbackController) -  plug(Pleroma.Plugs.RateLimiter, [name: :password_reset] when action == :password_reset) +  plug(Pleroma.Web.Plugs.RateLimiter, [name: :password_reset] when action == :password_reset)    @local_mastodon_name "Mastodon-Local" diff --git a/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex b/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex index f35ec3596..61347d8db 100644 --- a/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex @@ -8,8 +8,8 @@ defmodule Pleroma.Web.MastodonAPI.ConversationController do    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2]    alias Pleroma.Conversation.Participation -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Repo +  alias Pleroma.Web.Plugs.OAuthScopesPlug    action_fallback(Pleroma.Web.MastodonAPI.FallbackController) diff --git a/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex b/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex index c5f47c5df..872cb1f4d 100644 --- a/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiController do    plug(      :skip_plug, -    [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] +    [Pleroma.Web.Plugs.OAuthScopesPlug, Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug]      when action == :index    ) diff --git a/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex b/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex index 9c2d093cd..503bd7d5f 100644 --- a/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex @@ -5,8 +5,8 @@  defmodule Pleroma.Web.MastodonAPI.DomainBlockController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate)    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.DomainBlockOperation diff --git a/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex b/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex index abbf0ce02..c71a34b15 100644 --- a/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.FilterController do    use Pleroma.Web, :controller    alias Pleroma.Filter -  alias Pleroma.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    @oauth_read_actions [:show, :index] diff --git a/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex b/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex index 748b6b475..f8cd7fa9f 100644 --- a/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex @@ -5,9 +5,9 @@  defmodule Pleroma.Web.MastodonAPI.FollowRequestController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(:put_view, Pleroma.Web.MastodonAPI.AccountView)    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex index d8859731d..07a32491a 100644 --- a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceController do    plug(      :skip_plug, -    [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] +    [Pleroma.Web.Plugs.OAuthScopesPlug, Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug]      when action in [:show, :peers]    ) diff --git a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex index 5daeaa780..f6b51bf02 100644 --- a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex @@ -5,9 +5,9 @@  defmodule Pleroma.Web.MastodonAPI.ListController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.MastodonAPI.AccountView +  alias Pleroma.Web.Plugs.OAuthScopesPlug    @oauth_read_actions [:index, :show, :list_accounts] diff --git a/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex b/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex index 85310edfa..0628b2b49 100644 --- a/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex @@ -4,7 +4,7 @@  defmodule Pleroma.Web.MastodonAPI.MarkerController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index e7767de4e..9cf682c7b 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -17,7 +17,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do    plug(      :skip_plug, -    [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] +    [Pleroma.Web.Plugs.OAuthScopesPlug, Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug]      when action in [:empty_array, :empty_object]    ) diff --git a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex index 09acea7f4..161193134 100644 --- a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex @@ -6,9 +6,9 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do    use Pleroma.Web, :controller    alias Pleroma.Object -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub +  alias Pleroma.Web.Plugs.OAuthScopesPlug    action_fallback(Pleroma.Web.MastodonAPI.FallbackController)    plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:create, :create2]) diff --git a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex index e25cef30b..c3c8606f2 100644 --- a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex @@ -8,8 +8,8 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2]    alias Pleroma.Notification -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.MastodonAPI.MastodonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    @oauth_read_actions [:show, :index] diff --git a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex index db46ffcfc..3dcd1c44f 100644 --- a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex @@ -9,9 +9,9 @@ defmodule Pleroma.Web.MastodonAPI.PollController do    alias Pleroma.Activity    alias Pleroma.Object -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.ActivityPub.Visibility    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    action_fallback(Pleroma.Web.MastodonAPI.FallbackController) diff --git a/lib/pleroma/web/mastodon_api/controllers/report_controller.ex b/lib/pleroma/web/mastodon_api/controllers/report_controller.ex index 405167108..156544f40 100644 --- a/lib/pleroma/web/mastodon_api/controllers/report_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/report_controller.ex @@ -3,14 +3,12 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.MastodonAPI.ReportController do -  alias Pleroma.Plugs.OAuthScopesPlug -    use Pleroma.Web, :controller    action_fallback(Pleroma.Web.MastodonAPI.FallbackController)    plug(Pleroma.Web.ApiSpec.CastAndValidate) -  plug(OAuthScopesPlug, %{scopes: ["write:reports"]} when action == :create) +  plug(Pleroma.Web.Plugs.OAuthScopesPlug, %{scopes: ["write:reports"]} when action == :create)    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.ReportOperation diff --git a/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex b/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex index 1719c67ea..322a46497 100644 --- a/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityController do    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.ScheduledActivity    alias Pleroma.Web.MastodonAPI.MastodonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    @oauth_read_actions [:show, :index] diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex index 5a983db39..0043c3a56 100644 --- a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -6,14 +6,14 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do    use Pleroma.Web, :controller    alias Pleroma.Activity -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.Repo    alias Pleroma.User    alias Pleroma.Web    alias Pleroma.Web.ControllerHelper    alias Pleroma.Web.MastodonAPI.AccountView    alias Pleroma.Web.MastodonAPI.StatusView +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.RateLimiter    require Logger diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index ecfa38489..08d6c1c22 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -13,8 +13,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do    alias Pleroma.Activity    alias Pleroma.Bookmark    alias Pleroma.Object -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.Repo    alias Pleroma.ScheduledActivity    alias Pleroma.User @@ -23,9 +21,15 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.MastodonAPI.AccountView    alias Pleroma.Web.MastodonAPI.ScheduledActivityView +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.RateLimiter    plug(Pleroma.Web.ApiSpec.CastAndValidate) -  plug(:skip_plug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :show]) + +  plug( +    :skip_plug, +    Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :show] +  )    @unauthenticated_access %{fallback: :proceed_unauthenticated, scopes: []} diff --git a/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex b/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex index 34eac97c5..20138908c 100644 --- a/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.SubscriptionController do    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug(:restrict_push_enabled) -  plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["push"]}) +  plug(Pleroma.Web.Plugs.OAuthScopesPlug, %{scopes: ["push"]})    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.SubscriptionOperation diff --git a/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex b/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex index f91df9ab7..5765271cf 100644 --- a/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.SuggestionController do    require Logger    plug(Pleroma.Web.ApiSpec.CastAndValidate) -  plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["read"]} when action == :index) +  plug(Pleroma.Web.Plugs.OAuthScopesPlug, %{scopes: ["read"]} when action == :index)    def open_api_operation(action) do      operation = String.to_existing_atom("#{action}_operation") diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index 5272790d3..7a5c80e01 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -10,11 +10,11 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do    alias Pleroma.Config    alias Pleroma.Pagination -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.RateLimiter    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:public, :hashtag]) diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy.ex index 8656b8cad..8656b8cad 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy.ex diff --git a/lib/pleroma/web/media_proxy/invalidations/http.ex b/lib/pleroma/web/media_proxy/invalidation/http.ex index bb81d8888..bb81d8888 100644 --- a/lib/pleroma/web/media_proxy/invalidations/http.ex +++ b/lib/pleroma/web/media_proxy/invalidation/http.ex diff --git a/lib/pleroma/web/media_proxy/invalidations/script.ex b/lib/pleroma/web/media_proxy/invalidation/script.ex index d32ffc50b..d32ffc50b 100644 --- a/lib/pleroma/web/media_proxy/invalidations/script.ex +++ b/lib/pleroma/web/media_proxy/invalidation/script.ex diff --git a/lib/pleroma/web/metadata/feed.ex b/lib/pleroma/web/metadata/providers/feed.ex index bd1459a17..bd1459a17 100644 --- a/lib/pleroma/web/metadata/feed.ex +++ b/lib/pleroma/web/metadata/providers/feed.ex diff --git a/lib/pleroma/web/metadata/opengraph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index bb1b23208..bb1b23208 100644 --- a/lib/pleroma/web/metadata/opengraph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex diff --git a/lib/pleroma/web/metadata/provider.ex b/lib/pleroma/web/metadata/providers/provider.ex index 767288f9c..767288f9c 100644 --- a/lib/pleroma/web/metadata/provider.ex +++ b/lib/pleroma/web/metadata/providers/provider.ex diff --git a/lib/pleroma/web/metadata/rel_me.ex b/lib/pleroma/web/metadata/providers/rel_me.ex index 8905c9c72..8905c9c72 100644 --- a/lib/pleroma/web/metadata/rel_me.ex +++ b/lib/pleroma/web/metadata/providers/rel_me.ex diff --git a/lib/pleroma/web/metadata/restrict_indexing.ex b/lib/pleroma/web/metadata/providers/restrict_indexing.ex index a1dcb6e15..a1dcb6e15 100644 --- a/lib/pleroma/web/metadata/restrict_indexing.ex +++ b/lib/pleroma/web/metadata/providers/restrict_indexing.ex diff --git a/lib/pleroma/web/metadata/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index df34b033f..df34b033f 100644 --- a/lib/pleroma/web/metadata/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex diff --git a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex b/lib/pleroma/web/mongoose_im/mongoose_im_controller.ex index 6cbbe8fd8..2a5c7c356 100644 --- a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex +++ b/lib/pleroma/web/mongoose_im/mongoose_im_controller.ex @@ -5,10 +5,10 @@  defmodule Pleroma.Web.MongooseIM.MongooseIMController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.AuthenticationPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.Repo    alias Pleroma.User +  alias Pleroma.Web.Plugs.AuthenticationPlug +  alias Pleroma.Web.Plugs.RateLimiter    plug(RateLimiter, [name: :authentication] when action in [:user_exists, :check_password])    plug(RateLimiter, [name: :authentication, params: ["user"]] when action == :check_password) diff --git a/lib/pleroma/web/oauth.ex b/lib/pleroma/web/o_auth.ex index 2f1b8708d..2f1b8708d 100644 --- a/lib/pleroma/web/oauth.ex +++ b/lib/pleroma/web/o_auth.ex diff --git a/lib/pleroma/web/oauth/app.ex b/lib/pleroma/web/o_auth/app.ex index df99472e1..df99472e1 100644 --- a/lib/pleroma/web/oauth/app.ex +++ b/lib/pleroma/web/o_auth/app.ex diff --git a/lib/pleroma/web/oauth/authorization.ex b/lib/pleroma/web/o_auth/authorization.ex index 268ee5b63..268ee5b63 100644 --- a/lib/pleroma/web/oauth/authorization.ex +++ b/lib/pleroma/web/o_auth/authorization.ex diff --git a/lib/pleroma/web/oauth/fallback_controller.ex b/lib/pleroma/web/o_auth/fallback_controller.ex index a89ced886..a89ced886 100644 --- a/lib/pleroma/web/oauth/fallback_controller.ex +++ b/lib/pleroma/web/o_auth/fallback_controller.ex diff --git a/lib/pleroma/web/oauth/mfa_controller.ex b/lib/pleroma/web/o_auth/mfa_controller.ex index f102c93e7..f102c93e7 100644 --- a/lib/pleroma/web/oauth/mfa_controller.ex +++ b/lib/pleroma/web/o_auth/mfa_controller.ex diff --git a/lib/pleroma/web/oauth/mfa_view.ex b/lib/pleroma/web/o_auth/mfa_view.ex index 5d87db268..5d87db268 100644 --- a/lib/pleroma/web/oauth/mfa_view.ex +++ b/lib/pleroma/web/o_auth/mfa_view.ex diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex index a4152e840..d2f9d1ceb 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.OAuth.OAuthController do    alias Pleroma.Helpers.UriHelper    alias Pleroma.Maps    alias Pleroma.MFA -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.Registration    alias Pleroma.Repo    alias Pleroma.User @@ -23,6 +22,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do    alias Pleroma.Web.OAuth.Token    alias Pleroma.Web.OAuth.Token.Strategy.RefreshToken    alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken +  alias Pleroma.Web.Plugs.RateLimiter    require Logger @@ -31,7 +31,10 @@ defmodule Pleroma.Web.OAuth.OAuthController do    plug(:fetch_session)    plug(:fetch_flash) -  plug(:skip_plug, [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug]) +  plug(:skip_plug, [ +    Pleroma.Web.Plugs.OAuthScopesPlug, +    Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  ])    plug(RateLimiter, [name: :authentication] when action == :create_authorization) diff --git a/lib/pleroma/web/oauth/oauth_view.ex b/lib/pleroma/web/o_auth/o_auth_view.ex index f55247ebd..f55247ebd 100644 --- a/lib/pleroma/web/oauth/oauth_view.ex +++ b/lib/pleroma/web/o_auth/o_auth_view.ex diff --git a/lib/pleroma/web/oauth/scopes.ex b/lib/pleroma/web/o_auth/scopes.ex index 6f06f1431..90b9a0471 100644 --- a/lib/pleroma/web/oauth/scopes.ex +++ b/lib/pleroma/web/o_auth/scopes.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.OAuth.Scopes do    Functions for dealing with scopes.    """ -  alias Pleroma.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    @doc """    Fetch scopes from request params. diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/o_auth/token.ex index de37998f2..de37998f2 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/o_auth/token.ex diff --git a/lib/pleroma/web/oauth/token/query.ex b/lib/pleroma/web/o_auth/token/query.ex index fd6d9b112..fd6d9b112 100644 --- a/lib/pleroma/web/oauth/token/query.ex +++ b/lib/pleroma/web/o_auth/token/query.ex diff --git a/lib/pleroma/web/oauth/token/strategy/refresh_token.ex b/lib/pleroma/web/o_auth/token/strategy/refresh_token.ex index 625b0fde2..625b0fde2 100644 --- a/lib/pleroma/web/oauth/token/strategy/refresh_token.ex +++ b/lib/pleroma/web/o_auth/token/strategy/refresh_token.ex diff --git a/lib/pleroma/web/oauth/token/strategy/revoke.ex b/lib/pleroma/web/o_auth/token/strategy/revoke.ex index 069c1ee21..069c1ee21 100644 --- a/lib/pleroma/web/oauth/token/strategy/revoke.ex +++ b/lib/pleroma/web/o_auth/token/strategy/revoke.ex diff --git a/lib/pleroma/web/oauth/token/utils.ex b/lib/pleroma/web/o_auth/token/utils.ex index 43aeab6b0..43aeab6b0 100644 --- a/lib/pleroma/web/oauth/token/utils.ex +++ b/lib/pleroma/web/o_auth/token/utils.ex diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/o_status/o_status_controller.ex index de1b0b3f0..b044260b3 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/o_status/o_status_controller.ex @@ -5,19 +5,19 @@  defmodule Pleroma.Web.OStatus.OStatusController do    use Pleroma.Web, :controller -  alias Fallback.RedirectController    alias Pleroma.Activity    alias Pleroma.Object -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPubController    alias Pleroma.Web.ActivityPub.Visibility    alias Pleroma.Web.Endpoint +  alias Pleroma.Web.Fallback.RedirectController    alias Pleroma.Web.Metadata.PlayerView +  alias Pleroma.Web.Plugs.RateLimiter    alias Pleroma.Web.Router -  plug(Pleroma.Plugs.EnsureAuthenticatedPlug, -    unless_func: &Pleroma.Web.FederatingPlug.federating?/1 +  plug(Pleroma.Web.Plugs.EnsureAuthenticatedPlug, +    unless_func: &Pleroma.Web.Plugs.FederatingPlug.federating?/1    )    plug( @@ -26,7 +26,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do    )    plug( -    Pleroma.Plugs.SetFormatPlug +    Pleroma.Web.Plugs.SetFormatPlug      when action in [:object, :activity, :notice]    ) diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index a0ed41d96..30cf83567 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -8,12 +8,12 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do    import Pleroma.Web.ControllerHelper,      only: [json_response: 3, add_link_headers: 2, assign_account_by_id: 2] -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.MastodonAPI.StatusView +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.RateLimiter    require Pleroma.Constants diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex index e667831c5..6357148d0 100644 --- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -11,12 +11,12 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do    alias Pleroma.Chat.MessageReference    alias Pleroma.Object    alias Pleroma.Pagination -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Repo    alias Pleroma.User    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView    alias Pleroma.Web.PleromaAPI.ChatView +  alias Pleroma.Web.Plugs.OAuthScopesPlug    import Ecto.Query diff --git a/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex b/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex index 3d007f324..df52b7566 100644 --- a/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex @@ -8,9 +8,9 @@ defmodule Pleroma.Web.PleromaAPI.ConversationController do    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2]    alias Pleroma.Conversation.Participation -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.MastodonAPI.StatusView +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug(:put_view, Pleroma.Web.MastodonAPI.ConversationView) diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex index 71c53df1d..428c97de6 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.PleromaAPI.EmojiFileController do    use Pleroma.Web, :controller @@ -7,7 +11,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug( -    Pleroma.Plugs.OAuthScopesPlug, +    Pleroma.Web.Plugs.OAuthScopesPlug,      %{scopes: ["write"], admin: true}      when action in [             :create, diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index 6696f8b92..a9accc5af 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.PleromaAPI.EmojiPackController do    use Pleroma.Web, :controller @@ -6,7 +10,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug( -    Pleroma.Plugs.OAuthScopesPlug, +    Pleroma.Web.Plugs.OAuthScopesPlug,      %{scopes: ["write"], admin: true}      when action in [             :import_from_filesystem, @@ -18,8 +22,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do           ]    ) -  @skip_plugs [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] -  plug(:skip_plug, @skip_plugs when action in [:index, :show, :archive]) +  @skip_plugs [ +    Pleroma.Web.Plugs.OAuthScopesPlug, +    Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  ] +  plug(:skip_plug, @skip_plugs when action in [:index, :archive, :show])    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaEmojiPackOperation diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex index 7f9254c13..ae199a50f 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do    alias Pleroma.Activity    alias Pleroma.Object -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.MastodonAPI.StatusView +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate)    plug(OAuthScopesPlug, %{scopes: ["write:statuses"]} when action in [:create, :delete]) diff --git a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex index 7e2f6c328..15210f1e6 100644 --- a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex @@ -5,9 +5,9 @@  defmodule Pleroma.Web.PleromaAPI.MascotController do    use Pleroma.Web, :controller -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:update])    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex b/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex index 3ed8bd294..fa32aaa84 100644 --- a/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex @@ -6,10 +6,14 @@ defmodule Pleroma.Web.PleromaAPI.NotificationController do    use Pleroma.Web, :controller    alias Pleroma.Notification -  alias Pleroma.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate) -  plug(OAuthScopesPlug, %{scopes: ["write:notifications"]} when action == :mark_as_read) + +  plug( +    Pleroma.Web.Plugs.OAuthScopesPlug, +    %{scopes: ["write:notifications"]} when action == :mark_as_read +  ) +    plug(:put_view, Pleroma.Web.MastodonAPI.NotificationView)    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaNotificationOperation diff --git a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex index e9a4fba92..632d65434 100644 --- a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex @@ -7,10 +7,10 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleController do    import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex b/lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex index b86791d09..eba452300 100644 --- a/lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex @@ -10,8 +10,8 @@ defmodule Pleroma.Web.PleromaAPI.TwoFactorAuthenticationController do    alias Pleroma.MFA    alias Pleroma.MFA.TOTP -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.Web.CommonAPI.Utils +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(OAuthScopesPlug, %{scopes: ["read:security"]} when action in [:settings]) diff --git a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex index f10c45750..7f089af1c 100644 --- a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do    require Logger -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.ApiSpec +  alias Pleroma.Web.Plugs.OAuthScopesPlug    plug(OAuthScopesPlug, %{scopes: ["follow", "write:follows"]} when action == :follow)    plug(OAuthScopesPlug, %{scopes: ["follow", "write:blocks"]} when action == :blocks) diff --git a/lib/pleroma/web/plug.ex b/lib/pleroma/web/plug.ex new file mode 100644 index 000000000..840b35072 --- /dev/null +++ b/lib/pleroma/web/plug.ex @@ -0,0 +1,8 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Plug do +  # Substitute for `call/2` which is defined with `use Pleroma.Web, :plug` +  @callback perform(Plug.Conn.t(), Plug.opts()) :: Plug.Conn.t() +end diff --git a/lib/pleroma/plugs/admin_secret_authentication_plug.ex b/lib/pleroma/web/plugs/admin_secret_authentication_plug.ex index 2e54df47a..d7d4e4092 100644 --- a/lib/pleroma/plugs/admin_secret_authentication_plug.ex +++ b/lib/pleroma/web/plugs/admin_secret_authentication_plug.ex @@ -2,12 +2,12 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.AdminSecretAuthenticationPlug do +defmodule Pleroma.Web.Plugs.AdminSecretAuthenticationPlug do    import Plug.Conn -  alias Pleroma.Plugs.OAuthScopesPlug -  alias Pleroma.Plugs.RateLimiter    alias Pleroma.User +  alias Pleroma.Web.Plugs.OAuthScopesPlug +  alias Pleroma.Web.Plugs.RateLimiter    def init(options) do      options diff --git a/lib/pleroma/plugs/authentication_plug.ex b/lib/pleroma/web/plugs/authentication_plug.ex index 057ea42f1..e2a8b1b69 100644 --- a/lib/pleroma/plugs/authentication_plug.ex +++ b/lib/pleroma/web/plugs/authentication_plug.ex @@ -2,8 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.AuthenticationPlug do -  alias Pleroma.Plugs.OAuthScopesPlug +defmodule Pleroma.Web.Plugs.AuthenticationPlug do    alias Pleroma.User    import Plug.Conn @@ -65,7 +64,7 @@ defmodule Pleroma.Plugs.AuthenticationPlug do        conn        |> assign(:user, auth_user) -      |> OAuthScopesPlug.skip_plug() +      |> Pleroma.Web.Plugs.OAuthScopesPlug.skip_plug()      else        conn      end diff --git a/lib/pleroma/plugs/basic_auth_decoder_plug.ex b/lib/pleroma/web/plugs/basic_auth_decoder_plug.ex index af7ecb0d8..4dadfb000 100644 --- a/lib/pleroma/plugs/basic_auth_decoder_plug.ex +++ b/lib/pleroma/web/plugs/basic_auth_decoder_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.BasicAuthDecoderPlug do +defmodule Pleroma.Web.Plugs.BasicAuthDecoderPlug do    import Plug.Conn    def init(options) do diff --git a/lib/pleroma/plugs/cache.ex b/lib/pleroma/web/plugs/cache.ex index f65c2a189..6de01804a 100644 --- a/lib/pleroma/plugs/cache.ex +++ b/lib/pleroma/web/plugs/cache.ex @@ -2,19 +2,19 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.Cache do +defmodule Pleroma.Web.Plugs.Cache do    @moduledoc """    Caches successful GET responses.    To enable the cache add the plug to a router pipeline or controller: -      plug(Pleroma.Plugs.Cache) +      plug(Pleroma.Web.Plugs.Cache)    ## Configuration    To configure the plug you need to pass settings as the second argument to the `plug/2` macro: -      plug(Pleroma.Plugs.Cache, [ttl: nil, query_params: true]) +      plug(Pleroma.Web.Plugs.Cache, [ttl: nil, query_params: true])    Available options: diff --git a/lib/pleroma/plugs/digest.ex b/lib/pleroma/web/plugs/digest_plug.ex index b521b3073..b521b3073 100644 --- a/lib/pleroma/plugs/digest.ex +++ b/lib/pleroma/web/plugs/digest_plug.ex diff --git a/lib/pleroma/plugs/ensure_authenticated_plug.ex b/lib/pleroma/web/plugs/ensure_authenticated_plug.ex index 3fe550806..ea2af6881 100644 --- a/lib/pleroma/plugs/ensure_authenticated_plug.ex +++ b/lib/pleroma/web/plugs/ensure_authenticated_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.EnsureAuthenticatedPlug do +defmodule Pleroma.Web.Plugs.EnsureAuthenticatedPlug do    import Plug.Conn    import Pleroma.Web.TranslationHelpers diff --git a/lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex b/lib/pleroma/web/plugs/ensure_public_or_authenticated_plug.ex index 7265bb87a..3bebdac6d 100644 --- a/lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex +++ b/lib/pleroma/web/plugs/ensure_public_or_authenticated_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug do +defmodule Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug do    import Pleroma.Web.TranslationHelpers    import Plug.Conn diff --git a/lib/pleroma/plugs/ensure_user_key_plug.ex b/lib/pleroma/web/plugs/ensure_user_key_plug.ex index 9795cdbde..70d3091f0 100644 --- a/lib/pleroma/plugs/ensure_user_key_plug.ex +++ b/lib/pleroma/web/plugs/ensure_user_key_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.EnsureUserKeyPlug do +defmodule Pleroma.Web.Plugs.EnsureUserKeyPlug do    import Plug.Conn    def init(opts) do diff --git a/lib/pleroma/plugs/expect_authenticated_check_plug.ex b/lib/pleroma/web/plugs/expect_authenticated_check_plug.ex index 66b8d5de5..0925ded4d 100644 --- a/lib/pleroma/plugs/expect_authenticated_check_plug.ex +++ b/lib/pleroma/web/plugs/expect_authenticated_check_plug.ex @@ -2,9 +2,9 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.ExpectAuthenticatedCheckPlug do +defmodule Pleroma.Web.Plugs.ExpectAuthenticatedCheckPlug do    @moduledoc """ -  Marks `Pleroma.Plugs.EnsureAuthenticatedPlug` as expected to be executed later in plug chain. +  Marks `Pleroma.Web.Plugs.EnsureAuthenticatedPlug` as expected to be executed later in plug chain.    No-op plug which affects `Pleroma.Web` operation (is checked with `PlugHelper.plug_called?/2`).    """ diff --git a/lib/pleroma/plugs/expect_public_or_authenticated_check_plug.ex b/lib/pleroma/web/plugs/expect_public_or_authenticated_check_plug.ex index ba0ef76bd..ace512a78 100644 --- a/lib/pleroma/plugs/expect_public_or_authenticated_check_plug.ex +++ b/lib/pleroma/web/plugs/expect_public_or_authenticated_check_plug.ex @@ -2,9 +2,9 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug do +defmodule Pleroma.Web.Plugs.ExpectPublicOrAuthenticatedCheckPlug do    @moduledoc """ -  Marks `Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug` as expected to be executed later in plug +  Marks `Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug` as expected to be executed later in plug    chain.    No-op plug which affects `Pleroma.Web` operation (is checked with `PlugHelper.plug_called?/2`). diff --git a/lib/pleroma/plugs/federating_plug.ex b/lib/pleroma/web/plugs/federating_plug.ex index 09038f3c6..3c90a7644 100644 --- a/lib/pleroma/plugs/federating_plug.ex +++ b/lib/pleroma/web/plugs/federating_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.FederatingPlug do +defmodule Pleroma.Web.Plugs.FederatingPlug do    import Plug.Conn    def init(options) do diff --git a/lib/pleroma/plugs/frontend_static.ex b/lib/pleroma/web/plugs/frontend_static.ex index 11a0d5382..ceb10dcf8 100644 --- a/lib/pleroma/plugs/frontend_static.ex +++ b/lib/pleroma/web/plugs/frontend_static.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.FrontendStatic do +defmodule Pleroma.Web.Plugs.FrontendStatic do    require Pleroma.Constants    @moduledoc """ diff --git a/lib/pleroma/plugs/http_security_plug.ex b/lib/pleroma/web/plugs/http_security_plug.ex index c363b193b..45aaf188e 100644 --- a/lib/pleroma/plugs/http_security_plug.ex +++ b/lib/pleroma/web/plugs/http_security_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.HTTPSecurityPlug do +defmodule Pleroma.Web.Plugs.HTTPSecurityPlug do    alias Pleroma.Config    import Plug.Conn diff --git a/lib/pleroma/plugs/http_signature.ex b/lib/pleroma/web/plugs/http_signature_plug.ex index 036e2a773..036e2a773 100644 --- a/lib/pleroma/plugs/http_signature.ex +++ b/lib/pleroma/web/plugs/http_signature_plug.ex diff --git a/lib/pleroma/plugs/idempotency_plug.ex b/lib/pleroma/web/plugs/idempotency_plug.ex index f41397075..254a790b0 100644 --- a/lib/pleroma/plugs/idempotency_plug.ex +++ b/lib/pleroma/web/plugs/idempotency_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.IdempotencyPlug do +defmodule Pleroma.Web.Plugs.IdempotencyPlug do    import Phoenix.Controller, only: [json: 2]    import Plug.Conn diff --git a/lib/pleroma/plugs/instance_static.ex b/lib/pleroma/web/plugs/instance_static.ex index 0fb57e422..54b9175df 100644 --- a/lib/pleroma/plugs/instance_static.ex +++ b/lib/pleroma/web/plugs/instance_static.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.InstanceStatic do +defmodule Pleroma.Web.Plugs.InstanceStatic do    require Pleroma.Constants    @moduledoc """ @@ -16,7 +16,7 @@ defmodule Pleroma.Plugs.InstanceStatic do      instance_path =        Path.join(Pleroma.Config.get([:instance, :static_dir], "instance/static/"), path) -    frontend_path = Pleroma.Plugs.FrontendStatic.file_path(path, :primary) +    frontend_path = Pleroma.Web.Plugs.FrontendStatic.file_path(path, :primary)      (File.exists?(instance_path) && instance_path) ||        (frontend_path && File.exists?(frontend_path) && frontend_path) || diff --git a/lib/pleroma/plugs/legacy_authentication_plug.ex b/lib/pleroma/web/plugs/legacy_authentication_plug.ex index d346e01a6..2a54d0b59 100644 --- a/lib/pleroma/plugs/legacy_authentication_plug.ex +++ b/lib/pleroma/web/plugs/legacy_authentication_plug.ex @@ -2,10 +2,9 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.LegacyAuthenticationPlug do +defmodule Pleroma.Web.Plugs.LegacyAuthenticationPlug do    import Plug.Conn -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    def init(options) do @@ -29,7 +28,7 @@ defmodule Pleroma.Plugs.LegacyAuthenticationPlug do        conn        |> assign(:auth_user, user)        |> assign(:user, user) -      |> OAuthScopesPlug.skip_plug() +      |> Pleroma.Web.Plugs.OAuthScopesPlug.skip_plug()      else        _ ->          conn diff --git a/lib/pleroma/plugs/mapped_signature_to_identity_plug.ex b/lib/pleroma/web/plugs/mapped_signature_to_identity_plug.ex index f44d4dee5..f44d4dee5 100644 --- a/lib/pleroma/plugs/mapped_signature_to_identity_plug.ex +++ b/lib/pleroma/web/plugs/mapped_signature_to_identity_plug.ex diff --git a/lib/pleroma/plugs/oauth_plug.ex b/lib/pleroma/web/plugs/o_auth_plug.ex index 6fa71ef47..c7b58d90f 100644 --- a/lib/pleroma/plugs/oauth_plug.ex +++ b/lib/pleroma/web/plugs/o_auth_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.OAuthPlug do +defmodule Pleroma.Web.Plugs.OAuthPlug do    import Plug.Conn    import Ecto.Query diff --git a/lib/pleroma/plugs/oauth_scopes_plug.ex b/lib/pleroma/web/plugs/o_auth_scopes_plug.ex index b1a736d78..cfc30837c 100644 --- a/lib/pleroma/plugs/oauth_scopes_plug.ex +++ b/lib/pleroma/web/plugs/o_auth_scopes_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.OAuthScopesPlug do +defmodule Pleroma.Web.Plugs.OAuthScopesPlug do    import Plug.Conn    import Pleroma.Web.Gettext diff --git a/lib/pleroma/plugs/plug_helper.ex b/lib/pleroma/web/plugs/plug_helper.ex index 9c67be8ef..b314e7596 100644 --- a/lib/pleroma/plugs/plug_helper.ex +++ b/lib/pleroma/web/plugs/plug_helper.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.PlugHelper do +defmodule Pleroma.Web.Plugs.PlugHelper do    @moduledoc "Pleroma Plug helper"    @called_plugs_list_id :called_plugs diff --git a/lib/pleroma/plugs/rate_limiter/rate_limiter.ex b/lib/pleroma/web/plugs/rate_limiter.ex index c51e2c634..a589610d1 100644 --- a/lib/pleroma/plugs/rate_limiter/rate_limiter.ex +++ b/lib/pleroma/web/plugs/rate_limiter.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.RateLimiter do +defmodule Pleroma.Web.Plugs.RateLimiter do    @moduledoc """    ## Configuration @@ -35,8 +35,8 @@ defmodule Pleroma.Plugs.RateLimiter do    AllowedSyntax: -      plug(Pleroma.Plugs.RateLimiter, name: :limiter_name) -      plug(Pleroma.Plugs.RateLimiter, options)   # :name is a required option +      plug(Pleroma.Web.Plugs.RateLimiter, name: :limiter_name) +      plug(Pleroma.Web.Plugs.RateLimiter, options)   # :name is a required option    Allowed options: @@ -46,11 +46,11 @@ defmodule Pleroma.Plugs.RateLimiter do    Inside a controller: -      plug(Pleroma.Plugs.RateLimiter, [name: :one] when action == :one) -      plug(Pleroma.Plugs.RateLimiter, [name: :two] when action in [:two, :three]) +      plug(Pleroma.Web.Plugs.RateLimiter, [name: :one] when action == :one) +      plug(Pleroma.Web.Plugs.RateLimiter, [name: :two] when action in [:two, :three])        plug( -        Pleroma.Plugs.RateLimiter, +        Pleroma.Web.Plugs.RateLimiter,          [name: :status_id_action, bucket_name: "status_id_action:fav_unfav", params: ["id"]]          when action in ~w(fav_status unfav_status)a        ) @@ -59,7 +59,7 @@ defmodule Pleroma.Plugs.RateLimiter do        pipeline :api do          ... -        plug(Pleroma.Plugs.RateLimiter, name: :one) +        plug(Pleroma.Web.Plugs.RateLimiter, name: :one)          ...        end    """ @@ -67,8 +67,8 @@ defmodule Pleroma.Plugs.RateLimiter do    import Plug.Conn    alias Pleroma.Config -  alias Pleroma.Plugs.RateLimiter.LimiterSupervisor    alias Pleroma.User +  alias Pleroma.Web.Plugs.RateLimiter.LimiterSupervisor    require Logger diff --git a/lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex b/lib/pleroma/web/plugs/rate_limiter/limiter_supervisor.ex index 884268d96..5642bb205 100644 --- a/lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex +++ b/lib/pleroma/web/plugs/rate_limiter/limiter_supervisor.ex @@ -1,4 +1,8 @@ -defmodule Pleroma.Plugs.RateLimiter.LimiterSupervisor do +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Plugs.RateLimiter.LimiterSupervisor do    use DynamicSupervisor    import Cachex.Spec diff --git a/lib/pleroma/plugs/rate_limiter/supervisor.ex b/lib/pleroma/web/plugs/rate_limiter/supervisor.ex index 9672f7876..a1c84063d 100644 --- a/lib/pleroma/plugs/rate_limiter/supervisor.ex +++ b/lib/pleroma/web/plugs/rate_limiter/supervisor.ex @@ -1,4 +1,8 @@ -defmodule Pleroma.Plugs.RateLimiter.Supervisor do +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Plugs.RateLimiter.Supervisor do    use Supervisor    def start_link(opts) do @@ -7,7 +11,7 @@ defmodule Pleroma.Plugs.RateLimiter.Supervisor do    def init(_args) do      children = [ -      Pleroma.Plugs.RateLimiter.LimiterSupervisor +      Pleroma.Web.Plugs.RateLimiter.LimiterSupervisor      ]      opts = [strategy: :one_for_one, name: Pleroma.Web.Streamer.Supervisor] diff --git a/lib/pleroma/plugs/remote_ip.ex b/lib/pleroma/web/plugs/remote_ip.ex index 987022156..401e2cbfa 100644 --- a/lib/pleroma/plugs/remote_ip.ex +++ b/lib/pleroma/web/plugs/remote_ip.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.RemoteIp do +defmodule Pleroma.Web.Plugs.RemoteIp do    @moduledoc """    This is a shim to call [`RemoteIp`](https://git.pleroma.social/pleroma/remote_ip) but with runtime configuration.    """ diff --git a/lib/pleroma/plugs/session_authentication_plug.ex b/lib/pleroma/web/plugs/session_authentication_plug.ex index 0f83a5e53..6e176d553 100644 --- a/lib/pleroma/plugs/session_authentication_plug.ex +++ b/lib/pleroma/web/plugs/session_authentication_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.SessionAuthenticationPlug do +defmodule Pleroma.Web.Plugs.SessionAuthenticationPlug do    import Plug.Conn    def init(options) do diff --git a/lib/pleroma/plugs/set_format_plug.ex b/lib/pleroma/web/plugs/set_format_plug.ex index c03fcb28d..c16d2f81d 100644 --- a/lib/pleroma/plugs/set_format_plug.ex +++ b/lib/pleroma/web/plugs/set_format_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.SetFormatPlug do +defmodule Pleroma.Web.Plugs.SetFormatPlug do    import Plug.Conn, only: [assign: 3, fetch_query_params: 1]    def init(_), do: nil diff --git a/lib/pleroma/plugs/set_locale_plug.ex b/lib/pleroma/web/plugs/set_locale_plug.ex index 9a21d0a9d..d9d24b93f 100644 --- a/lib/pleroma/plugs/set_locale_plug.ex +++ b/lib/pleroma/web/plugs/set_locale_plug.ex @@ -3,7 +3,7 @@  # SPDX-License-Identifier: AGPL-3.0-only  # NOTE: this module is based on https://github.com/smeevil/set_locale -defmodule Pleroma.Plugs.SetLocalePlug do +defmodule Pleroma.Web.Plugs.SetLocalePlug do    import Plug.Conn, only: [get_req_header: 2, assign: 3]    def init(_), do: nil diff --git a/lib/pleroma/plugs/set_user_session_id_plug.ex b/lib/pleroma/web/plugs/set_user_session_id_plug.ex index 730c4ac74..e520159e4 100644 --- a/lib/pleroma/plugs/set_user_session_id_plug.ex +++ b/lib/pleroma/web/plugs/set_user_session_id_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.SetUserSessionIdPlug do +defmodule Pleroma.Web.Plugs.SetUserSessionIdPlug do    import Plug.Conn    alias Pleroma.User diff --git a/lib/pleroma/plugs/static_fe_plug.ex b/lib/pleroma/web/plugs/static_fe_plug.ex index 143665c71..658a1052e 100644 --- a/lib/pleroma/plugs/static_fe_plug.ex +++ b/lib/pleroma/web/plugs/static_fe_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.StaticFEPlug do +defmodule Pleroma.Web.Plugs.StaticFEPlug do    import Plug.Conn    alias Pleroma.Web.StaticFE.StaticFEController diff --git a/lib/pleroma/plugs/trailing_format_plug.ex b/lib/pleroma/web/plugs/trailing_format_plug.ex index 8b4d5fc9f..e3f57c14a 100644 --- a/lib/pleroma/plugs/trailing_format_plug.ex +++ b/lib/pleroma/web/plugs/trailing_format_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.TrailingFormatPlug do +defmodule Pleroma.Web.Plugs.TrailingFormatPlug do    @moduledoc "Calls TrailingFormatPlug for specific paths. Ideally we would just do this in the router, but TrailingFormatPlug needs to be called before Plug.Parsers."    @behaviour Plug diff --git a/lib/pleroma/plugs/uploaded_media.ex b/lib/pleroma/web/plugs/uploaded_media.ex index 40984cfc0..402a8bb34 100644 --- a/lib/pleroma/plugs/uploaded_media.ex +++ b/lib/pleroma/web/plugs/uploaded_media.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.UploadedMedia do +defmodule Pleroma.Web.Plugs.UploadedMedia do    @moduledoc """    """ diff --git a/lib/pleroma/plugs/user_enabled_plug.ex b/lib/pleroma/web/plugs/user_enabled_plug.ex index 23e800a74..fa28ee48b 100644 --- a/lib/pleroma/plugs/user_enabled_plug.ex +++ b/lib/pleroma/web/plugs/user_enabled_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.UserEnabledPlug do +defmodule Pleroma.Web.Plugs.UserEnabledPlug do    import Plug.Conn    alias Pleroma.User diff --git a/lib/pleroma/plugs/user_fetcher_plug.ex b/lib/pleroma/web/plugs/user_fetcher_plug.ex index 235c77d85..4039600da 100644 --- a/lib/pleroma/plugs/user_fetcher_plug.ex +++ b/lib/pleroma/web/plugs/user_fetcher_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.UserFetcherPlug do +defmodule Pleroma.Web.Plugs.UserFetcherPlug do    alias Pleroma.User    import Plug.Conn diff --git a/lib/pleroma/plugs/user_is_admin_plug.ex b/lib/pleroma/web/plugs/user_is_admin_plug.ex index 488a61d1d..531c965f0 100644 --- a/lib/pleroma/plugs/user_is_admin_plug.ex +++ b/lib/pleroma/web/plugs/user_is_admin_plug.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Plugs.UserIsAdminPlug do +defmodule Pleroma.Web.Plugs.UserIsAdminPlug do    import Pleroma.Web.TranslationHelpers    import Plug.Conn diff --git a/lib/pleroma/web/preload/instance.ex b/lib/pleroma/web/preload/providers/instance.ex index 50d1f3382..a549bb1eb 100644 --- a/lib/pleroma/web/preload/instance.ex +++ b/lib/pleroma/web/preload/providers/instance.ex @@ -3,15 +3,17 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.Preload.Providers.Instance do -  alias Pleroma.Plugs.InstanceStatic    alias Pleroma.Web.MastodonAPI.InstanceView    alias Pleroma.Web.Nodeinfo.Nodeinfo +  alias Pleroma.Web.Plugs.InstanceStatic    alias Pleroma.Web.Preload.Providers.Provider +  alias Pleroma.Web.TwitterAPI.UtilView    @behaviour Provider    @instance_url "/api/v1/instance"    @panel_url "/instance/panel.html"    @nodeinfo_url "/nodeinfo/2.0.json" +  @fe_config_url "/api/pleroma/frontend_configurations"    @impl Provider    def generate_terms(_params) do @@ -19,6 +21,7 @@ defmodule Pleroma.Web.Preload.Providers.Instance do      |> build_info_tag()      |> build_panel_tag()      |> build_nodeinfo_tag() +    |> build_fe_config_tag()    end    defp build_info_tag(acc) do @@ -47,4 +50,10 @@ defmodule Pleroma.Web.Preload.Providers.Instance do          Map.put(acc, @nodeinfo_url, nodeinfo_data)      end    end + +  defp build_fe_config_tag(acc) do +    fe_data = UtilView.render("frontend_configurations.json", %{}) + +    Map.put(acc, @fe_config_url, fe_data) +  end  end diff --git a/lib/pleroma/web/preload/provider.ex b/lib/pleroma/web/preload/providers/provider.ex index 7ef595a34..7ef595a34 100644 --- a/lib/pleroma/web/preload/provider.ex +++ b/lib/pleroma/web/preload/providers/provider.ex diff --git a/lib/pleroma/web/preload/timelines.ex b/lib/pleroma/web/preload/providers/timelines.ex index b279a865d..b279a865d 100644 --- a/lib/pleroma/web/preload/timelines.ex +++ b/lib/pleroma/web/preload/providers/timelines.ex diff --git a/lib/pleroma/web/preload/user.ex b/lib/pleroma/web/preload/providers/user.ex index b3d2e9b8d..b3d2e9b8d 100644 --- a/lib/pleroma/web/preload/user.ex +++ b/lib/pleroma/web/preload/providers/user.ex diff --git a/lib/pleroma/web/push/push.ex b/lib/pleroma/web/push.ex index b80a6438d..b80a6438d 100644 --- a/lib/pleroma/web/push/push.ex +++ b/lib/pleroma/web/push.ex diff --git a/lib/pleroma/web/rich_media/parser/ttl.ex b/lib/pleroma/web/rich_media/parser/ttl.ex new file mode 100644 index 000000000..8353f0fff --- /dev/null +++ b/lib/pleroma/web/rich_media/parser/ttl.ex @@ -0,0 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.RichMedia.Parser.TTL do +  @callback ttl(Map.t(), String.t()) :: Integer.t() | nil +end diff --git a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex b/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex index c5aaea2d4..fc4ef79c0 100644 --- a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex +++ b/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex @@ -1,7 +1,11 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl do    @behaviour Pleroma.Web.RichMedia.Parser.TTL -  @impl Pleroma.Web.RichMedia.Parser.TTL +  @impl true    def ttl(data, _url) do      image = Map.get(data, :image) diff --git a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex b/lib/pleroma/web/rich_media/parsers/o_embed.ex index 1fe6729c3..1fe6729c3 100644 --- a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex +++ b/lib/pleroma/web/rich_media/parsers/o_embed.ex diff --git a/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex b/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex deleted file mode 100644 index 6b3ec6d30..000000000 --- a/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex +++ /dev/null @@ -1,3 +0,0 @@ -defmodule Pleroma.Web.RichMedia.Parser.TTL do -  @callback ttl(Map.t(), String.t()) :: {:ok, Integer.t()} | {:error, String.t()} -end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index e22b31b4c..d2d939989 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -12,31 +12,31 @@ defmodule Pleroma.Web.Router do    pipeline :oauth do      plug(:fetch_session) -    plug(Pleroma.Plugs.OAuthPlug) -    plug(Pleroma.Plugs.UserEnabledPlug) +    plug(Pleroma.Web.Plugs.OAuthPlug) +    plug(Pleroma.Web.Plugs.UserEnabledPlug)    end    pipeline :expect_authentication do -    plug(Pleroma.Plugs.ExpectAuthenticatedCheckPlug) +    plug(Pleroma.Web.Plugs.ExpectAuthenticatedCheckPlug)    end    pipeline :expect_public_instance_or_authentication do -    plug(Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug) +    plug(Pleroma.Web.Plugs.ExpectPublicOrAuthenticatedCheckPlug)    end    pipeline :authenticate do -    plug(Pleroma.Plugs.OAuthPlug) -    plug(Pleroma.Plugs.BasicAuthDecoderPlug) -    plug(Pleroma.Plugs.UserFetcherPlug) -    plug(Pleroma.Plugs.SessionAuthenticationPlug) -    plug(Pleroma.Plugs.LegacyAuthenticationPlug) -    plug(Pleroma.Plugs.AuthenticationPlug) +    plug(Pleroma.Web.Plugs.OAuthPlug) +    plug(Pleroma.Web.Plugs.BasicAuthDecoderPlug) +    plug(Pleroma.Web.Plugs.UserFetcherPlug) +    plug(Pleroma.Web.Plugs.SessionAuthenticationPlug) +    plug(Pleroma.Web.Plugs.LegacyAuthenticationPlug) +    plug(Pleroma.Web.Plugs.AuthenticationPlug)    end    pipeline :after_auth do -    plug(Pleroma.Plugs.UserEnabledPlug) -    plug(Pleroma.Plugs.SetUserSessionIdPlug) -    plug(Pleroma.Plugs.EnsureUserKeyPlug) +    plug(Pleroma.Web.Plugs.UserEnabledPlug) +    plug(Pleroma.Web.Plugs.SetUserSessionIdPlug) +    plug(Pleroma.Web.Plugs.EnsureUserKeyPlug)    end    pipeline :base_api do @@ -50,25 +50,25 @@ defmodule Pleroma.Web.Router do      plug(:expect_public_instance_or_authentication)      plug(:base_api)      plug(:after_auth) -    plug(Pleroma.Plugs.IdempotencyPlug) +    plug(Pleroma.Web.Plugs.IdempotencyPlug)    end    pipeline :authenticated_api do      plug(:expect_authentication)      plug(:base_api)      plug(:after_auth) -    plug(Pleroma.Plugs.EnsureAuthenticatedPlug) -    plug(Pleroma.Plugs.IdempotencyPlug) +    plug(Pleroma.Web.Plugs.EnsureAuthenticatedPlug) +    plug(Pleroma.Web.Plugs.IdempotencyPlug)    end    pipeline :admin_api do      plug(:expect_authentication)      plug(:base_api) -    plug(Pleroma.Plugs.AdminSecretAuthenticationPlug) +    plug(Pleroma.Web.Plugs.AdminSecretAuthenticationPlug)      plug(:after_auth) -    plug(Pleroma.Plugs.EnsureAuthenticatedPlug) -    plug(Pleroma.Plugs.UserIsAdminPlug) -    plug(Pleroma.Plugs.IdempotencyPlug) +    plug(Pleroma.Web.Plugs.EnsureAuthenticatedPlug) +    plug(Pleroma.Web.Plugs.UserIsAdminPlug) +    plug(Pleroma.Web.Plugs.IdempotencyPlug)    end    pipeline :mastodon_html do @@ -80,7 +80,7 @@ defmodule Pleroma.Web.Router do    pipeline :pleroma_html do      plug(:browser)      plug(:authenticate) -    plug(Pleroma.Plugs.EnsureUserKeyPlug) +    plug(Pleroma.Web.Plugs.EnsureUserKeyPlug)    end    pipeline :well_known do @@ -568,7 +568,7 @@ defmodule Pleroma.Web.Router do    pipeline :ostatus do      plug(:accepts, ["html", "xml", "rss", "atom", "activity+json", "json"]) -    plug(Pleroma.Plugs.StaticFEPlug) +    plug(Pleroma.Web.Plugs.StaticFEPlug)    end    pipeline :oembed do @@ -737,7 +737,7 @@ defmodule Pleroma.Web.Router do      get("/check_password", MongooseIMController, :check_password)    end -  scope "/", Fallback do +  scope "/", Pleroma.Web.Fallback do      get("/registration/:token", RedirectController, :registration_page)      get("/:maybe_nickname_or_id", RedirectController, :redirector_with_meta)      get("/api*path", RedirectController, :api_not_implemented) diff --git a/lib/pleroma/web/static_fe/static_fe_controller.ex b/lib/pleroma/web/static_fe/static_fe_controller.ex index a7a891b13..687b17df6 100644 --- a/lib/pleroma/web/static_fe/static_fe_controller.ex +++ b/lib/pleroma/web/static_fe/static_fe_controller.ex @@ -17,8 +17,8 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do    plug(:put_view, Pleroma.Web.StaticFE.StaticFEView)    plug(:assign_id) -  plug(Pleroma.Plugs.EnsureAuthenticatedPlug, -    unless_func: &Pleroma.Web.FederatingPlug.federating?/1 +  plug(Pleroma.Web.Plugs.EnsureAuthenticatedPlug, +    unless_func: &Pleroma.Web.Plugs.FederatingPlug.federating?/1    )    @page_keys ["max_id", "min_id", "limit", "since_id", "order"] diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer.ex index 5475f18a6..d618dfe54 100644 --- a/lib/pleroma/web/streamer/streamer.ex +++ b/lib/pleroma/web/streamer.ex @@ -11,12 +11,12 @@ defmodule Pleroma.Web.Streamer do    alias Pleroma.Conversation.Participation    alias Pleroma.Notification    alias Pleroma.Object -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.ActivityPub.Visibility    alias Pleroma.Web.CommonAPI    alias Pleroma.Web.OAuth.Token +  alias Pleroma.Web.Plugs.OAuthScopesPlug    alias Pleroma.Web.StreamerView    @mix_env Mix.env() diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/controller.ex index c2de26b0b..f42dba442 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/controller.ex @@ -6,10 +6,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do    use Pleroma.Web, :controller    alias Pleroma.Notification -  alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.OAuth.Token +  alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug +  alias Pleroma.Web.Plugs.OAuthScopesPlug    alias Pleroma.Web.TwitterAPI.TokenView    require Logger diff --git a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex index 072d889e2..4480a4922 100644 --- a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex @@ -10,7 +10,6 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowController do    alias Pleroma.Activity    alias Pleroma.MFA    alias Pleroma.Object.Fetcher -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.Auth.Authenticator    alias Pleroma.Web.Auth.TOTPAuthenticator @@ -18,11 +17,11 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowController do    @status_types ["Article", "Event", "Note", "Video", "Page", "Question"] -  plug(Pleroma.Web.FederatingPlug) +  plug(Pleroma.Web.Plugs.FederatingPlug)    # Note: follower can submit the form (with password auth) not being signed in (having no token)    plug( -    OAuthScopesPlug, +    Pleroma.Web.Plugs.OAuthScopesPlug,      %{fallback: :proceed_unauthenticated, scopes: ["follow", "write:follows"]}      when action in [:do_follow]    ) diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 70b0fbd54..9ead0d626 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -11,12 +11,12 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do    alias Pleroma.Emoji    alias Pleroma.Healthcheck    alias Pleroma.Notification -  alias Pleroma.Plugs.OAuthScopesPlug    alias Pleroma.User    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Plugs.OAuthScopesPlug    alias Pleroma.Web.WebFinger -  plug(Pleroma.Web.FederatingPlug when action == :remote_subscribe) +  plug(Pleroma.Web.Plugs.FederatingPlug when action == :remote_subscribe)    plug(      OAuthScopesPlug, @@ -74,11 +74,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do    end    def frontend_configurations(conn, _params) do -    config = -      Config.get(:frontend_configurations, %{}) -      |> Enum.into(%{}) - -    json(conn, config) +    render(conn, "frontend_configurations.json")    end    def emoji(conn, _params) do diff --git a/lib/pleroma/web/twitter_api/views/util_view.ex b/lib/pleroma/web/twitter_api/views/util_view.ex index d3bdb4f62..98eea1d18 100644 --- a/lib/pleroma/web/twitter_api/views/util_view.ex +++ b/lib/pleroma/web/twitter_api/views/util_view.ex @@ -5,6 +5,7 @@  defmodule Pleroma.Web.TwitterAPI.UtilView do    use Pleroma.Web, :view    import Phoenix.HTML.Form +  alias Pleroma.Config    alias Pleroma.Web    def status_net_config(instance) do @@ -19,4 +20,9 @@ defmodule Pleroma.Web.TwitterAPI.UtilView do      </config>      """    end + +  def render("frontend_configurations.json", _) do +    Config.get(:frontend_configurations, %{}) +    |> Enum.into(%{}) +  end  end diff --git a/lib/pleroma/web/views/email_view.ex b/lib/pleroma/web/views/email_view.ex index 6b0fbe61e..bcdee6571 100644 --- a/lib/pleroma/web/views/email_view.ex +++ b/lib/pleroma/web/views/email_view.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.EmailView do    use Pleroma.Web, :view    import Phoenix.HTML diff --git a/lib/pleroma/web/views/mailer/subscription_view.ex b/lib/pleroma/web/views/mailer/subscription_view.ex index fc3d20816..4562a9d6c 100644 --- a/lib/pleroma/web/views/mailer/subscription_view.ex +++ b/lib/pleroma/web/views/mailer/subscription_view.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +  defmodule Pleroma.Web.Mailer.SubscriptionView do    use Pleroma.Web, :view  end diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger.ex index 6629f5356..6629f5356 100644 --- a/lib/pleroma/web/web_finger/web_finger.ex +++ b/lib/pleroma/web/web_finger.ex diff --git a/lib/pleroma/web/web_finger/web_finger_controller.ex b/lib/pleroma/web/web_finger/web_finger_controller.ex index 7077b20d2..9f0938fc0 100644 --- a/lib/pleroma/web/web_finger/web_finger_controller.ex +++ b/lib/pleroma/web/web_finger/web_finger_controller.ex @@ -7,8 +7,8 @@ defmodule Pleroma.Web.WebFinger.WebFingerController do    alias Pleroma.Web.WebFinger -  plug(Pleroma.Plugs.SetFormatPlug) -  plug(Pleroma.Web.FederatingPlug) +  plug(Pleroma.Web.Plugs.SetFormatPlug) +  plug(Pleroma.Web.Plugs.FederatingPlug)    def host_meta(conn, _params) do      xml = WebFinger.host_meta() diff --git a/lib/pleroma/web/xml/xml.ex b/lib/pleroma/web/xml.ex index c69a86a1e..c69a86a1e 100644 --- a/lib/pleroma/web/xml/xml.ex +++ b/lib/pleroma/web/xml.ex diff --git a/lib/xml_builder.ex b/lib/pleroma/xml_builder.ex index 33b63a71f..33b63a71f 100644 --- a/lib/xml_builder.ex +++ b/lib/pleroma/xml_builder.ex  | 
