From 9b6c7843d669c80bd062214e598d0f5d9738de8e Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 3 Mar 2020 04:58:12 +0100 Subject: [PATCH 001/137] debian_based_*.md: Use erlang-nox metapackage --- docs/installation/debian_based_en.md | 10 +++------- docs/installation/debian_based_jp.md | 22 +++++++++------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index fe2dbb92d..a900ec61d 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -7,13 +7,9 @@ This guide will assume you are on Debian Stretch. This guide should also work wi * `postgresql` (9.6+, Ubuntu 16.04 comes with 9.5, you can get a newer version from [here](https://www.postgresql.org/download/linux/ubuntu/)) * `postgresql-contrib` (9.6+, same situtation as above) -* `elixir` (1.5+, [install from here, Debian and Ubuntu ship older versions](https://elixir-lang.org/install.html#unix-and-unix-like) or use [asdf](https://github.com/asdf-vm/asdf) as the pleroma user) +* `elixir` (1.8+, [install from here, Debian and Ubuntu ship older versions](https://elixir-lang.org/install.html#unix-and-unix-like) or use [asdf](https://github.com/asdf-vm/asdf) as the pleroma user) * `erlang-dev` -* `erlang-tools` -* `erlang-parsetools` -* `erlang-eldap`, if you want to enable ldap authenticator -* `erlang-ssh` -* `erlang-xmerl` +* `erlang-nox` * `git` * `build-essential` @@ -50,7 +46,7 @@ sudo dpkg -i /tmp/erlang-solutions_1.0_all.deb ```shell sudo apt update -sudo apt install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools erlang-ssh +sudo apt install elixir erlang-dev erlang-nox ``` ### Install PleromaBE diff --git a/docs/installation/debian_based_jp.md b/docs/installation/debian_based_jp.md index 7aa0bcc24..a3c4621d8 100644 --- a/docs/installation/debian_based_jp.md +++ b/docs/installation/debian_based_jp.md @@ -10,21 +10,17 @@ ### 必要なソフトウェア - PostgreSQL 9.6以上 (Ubuntu16.04では9.5しか提供されていないので,[](https://www.postgresql.org/download/linux/ubuntu/)こちらから新しいバージョンを入手してください) -- postgresql-contrib 9.6以上 (同上) -- Elixir 1.5 以上 ([Debianのリポジトリからインストールしないこと!!! ここからインストールすること!](https://elixir-lang.org/install.html#unix-and-unix-like)。または [asdf](https://github.com/asdf-vm/asdf) をpleromaユーザーでインストールしてください) - - erlang-dev -- erlang-tools -- erlang-parsetools -- erlang-eldap (LDAP認証を有効化するときのみ必要) -- erlang-ssh -- erlang-xmerl -- git -- build-essential +- `postgresql-contrib` 9.6以上 (同上) +- Elixir 1.8 以上 ([Debianのリポジトリからインストールしないこと!!! ここからインストールすること!](https://elixir-lang.org/install.html#unix-and-unix-like)。または [asdf](https://github.com/asdf-vm/asdf) をpleromaユーザーでインストールしてください) +- `erlang-dev` +- `erlang-nox` +- `git` +- `build-essential` #### このガイドで利用している追加パッケージ -- nginx (おすすめです。他のリバースプロキシを使う場合は、参考となる設定をこのリポジトリから探してください) -- certbot (または何らかのLet's Encrypt向けACMEクライアント) +- `nginx` (おすすめです。他のリバースプロキシを使う場合は、参考となる設定をこのリポジトリから探してください) +- `certbot` (または何らかのLet's Encrypt向けACMEクライアント) ### システムを準備する @@ -51,7 +47,7 @@ sudo dpkg -i /tmp/erlang-solutions_1.0_all.deb * ElixirとErlangをインストールします、 ``` sudo apt update -sudo apt install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools erlang-ssh +sudo apt install elixir erlang-dev erlang-nox ``` ### Pleroma BE (バックエンド) をインストールします From a6ee6784bc74b311d454112c427f41b1fdec6ce0 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 28 Feb 2020 11:16:40 +0300 Subject: [PATCH 002/137] creating trusted app from adminFE & mix task --- CHANGELOG.md | 2 + docs/API/admin_api.md | 101 ++++++++++ docs/administration/CLI_tasks/oauth_app.md | 16 ++ lib/mix/tasks/pleroma/app.ex | 49 +++++ .../web/admin_api/admin_api_controller.ex | 79 ++++++++ .../controllers/account_controller.ex | 1 + .../web/mastodon_api/views/app_view.ex | 15 ++ lib/pleroma/web/oauth/app.ex | 82 +++++++- lib/pleroma/web/router.ex | 5 + lib/pleroma/web/twitter_api/twitter_api.ex | 3 +- .../20200227122417_add_trusted_to_apps.exs | 9 + test/support/factory.ex | 2 +- test/tasks/app_test.exs | 65 ++++++ .../admin_api/admin_api_controller_test.exs | 185 ++++++++++++++++++ .../controllers/account_controller_test.exs | 67 +++++++ 15 files changed, 678 insertions(+), 3 deletions(-) create mode 100644 docs/administration/CLI_tasks/oauth_app.md create mode 100644 lib/mix/tasks/pleroma/app.ex create mode 100644 priv/repo/migrations/20200227122417_add_trusted_to_apps.exs create mode 100644 test/tasks/app_test.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 15a073c64..a1271cbca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Add an option `authorized_fetch_mode` to require HTTP signatures for AP fetches. - ActivityPub: support for `replies` collection (output for outgoing federation & fetching on incoming federation). - Mix task to refresh counter cache (`mix pleroma.refresh_counter_cache`) +- Mix task to create trusted OAuth App.
API Changes @@ -145,6 +146,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - ActivityPub: `[:activitypub, :note_replies_output_limit]` setting sets the number of note self-replies to output on outgoing federation. - Admin API: `GET /api/pleroma/admin/stats` to get status count by visibility scope - Admin API: `GET /api/pleroma/admin/statuses` - list all statuses (accepts `godmode` and `local_only`) +- Admin API: endpoints for create/update/delete OAuth Apps.
### Fixed diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index 47afdfba5..4d12698ec 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -983,3 +983,104 @@ Loads json generated from `config/descriptions.exs`. } } ``` + +## `GET /api/pleroma/admin/oauth_app` + +### List OAuth app + +- Params: + - *optional* `name` + - *optional* `client_id` + - *optional* `page` + - *optional* `page_size` + - *optional* `trusted` + +- Response: + +```json +{ + "apps": [ + { + "id": 1, + "name": "App name", + "client_id": "yHoDSiWYp5mPV6AfsaVOWjdOyt5PhWRiafi6MRd1lSk", + "client_secret": "nLmis486Vqrv2o65eM9mLQx_m_4gH-Q6PcDpGIMl6FY", + "redirect_uri": "https://example.com/oauth-callback", + "website": "https://example.com", + "trusted": true + } + ], + "count": 17, + "page_size": 50 +} +``` + + +## `POST /api/pleroma/admin/oauth_app` + +### Create OAuth App + +- Params: + - `name` + - `redirect_uris` + - `scopes` + - *optional* `website` + - *optional* `trusted` + +- Response: + +```json +{ + "id": 1, + "name": "App name", + "client_id": "yHoDSiWYp5mPV6AfsaVOWjdOyt5PhWRiafi6MRd1lSk", + "client_secret": "nLmis486Vqrv2o65eM9mLQx_m_4gH-Q6PcDpGIMl6FY", + "redirect_uri": "https://example.com/oauth-callback", + "website": "https://example.com", + "trusted": true +} +``` + +- On failure: +```json +{ + "redirect_uris": "can't be blank", + "name": "can't be blank" +} +``` + +## `PATCH /api/pleroma/admin/oauth_app/:id` + +### Update OAuth App + +- Params: + - *optional* `name` + - *optional* `redirect_uris` + - *optional* `scopes` + - *optional* `website` + - *optional* `trusted` + +- Response: + +```json +{ + "id": 1, + "name": "App name", + "client_id": "yHoDSiWYp5mPV6AfsaVOWjdOyt5PhWRiafi6MRd1lSk", + "client_secret": "nLmis486Vqrv2o65eM9mLQx_m_4gH-Q6PcDpGIMl6FY", + "redirect_uri": "https://example.com/oauth-callback", + "website": "https://example.com", + "trusted": true +} +``` + +## `DELETE /api/pleroma/admin/oauth_app/:id` + +### Delete OAuth App + +- Params: None + +- Response: + - On success: `204`, empty response + - On failure: + - 400 Bad Request `"Invalid parameters"` when `status` is missing \ No newline at end of file diff --git a/docs/administration/CLI_tasks/oauth_app.md b/docs/administration/CLI_tasks/oauth_app.md new file mode 100644 index 000000000..4d6bfc25a --- /dev/null +++ b/docs/administration/CLI_tasks/oauth_app.md @@ -0,0 +1,16 @@ +# Creating trusted OAuth App + +{! backend/administration/CLI_tasks/general_cli_task_info.include !} + +## Create trusted OAuth App. + +Optional params: + * `-s SCOPES` - scopes for app, e.g. `read,write,follow,push`. + +```sh tab="OTP" + ./bin/pleroma_ctl app create -n APP_NAME -r REDIRECT_URI +``` + +```sh tab="From Source" +mix pleroma.app create -n APP_NAME -r REDIRECT_URI +``` \ No newline at end of file diff --git a/lib/mix/tasks/pleroma/app.ex b/lib/mix/tasks/pleroma/app.ex new file mode 100644 index 000000000..463e2449f --- /dev/null +++ b/lib/mix/tasks/pleroma/app.ex @@ -0,0 +1,49 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.App do + @moduledoc File.read!("docs/administration/CLI_tasks/oauth_app.md") + use Mix.Task + + import Mix.Pleroma + + @shortdoc "Creates trusted OAuth App" + + def run(["create" | options]) do + start_pleroma() + + {opts, _} = + OptionParser.parse!(options, + strict: [name: :string, redirect_uri: :string, scopes: :string], + aliases: [n: :name, r: :redirect_uri, s: :scopes] + ) + + scopes = + if opts[:scopes] do + String.split(opts[:scopes], ",") + else + ["read", "write", "follow", "push"] + end + + params = %{ + client_name: opts[:name], + redirect_uris: opts[:redirect_uri], + trusted: true, + scopes: scopes + } + + with {:ok, app} <- Pleroma.Web.OAuth.App.create(params) do + shell_info("#{app.client_name} successfully created:") + shell_info("App client_id: " <> app.client_id) + shell_info("App client_secret: " <> app.client_secret) + else + {:error, changeset} -> + shell_error("Creating failed:") + + Enum.each(Pleroma.Web.OAuth.App.errors(changeset), fn {key, error} -> + shell_error("#{key}: #{error}") + end) + end + end +end diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 175260bc2..b03fa7169 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -27,7 +27,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do alias Pleroma.Web.AdminAPI.Search alias Pleroma.Web.CommonAPI alias Pleroma.Web.Endpoint + alias Pleroma.Web.MastodonAPI.AppView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.OAuth.App alias Pleroma.Web.Router require Logger @@ -978,6 +980,83 @@ def resend_confirmation_email(%{assigns: %{user: admin}} = conn, %{"nicknames" = conn |> json("") end + def oauth_app_create(conn, params) do + params = + if params["name"] do + Map.put(params, "client_name", params["name"]) + else + params + end + + result = + case App.create(params) do + {:ok, app} -> + AppView.render("show.json", %{app: app, admin: true}) + + {:error, changeset} -> + App.errors(changeset) + end + + json(conn, result) + end + + def oauth_app_update(conn, params) do + params = + if params["name"] do + Map.put(params, "client_name", params["name"]) + else + params + end + + with {:ok, app} <- App.update(params) do + json(conn, AppView.render("show.json", %{app: app, admin: true})) + else + {:error, changeset} -> + json(conn, App.errors(changeset)) + + nil -> + json_response(conn, :bad_request, "") + end + end + + def oauth_app_list(conn, params) do + {page, page_size} = page_params(params) + + search_params = %{ + client_name: params["name"], + client_id: params["client_id"], + page: page, + page_size: page_size + } + + search_params = + if Map.has_key?(params, "trusted") do + Map.put(search_params, :trusted, params["trusted"]) + else + search_params + end + + with {:ok, apps, count} <- App.search(search_params) do + json( + conn, + AppView.render("index.json", + apps: apps, + count: count, + page_size: page_size, + admin: true + ) + ) + end + end + + def oauth_app_delete(conn, params) do + with {:ok, _app} <- App.destroy(params["id"]) do + json_response(conn, :no_content, "") + else + _ -> json_response(conn, :bad_request, "") + end + end + def stats(conn, _) do count = Stats.get_status_visibility_count() diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 6dbf11ac9..5f8aa2e3e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -92,6 +92,7 @@ def create( |> Map.put("fullname", params["fullname"] || nickname) |> Map.put("bio", params["bio"] || "") |> Map.put("confirm", params["password"]) + |> Map.put("trusted_app", app.trusted) with :ok <- validate_email_param(params), {:ok, user} <- TwitterAPI.register_user(params, need_confirmation: true), diff --git a/lib/pleroma/web/mastodon_api/views/app_view.ex b/lib/pleroma/web/mastodon_api/views/app_view.ex index d934e2107..36071cd25 100644 --- a/lib/pleroma/web/mastodon_api/views/app_view.ex +++ b/lib/pleroma/web/mastodon_api/views/app_view.ex @@ -7,6 +7,21 @@ defmodule Pleroma.Web.MastodonAPI.AppView do alias Pleroma.Web.OAuth.App + def render("index.json", %{apps: apps, count: count, page_size: page_size, admin: true}) do + %{ + apps: render_many(apps, Pleroma.Web.MastodonAPI.AppView, "show.json", %{admin: true}), + count: count, + page_size: page_size + } + end + + def render("show.json", %{admin: true, app: %App{} = app} = assigns) do + "show.json" + |> render(Map.delete(assigns, :admin)) + |> Map.put(:trusted, app.trusted) + |> Map.put(:id, app.id) + end + def render("show.json", %{app: %App{} = app}) do %{ id: app.id |> to_string, diff --git a/lib/pleroma/web/oauth/app.ex b/lib/pleroma/web/oauth/app.ex index 01ed326f4..6a6d5f2e2 100644 --- a/lib/pleroma/web/oauth/app.ex +++ b/lib/pleroma/web/oauth/app.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.OAuth.App do use Ecto.Schema import Ecto.Changeset + import Ecto.Query alias Pleroma.Repo @type t :: %__MODULE__{} @@ -16,14 +17,24 @@ defmodule Pleroma.Web.OAuth.App do field(:website, :string) field(:client_id, :string) field(:client_secret, :string) + field(:trusted, :boolean, default: false) + + has_many(:oauth_authorizations, Pleroma.Web.OAuth.Authorization, on_delete: :delete_all) + has_many(:oauth_tokens, Pleroma.Web.OAuth.Token, on_delete: :delete_all) timestamps() end + @spec changeset(App.t(), map()) :: Ecto.Changeset.t() + def changeset(struct, params) do + cast(struct, params, [:client_name, :redirect_uris, :scopes, :website, :trusted]) + end + + @spec register_changeset(App.t(), map()) :: Ecto.Changeset.t() def register_changeset(struct, params \\ %{}) do changeset = struct - |> cast(params, [:client_name, :redirect_uris, :scopes, :website]) + |> changeset(params) |> validate_required([:client_name, :redirect_uris, :scopes]) if changeset.valid? do @@ -41,6 +52,21 @@ def register_changeset(struct, params \\ %{}) do end end + @spec create(map()) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + def create(params) do + with changeset <- __MODULE__.register_changeset(%__MODULE__{}, params) do + Repo.insert(changeset) + end + end + + @spec update(map()) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + def update(params) do + with %__MODULE__{} = app <- Repo.get(__MODULE__, params["id"]), + changeset <- changeset(app, params) do + Repo.update(changeset) + end + end + @doc """ Gets app by attrs or create new with attrs. And updates the scopes if need. @@ -65,4 +91,58 @@ defp update_scopes(%__MODULE__{} = app, scopes) do |> change(%{scopes: scopes}) |> Repo.update() end + + @spec search(map()) :: {:ok, [App.t()], non_neg_integer()} + def search(params) do + query = from(a in __MODULE__) + + query = + if params[:client_name] do + from(a in query, where: a.client_name == ^params[:client_name]) + else + query + end + + query = + if params[:client_id] do + from(a in query, where: a.client_id == ^params[:client_id]) + else + query + end + + query = + if Map.has_key?(params, :trusted) do + from(a in query, where: a.trusted == ^params[:trusted]) + else + query + end + + query = + from(u in query, + limit: ^params[:page_size], + offset: ^((params[:page] - 1) * params[:page_size]) + ) + + count = Repo.aggregate(__MODULE__, :count, :id) + + {:ok, Repo.all(query), count} + end + + @spec destroy(pos_integer()) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + def destroy(id) do + with %__MODULE__{} = app <- Repo.get(__MODULE__, id) do + Repo.delete(app) + end + end + + @spec errors(Ecto.Changeset.t()) :: map() + def errors(changeset) do + Enum.reduce(changeset.errors, %{}, fn + {:client_name, {error, _}}, acc -> + Map.put(acc, :name, error) + + {key, {error, _}}, acc -> + Map.put(acc, key, error) + end) + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 3f36f6c1a..c37ef59a0 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -203,6 +203,11 @@ defmodule Pleroma.Web.Router do post("/reload_emoji", AdminAPIController, :reload_emoji) get("/stats", AdminAPIController, :stats) + + get("/oauth_app", AdminAPIController, :oauth_app_list) + post("/oauth_app", AdminAPIController, :oauth_app_create) + patch("/oauth_app/:id", AdminAPIController, :oauth_app_update) + delete("/oauth_app/:id", AdminAPIController, :oauth_app_delete) end scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index f9c0994da..7a1ba6936 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -13,6 +13,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do def register_user(params, opts \\ []) do token = params["token"] + trusted_app? = params["trusted_app"] params = %{ nickname: params["nickname"], @@ -29,7 +30,7 @@ def register_user(params, opts \\ []) do captcha_enabled = Pleroma.Config.get([Pleroma.Captcha, :enabled]) # true if captcha is disabled or enabled and valid, false otherwise captcha_ok = - if not captcha_enabled do + if trusted_app? || not captcha_enabled do :ok else Pleroma.Captcha.validate( diff --git a/priv/repo/migrations/20200227122417_add_trusted_to_apps.exs b/priv/repo/migrations/20200227122417_add_trusted_to_apps.exs new file mode 100644 index 000000000..4e2a62af0 --- /dev/null +++ b/priv/repo/migrations/20200227122417_add_trusted_to_apps.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.AddTrustedToApps do + use Ecto.Migration + + def change do + alter table(:apps) do + add(:trusted, :boolean, default: false) + end + end +end diff --git a/test/support/factory.ex b/test/support/factory.ex index af639b6cd..f0b797fd4 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -294,7 +294,7 @@ def follow_activity_factory do def oauth_app_factory do %Pleroma.Web.OAuth.App{ - client_name: "Some client", + client_name: sequence(:client_name, &"Some client #{&1}"), redirect_uris: "https://example.com/callback", scopes: ["read", "write", "follow", "push", "admin"], website: "https://example.com", diff --git a/test/tasks/app_test.exs b/test/tasks/app_test.exs new file mode 100644 index 000000000..b8f03566d --- /dev/null +++ b/test/tasks/app_test.exs @@ -0,0 +1,65 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.AppTest do + use Pleroma.DataCase, async: true + + setup_all do + Mix.shell(Mix.Shell.Process) + + on_exit(fn -> + Mix.shell(Mix.Shell.IO) + end) + end + + describe "creates new app" do + test "with default scopes" do + name = "Some name" + redirect = "https://example.com" + Mix.Tasks.Pleroma.App.run(["create", "-n", name, "-r", redirect]) + + assert_app(name, redirect, ["read", "write", "follow", "push"]) + end + + test "with custom scopes" do + name = "Another name" + redirect = "https://example.com" + + Mix.Tasks.Pleroma.App.run([ + "create", + "-n", + name, + "-r", + redirect, + "-s", + "read,write,follow,push,admin" + ]) + + assert_app(name, redirect, ["read", "write", "follow", "push", "admin"]) + end + end + + test "with errors" do + Mix.Tasks.Pleroma.App.run(["create"]) + {:mix_shell, :error, ["Creating failed:"]} + {:mix_shell, :error, ["name: can't be blank"]} + {:mix_shell, :error, ["redirect_uris: can't be blank"]} + end + + defp assert_app(name, redirect, scopes) do + app = Repo.get_by(Pleroma.Web.OAuth.App, client_name: name) + + assert_received {:mix_shell, :info, [message]} + assert message == "#{name} successfully created:" + + assert_received {:mix_shell, :info, [message]} + assert message == "App client_id: #{app.client_id}" + + assert_received {:mix_shell, :info, [message]} + assert message == "App client_secret: #{app.client_secret}" + + assert app.scopes == scopes + assert app.redirect_uris == redirect + end +end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 0a902585d..d77e8d1d2 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -3623,6 +3623,191 @@ test "status visibility count", %{conn: conn} do response["status_visibility"] end end + + describe "POST /api/pleroma/admin/oauth_app" do + test "errors", %{conn: conn} do + response = conn |> post("/api/pleroma/admin/oauth_app", %{}) |> json_response(200) + + assert response == %{"name" => "can't be blank", "redirect_uris" => "can't be blank"} + end + + test "success", %{conn: conn} do + base_url = Pleroma.Web.base_url() + app_name = "Trusted app" + + response = + conn + |> post("/api/pleroma/admin/oauth_app", %{ + name: app_name, + redirect_uris: base_url + }) + |> json_response(200) + + assert %{ + "client_id" => _, + "client_secret" => _, + "name" => ^app_name, + "redirect_uri" => ^base_url, + "trusted" => false + } = response + end + + test "with trusted", %{conn: conn} do + base_url = Pleroma.Web.base_url() + app_name = "Trusted app" + + response = + conn + |> post("/api/pleroma/admin/oauth_app", %{ + name: app_name, + redirect_uris: base_url, + trusted: true + }) + |> json_response(200) + + assert %{ + "client_id" => _, + "client_secret" => _, + "name" => ^app_name, + "redirect_uri" => ^base_url, + "trusted" => true + } = response + end + end + + describe "GET /api/pleroma/admin/oauth_app" do + setup do + app = insert(:oauth_app) + {:ok, app: app} + end + + test "list", %{conn: conn} do + response = + conn + |> get("/api/pleroma/admin/oauth_app") + |> json_response(200) + + assert %{"apps" => apps, "count" => count, "page_size" => _} = response + + assert length(apps) == count + end + + test "with page size", %{conn: conn} do + insert(:oauth_app) + page_size = 1 + + response = + conn + |> get("/api/pleroma/admin/oauth_app", %{page_size: to_string(page_size)}) + |> json_response(200) + + assert %{"apps" => apps, "count" => _, "page_size" => ^page_size} = response + + assert length(apps) == page_size + end + + test "search by client name", %{conn: conn, app: app} do + response = + conn + |> get("/api/pleroma/admin/oauth_app", %{name: app.client_name}) + |> json_response(200) + + assert %{"apps" => [returned], "count" => _, "page_size" => _} = response + + assert returned["client_id"] == app.client_id + assert returned["name"] == app.client_name + end + + test "search by client id", %{conn: conn, app: app} do + response = + conn + |> get("/api/pleroma/admin/oauth_app", %{client_id: app.client_id}) + |> json_response(200) + + assert %{"apps" => [returned], "count" => _, "page_size" => _} = response + + assert returned["client_id"] == app.client_id + assert returned["name"] == app.client_name + end + + test "only trusted", %{conn: conn} do + app = insert(:oauth_app, trusted: true) + + response = + conn + |> get("/api/pleroma/admin/oauth_app", %{trusted: true}) + |> json_response(200) + + assert %{"apps" => [returned], "count" => _, "page_size" => _} = response + + assert returned["client_id"] == app.client_id + assert returned["name"] == app.client_name + end + end + + describe "DELETE /api/pleroma/admin/oauth_app/:id" do + test "with id", %{conn: conn} do + app = insert(:oauth_app) + + response = + conn + |> delete("/api/pleroma/admin/oauth_app/" <> to_string(app.id)) + |> json_response(:no_content) + + assert response == "" + end + + test "with non existance id", %{conn: conn} do + response = + conn + |> delete("/api/pleroma/admin/oauth_app/0") + |> json_response(:bad_request) + + assert response == "" + end + end + + describe "PATCH /api/pleroma/admin/oauth_app/:id" do + test "with id", %{conn: conn} do + app = insert(:oauth_app) + + name = "another name" + url = "https://example.com" + scopes = ["admin"] + id = app.id + website = "http://website.com" + + response = + conn + |> patch("/api/pleroma/admin/oauth_app/" <> to_string(app.id), %{ + name: name, + trusted: true, + redirect_uris: url, + scopes: scopes, + website: website + }) + |> json_response(200) + + assert %{ + "client_id" => _, + "client_secret" => _, + "id" => ^id, + "name" => ^name, + "redirect_uri" => ^url, + "trusted" => true, + "website" => ^website + } = response + end + + test "without id", %{conn: conn} do + response = + conn + |> patch("/api/pleroma/admin/oauth_app/0") + |> json_response(:bad_request) + + assert response == "" + end + end end # Needed for testing diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index a9fa0ce48..f770232df 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -942,6 +942,73 @@ test "returns forbidden if token is invalid", %{conn: conn, valid_params: valid_ res = post(conn, "/api/v1/accounts", valid_params) assert json_response(res, 403) == %{"error" => "Invalid credentials"} end + + test "registration from trusted app" do + clear_config([Pleroma.Captcha, :enabled], true) + app = insert(:oauth_app, trusted: true, scopes: ["read", "write", "follow", "push"]) + + conn = + build_conn() + |> post("/oauth/token", %{ + "grant_type" => "client_credentials", + "client_id" => app.client_id, + "client_secret" => app.client_secret + }) + + assert %{"access_token" => token, "token_type" => "Bearer"} = json_response(conn, 200) + + response = + build_conn() + |> Plug.Conn.put_req_header("authorization", "Bearer " <> token) + |> post("/api/v1/accounts", %{ + nickname: "nickanme", + agreement: true, + email: "email@example.com", + fullname: "Lain", + username: "Lain", + password: "some_password", + confirm: "some_password" + }) + |> json_response(200) + + assert %{ + "access_token" => access_token, + "created_at" => _, + "scope" => ["read", "write", "follow", "push"], + "token_type" => "Bearer" + } = response + + response = + build_conn() + |> Plug.Conn.put_req_header("authorization", "Bearer " <> access_token) + |> get("/api/v1/accounts/verify_credentials") + |> json_response(200) + + assert %{ + "acct" => "Lain", + "bot" => false, + "display_name" => "Lain", + "follow_requests_count" => 0, + "followers_count" => 0, + "following_count" => 0, + "locked" => false, + "note" => "", + "source" => %{ + "fields" => [], + "note" => "", + "pleroma" => %{ + "actor_type" => "Person", + "discoverable" => false, + "no_rich_text" => false, + "show_role" => true + }, + "privacy" => "public", + "sensitive" => false + }, + "statuses_count" => 0, + "username" => "Lain" + } = response + end end describe "create account by app / rate limit" do From fc81e5a49c34224e07e85f490a30f92db0835d45 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 6 Apr 2020 10:20:44 +0300 Subject: [PATCH 003/137] Enforcement of OAuth scopes check for authenticated API endpoints, :skip_plug plug to mark a plug explicitly skipped (disabled). --- lib/pleroma/plugs/auth_expected_plug.ex | 13 +++++++ lib/pleroma/plugs/oauth_scopes_plug.ex | 3 ++ lib/pleroma/plugs/plug_helper.ex | 38 +++++++++++++++++++ lib/pleroma/web/masto_fe_controller.ex | 2 +- .../controllers/account_controller.ex | 9 ++++- .../controllers/mastodon_api_controller.ex | 18 +++++++-- .../controllers/suggestion_controller.ex | 9 +++-- lib/pleroma/web/oauth/oauth_controller.ex | 2 + .../controllers/pleroma_api_controller.ex | 2 +- lib/pleroma/web/router.ex | 3 +- .../web/twitter_api/twitter_api_controller.ex | 2 + lib/pleroma/web/web.ex | 23 +++++++++++ .../suggestion_controller_test.exs | 26 ------------- .../pleroma_api_controller_test.exs | 2 +- 14 files changed, 113 insertions(+), 39 deletions(-) create mode 100644 lib/pleroma/plugs/auth_expected_plug.ex create mode 100644 lib/pleroma/plugs/plug_helper.ex diff --git a/lib/pleroma/plugs/auth_expected_plug.ex b/lib/pleroma/plugs/auth_expected_plug.ex new file mode 100644 index 000000000..9e4a4bec8 --- /dev/null +++ b/lib/pleroma/plugs/auth_expected_plug.ex @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Plugs.AuthExpectedPlug do + import Plug.Conn + + def init(options), do: options + + def call(conn, _) do + put_private(conn, :auth_expected, true) + end +end diff --git a/lib/pleroma/plugs/oauth_scopes_plug.ex b/lib/pleroma/plugs/oauth_scopes_plug.ex index 38df074ad..b09e1bb4d 100644 --- a/lib/pleroma/plugs/oauth_scopes_plug.ex +++ b/lib/pleroma/plugs/oauth_scopes_plug.ex @@ -8,12 +8,15 @@ defmodule Pleroma.Plugs.OAuthScopesPlug do alias Pleroma.Config alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug + alias Pleroma.Plugs.PlugHelper @behaviour Plug def init(%{scopes: _} = options), do: options def call(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do + conn = PlugHelper.append_to_called_plugs(conn, __MODULE__) + op = options[:op] || :| token = assigns[:token] diff --git a/lib/pleroma/plugs/plug_helper.ex b/lib/pleroma/plugs/plug_helper.ex new file mode 100644 index 000000000..4f83e9414 --- /dev/null +++ b/lib/pleroma/plugs/plug_helper.ex @@ -0,0 +1,38 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Plugs.PlugHelper do + @moduledoc "Pleroma Plug helper" + + def append_to_called_plugs(conn, plug_module) do + append_to_private_list(conn, :called_plugs, plug_module) + end + + def append_to_skipped_plugs(conn, plug_module) do + append_to_private_list(conn, :skipped_plugs, plug_module) + end + + def plug_called?(conn, plug_module) do + contained_in_private_list?(conn, :called_plugs, plug_module) + end + + def plug_skipped?(conn, plug_module) do + contained_in_private_list?(conn, :skipped_plugs, plug_module) + end + + def plug_called_or_skipped?(conn, plug_module) do + plug_called?(conn, plug_module) || plug_skipped?(conn, plug_module) + end + + defp append_to_private_list(conn, private_variable, value) do + list = conn.private[private_variable] || [] + modified_list = Enum.uniq(list ++ [value]) + Plug.Conn.put_private(conn, private_variable, modified_list) + end + + defp contained_in_private_list?(conn, private_variable, value) do + list = conn.private[private_variable] || [] + value in list + end +end diff --git a/lib/pleroma/web/masto_fe_controller.ex b/lib/pleroma/web/masto_fe_controller.ex index 43649ad26..557cde328 100644 --- a/lib/pleroma/web/masto_fe_controller.ex +++ b/lib/pleroma/web/masto_fe_controller.ex @@ -17,7 +17,7 @@ defmodule Pleroma.Web.MastoFEController do when action == :index ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action != :index) + plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action not in [:index, :manifest]) @doc "GET /web/*path" def index(%{assigns: %{user: user, token: token}} = conn, _params) diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 21bc3d5a5..bd6853d12 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -15,10 +15,13 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.ListView alias Pleroma.Web.MastodonAPI.MastodonAPI + alias Pleroma.Web.MastodonAPI.MastodonAPIController alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.OAuth.Token alias Pleroma.Web.TwitterAPI.TwitterAPI + plug(:skip_plug, OAuthScopesPlug when action == :identity_proofs) + plug( OAuthScopesPlug, %{fallback: :proceed_unauthenticated, scopes: ["read:accounts"]} @@ -369,6 +372,8 @@ def blocks(%{assigns: %{user: user}} = conn, _) do end @doc "GET /api/v1/endorsements" - def endorsements(conn, params), - do: Pleroma.Web.MastodonAPI.MastodonAPIController.empty_array(conn, params) + def endorsements(conn, params), do: MastodonAPIController.empty_array(conn, params) + + @doc "GET /api/v1/identity_proofs" + def identity_proofs(conn, params), do: MastodonAPIController.empty_array(conn, params) end 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 14075307d..ac8c18f24 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -3,21 +3,31 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do + @moduledoc """ + Contains stubs for unimplemented Mastodon API endpoints. + + Note: instead of routing directly to this controller's action, + it's preferable to define an action in relevant (non-generic) controller, + set up OAuth rules for it and call this controller's function from it. + """ + use Pleroma.Web, :controller require Logger + plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug when action in [:empty_array, :empty_object]) + + plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + action_fallback(Pleroma.Web.MastodonAPI.FallbackController) - # Stubs for unimplemented mastodon api - # def empty_array(conn, _) do - Logger.debug("Unimplemented, returning an empty array") + Logger.debug("Unimplemented, returning an empty array (list)") json(conn, []) end def empty_object(conn, _) do - Logger.debug("Unimplemented, returning an empty object") + Logger.debug("Unimplemented, returning an empty object (map)") json(conn, %{}) end end diff --git a/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex b/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex index 0cdc7bd8d..c93a43969 100644 --- a/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex @@ -5,10 +5,13 @@ defmodule Pleroma.Web.MastodonAPI.SuggestionController do use Pleroma.Web, :controller + alias Pleroma.Plugs.OAuthScopesPlug + require Logger + plug(OAuthScopesPlug, %{scopes: ["read"]} when action == :index) + @doc "GET /api/v1/suggestions" - def index(conn, _) do - json(conn, []) - end + def index(conn, params), + do: Pleroma.Web.MastodonAPI.MastodonAPIController.empty_array(conn, params) end diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index 46688db7e..0121cd661 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -27,6 +27,8 @@ defmodule Pleroma.Web.OAuth.OAuthController do plug(:fetch_flash) plug(RateLimiter, [name: :authentication] when action == :create_authorization) + plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug) + action_fallback(Pleroma.Web.OAuth.FallbackController) @oob_token_redirect_uri "urn:ietf:wg:oauth:2.0:oob" diff --git a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex index dae7f0f2f..75f61b675 100644 --- a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex @@ -34,7 +34,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do plug( OAuthScopesPlug, - %{scopes: ["write:conversations"]} when action == :update_conversation + %{scopes: ["write:conversations"]} when action in [:update_conversation, :read_conversations] ) plug(OAuthScopesPlug, %{scopes: ["write:notifications"]} when action == :read_notification) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 5a0902739..3d57073d0 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -34,6 +34,7 @@ defmodule Pleroma.Web.Router do pipeline :authenticated_api do plug(:accepts, ["json"]) plug(:fetch_session) + plug(Pleroma.Plugs.AuthExpectedPlug) plug(Pleroma.Plugs.OAuthPlug) plug(Pleroma.Plugs.BasicAuthDecoderPlug) plug(Pleroma.Plugs.UserFetcherPlug) @@ -333,7 +334,7 @@ defmodule Pleroma.Web.Router do get("/accounts/relationships", AccountController, :relationships) get("/accounts/:id/lists", AccountController, :lists) - get("/accounts/:id/identity_proofs", MastodonAPIController, :empty_array) + get("/accounts/:id/identity_proofs", AccountController, :identity_proofs) get("/follow_requests", FollowRequestController, :index) get("/blocks", AccountController, :blocks) diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 0229aea97..31adc2817 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -15,6 +15,8 @@ defmodule Pleroma.Web.TwitterAPI.Controller do plug(OAuthScopesPlug, %{scopes: ["write:notifications"]} when action == :notifications_read) + plug(:skip_plug, OAuthScopesPlug when action in [:oauth_tokens, :revoke_token]) + plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) action_fallback(:errors) diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web/web.ex index cf3ac1287..1af29ce78 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web/web.ex @@ -29,11 +29,34 @@ def controller do import Pleroma.Web.Router.Helpers import Pleroma.Web.TranslationHelpers + alias Pleroma.Plugs.PlugHelper + plug(:set_put_layout) defp set_put_layout(conn, _) do put_layout(conn, Pleroma.Config.get(:app_layout, "app.html")) end + + # Marks a plug as intentionally skipped + # (states that the plug is not called for a good reason, not by a mistake) + defp skip_plug(conn, plug_module) do + PlugHelper.append_to_skipped_plugs(conn, plug_module) + end + + # Here we can apply before-action hooks (e.g. verify whether auth checks were preformed) + defp action(conn, params) do + if conn.private[:auth_expected] && + not PlugHelper.plug_called_or_skipped?(conn, Pleroma.Plugs.OAuthScopesPlug) do + conn + |> render_error( + :forbidden, + "Security violation: OAuth scopes check was neither handled nor explicitly skipped." + ) + |> halt() + else + super(conn, params) + end + end end end diff --git a/test/web/mastodon_api/controllers/suggestion_controller_test.exs b/test/web/mastodon_api/controllers/suggestion_controller_test.exs index c697a39f8..8d0e70db8 100644 --- a/test/web/mastodon_api/controllers/suggestion_controller_test.exs +++ b/test/web/mastodon_api/controllers/suggestion_controller_test.exs @@ -7,34 +7,8 @@ defmodule Pleroma.Web.MastodonAPI.SuggestionControllerTest do alias Pleroma.Config - import Pleroma.Factory - import Tesla.Mock - setup do: oauth_access(["read"]) - setup %{user: user} do - other_user = insert(:user) - host = Config.get([Pleroma.Web.Endpoint, :url, :host]) - url500 = "http://test500?#{host}&#{user.nickname}" - url200 = "http://test200?#{host}&#{user.nickname}" - - mock(fn - %{method: :get, url: ^url500} -> - %Tesla.Env{status: 500, body: "bad request"} - - %{method: :get, url: ^url200} -> - %Tesla.Env{ - status: 200, - body: - ~s([{"acct":"yj455","avatar":"https://social.heldscal.la/avatar/201.jpeg","avatar_static":"https://social.heldscal.la/avatar/s/201.jpeg"}, {"acct":"#{ - other_user.ap_id - }","avatar":"https://social.heldscal.la/avatar/202.jpeg","avatar_static":"https://social.heldscal.la/avatar/s/202.jpeg"}]) - } - end) - - [other_user: other_user] - end - test "returns empty result", %{conn: conn} do res = conn diff --git a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs index 32250f06f..8f0cbe9b2 100644 --- a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs @@ -203,7 +203,7 @@ test "PATCH /api/v1/pleroma/conversations/:id" do test "POST /api/v1/pleroma/conversations/read" do user = insert(:user) - %{user: other_user, conn: conn} = oauth_access(["write:notifications"]) + %{user: other_user, conn: conn} = oauth_access(["write:conversations"]) {:ok, _activity} = CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}", "visibility" => "direct"}) From 1a4875adfa8fa8f65f1db7b4ec3cf868b7e3dee7 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 7 Apr 2020 21:52:32 +0300 Subject: [PATCH 004/137] [#1559] Support for "follow_request" notifications (configurable). (Not currently supported by PleromaFE, thus disabled by default). --- CHANGELOG.md | 1 + config/config.exs | 2 + config/description.exs | 14 ++++ lib/pleroma/activity.ex | 36 +++++++-- lib/pleroma/notification.ex | 11 ++- lib/pleroma/user.ex | 2 + .../mastodon_api/views/notification_view.ex | 3 + lib/pleroma/web/push/impl.ex | 76 ++++++++++++------- lib/pleroma/web/push/subscription.ex | 8 ++ 9 files changed, 117 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6e5d807c..b3b63ac54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - NodeInfo: `pleroma_emoji_reactions` to the `features` list. - Configuration: `:restrict_unauthenticated` setting, restrict access for unauthenticated users to timelines (public and federate), user profiles and statuses. - New HTTP adapter [gun](https://github.com/ninenines/gun). Gun adapter requires minimum OTP version of 22.2 otherwise Pleroma won’t start. For hackney OTP update is not required. +- Notifications: Added `follow_request` notification type (configurable, see `[:notifications, :enable_follow_request_notifications]` setting).
API Changes - Mastodon API: Support for `include_types` in `/api/v1/notifications`. diff --git a/config/config.exs b/config/config.exs index 232a91bf1..d40c2240b 100644 --- a/config/config.exs +++ b/config/config.exs @@ -559,6 +559,8 @@ inactivity_threshold: 7 } +config :pleroma, :notifications, enable_follow_request_notifications: false + config :pleroma, :oauth2, token_expires_in: 600, issue_new_refresh_token: true, diff --git a/config/description.exs b/config/description.exs index 642f1a3ce..b1938912c 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2267,6 +2267,20 @@ } ] }, + %{ + group: :pleroma, + key: :notifications, + type: :group, + description: "Notification settings", + children: [ + %{ + key: :enable_follow_request_notifications, + type: :boolean, + description: + "Enables notifications on new follow requests (causes issues with older PleromaFE versions)." + } + ] + }, %{ group: :pleroma, key: Pleroma.Emails.UserEmail, diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 5a8329e69..3803d8e50 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -27,17 +27,13 @@ defmodule Pleroma.Activity do # https://github.com/tootsuite/mastodon/blob/master/app/models/notification.rb#L19 @mastodon_notification_types %{ "Create" => "mention", - "Follow" => "follow", + "Follow" => ["follow", "follow_request"], "Announce" => "reblog", "Like" => "favourite", "Move" => "move", "EmojiReact" => "pleroma:emoji_reaction" } - @mastodon_to_ap_notification_types for {k, v} <- @mastodon_notification_types, - into: %{}, - do: {v, k} - schema "activities" do field(:data, :map) field(:local, :boolean, default: true) @@ -291,15 +287,41 @@ defp purge_web_resp_cache(%Activity{} = activity) do defp purge_web_resp_cache(nil), do: nil - for {ap_type, type} <- @mastodon_notification_types do + def follow_accepted?( + %Activity{data: %{"type" => "Follow", "object" => followed_ap_id}} = activity + ) do + with %User{} = follower <- Activity.user_actor(activity), + %User{} = followed <- User.get_cached_by_ap_id(followed_ap_id) do + Pleroma.FollowingRelationship.following?(follower, followed) + else + _ -> false + end + end + + def follow_accepted?(_), do: false + + for {ap_type, type} <- @mastodon_notification_types, not is_list(type) do def mastodon_notification_type(%Activity{data: %{"type" => unquote(ap_type)}}), do: unquote(type) end + def mastodon_notification_type(%Activity{data: %{"type" => "Follow"}} = activity) do + if follow_accepted?(activity) do + "follow" + else + "follow_request" + end + end + def mastodon_notification_type(%Activity{}), do: nil def from_mastodon_notification_type(type) do - Map.get(@mastodon_to_ap_notification_types, type) + with {k, _v} <- + Enum.find(@mastodon_notification_types, fn {_k, v} -> + v == type or (is_list(v) and type in v) + end) do + k + end end def all_by_actor_and_id(actor, status_ids \\ []) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 04ee510b9..73e19bf97 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -284,8 +284,17 @@ def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = act end end + def create_notifications(%Activity{data: %{"type" => "Follow"}} = activity) do + if Pleroma.Config.get([:notifications, :enable_follow_request_notifications]) || + Activity.follow_accepted?(activity) do + do_create_notifications(activity) + else + {:ok, []} + end + end + def create_notifications(%Activity{data: %{"type" => type}} = activity) - when type in ["Like", "Announce", "Follow", "Move", "EmojiReact"] do + when type in ["Like", "Announce", "Move", "EmojiReact"] do do_create_notifications(activity) end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 71c8c3a4e..ac2594417 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -699,6 +699,8 @@ def needs_update?(%User{local: false} = user) do def needs_update?(_), do: true @spec maybe_direct_follow(User.t(), User.t()) :: {:ok, User.t()} | {:error, String.t()} + + # "Locked" (self-locked) users demand explicit authorization of follow requests def maybe_direct_follow(%User{} = follower, %User{local: true, locked: true} = followed) do follow(follower, followed, "pending") end diff --git a/lib/pleroma/web/mastodon_api/views/notification_view.ex b/lib/pleroma/web/mastodon_api/views/notification_view.ex index ae87d4701..feed47129 100644 --- a/lib/pleroma/web/mastodon_api/views/notification_view.ex +++ b/lib/pleroma/web/mastodon_api/views/notification_view.ex @@ -116,6 +116,9 @@ def render( "follow" -> response + "follow_request" -> + response + "pleroma:emoji_reaction" -> response |> put_status(parent_activity_fn.(), reading_user, render_opts) diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex index afa510f08..89d45b2e1 100644 --- a/lib/pleroma/web/push/impl.ex +++ b/lib/pleroma/web/push/impl.ex @@ -16,6 +16,8 @@ defmodule Pleroma.Web.Push.Impl do require Logger import Ecto.Query + defdelegate mastodon_notification_type(activity), to: Activity + @types ["Create", "Follow", "Announce", "Like", "Move"] @doc "Performs sending notifications for user subscriptions" @@ -24,32 +26,32 @@ def perform( %{ activity: %{data: %{"type" => activity_type}} = activity, user: %User{id: user_id} - } = notif + } = notification ) when activity_type in @types do - actor = User.get_cached_by_ap_id(notif.activity.data["actor"]) + actor = User.get_cached_by_ap_id(notification.activity.data["actor"]) - type = Activity.mastodon_notification_type(notif.activity) + mastodon_type = mastodon_notification_type(notification.activity) gcm_api_key = Application.get_env(:web_push_encryption, :gcm_api_key) avatar_url = User.avatar_url(actor) object = Object.normalize(activity) user = User.get_cached_by_id(user_id) direct_conversation_id = Activity.direct_conversation_id(activity, user) - for subscription <- fetch_subsriptions(user_id), - get_in(subscription.data, ["alerts", type]) do + for subscription <- fetch_subscriptions(user_id), + Subscription.enabled?(subscription, mastodon_type) do %{ access_token: subscription.token.token, - notification_id: notif.id, - notification_type: type, + notification_id: notification.id, + notification_type: mastodon_type, icon: avatar_url, preferred_locale: "en", pleroma: %{ - activity_id: notif.activity.id, + activity_id: notification.activity.id, direct_conversation_id: direct_conversation_id } } - |> Map.merge(build_content(notif, actor, object)) + |> Map.merge(build_content(notification, actor, object, mastodon_type)) |> Jason.encode!() |> push_message(build_sub(subscription), gcm_api_key, subscription) end @@ -82,7 +84,7 @@ def push_message(body, sub, api_key, subscription) do end @doc "Gets user subscriptions" - def fetch_subsriptions(user_id) do + def fetch_subscriptions(user_id) do Subscription |> where(user_id: ^user_id) |> preload(:token) @@ -99,28 +101,36 @@ def build_sub(subscription) do } end + def build_content(notification, actor, object, mastodon_type \\ nil) + def build_content( %{ activity: %{data: %{"directMessage" => true}}, user: %{notification_settings: %{privacy_option: true}} }, actor, - _ + _object, + _mastodon_type ) do %{title: "New Direct Message", body: "@#{actor.nickname}"} end - def build_content(notif, actor, object) do + def build_content(notification, actor, object, mastodon_type) do + mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) + %{ - title: format_title(notif), - body: format_body(notif, actor, object) + title: format_title(notification, mastodon_type), + body: format_body(notification, actor, object, mastodon_type) } end + def format_body(activity, actor, object, mastodon_type \\ nil) + def format_body( %{activity: %{data: %{"type" => "Create"}}}, actor, - %{data: %{"content" => content}} + %{data: %{"content" => content}}, + _mastodon_type ) do "@#{actor.nickname}: #{Utils.scrub_html_and_truncate(content, 80)}" end @@ -128,33 +138,43 @@ def format_body( def format_body( %{activity: %{data: %{"type" => "Announce"}}}, actor, - %{data: %{"content" => content}} + %{data: %{"content" => content}}, + _mastodon_type ) do "@#{actor.nickname} repeated: #{Utils.scrub_html_and_truncate(content, 80)}" end def format_body( - %{activity: %{data: %{"type" => type}}}, + %{activity: %{data: %{"type" => type}}} = notification, actor, - _object + _object, + mastodon_type ) when type in ["Follow", "Like"] do - case type do - "Follow" -> "@#{actor.nickname} has followed you" - "Like" -> "@#{actor.nickname} has favorited your post" + mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) + + case {type, mastodon_type} do + {"Follow", "follow"} -> "@#{actor.nickname} has followed you" + {"Follow", "follow_request"} -> "@#{actor.nickname} has requested to follow you" + {"Like", _} -> "@#{actor.nickname} has favorited your post" end end - def format_title(%{activity: %{data: %{"directMessage" => true}}}) do + def format_title(activity, mastodon_type \\ nil) + + def format_title(%{activity: %{data: %{"directMessage" => true}}}, _mastodon_type) do "New Direct Message" end - def format_title(%{activity: %{data: %{"type" => type}}}) do - case type do - "Create" -> "New Mention" - "Follow" -> "New Follower" - "Announce" -> "New Repeat" - "Like" -> "New Favorite" + def format_title(%{activity: %{data: %{"type" => type}}} = notification, mastodon_type) do + mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) + + case {type, mastodon_type} do + {"Create", _} -> "New Mention" + {"Follow", "follow"} -> "New Follower" + {"Follow", "follow_request"} -> "New Follow Request" + {"Announce", _} -> "New Repeat" + {"Like", _} -> "New Favorite" end end end diff --git a/lib/pleroma/web/push/subscription.ex b/lib/pleroma/web/push/subscription.ex index 5c448d6c9..b99b0c5fb 100644 --- a/lib/pleroma/web/push/subscription.ex +++ b/lib/pleroma/web/push/subscription.ex @@ -32,6 +32,14 @@ defp alerts(%{"data" => %{"alerts" => alerts}}) do %{"alerts" => alerts} end + def enabled?(subscription, "follow_request") do + enabled?(subscription, "follow") + end + + def enabled?(subscription, alert_type) do + get_in(subscription.data, ["alerts", alert_type]) + end + def create( %User{} = user, %Token{} = token, From f35c28bf070014dfba4b988bfc47fbf93baef81f Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 8 Apr 2020 21:26:22 +0300 Subject: [PATCH 005/137] [#1559] Added / fixed tests for follow / follow_request notifications. --- test/notification_test.exs | 80 +++++++++++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/test/notification_test.exs b/test/notification_test.exs index 837a9dacd..0877aaaaf 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -11,8 +11,10 @@ defmodule Pleroma.NotificationTest do alias Pleroma.Notification alias Pleroma.Tests.ObanHelpers alias Pleroma.User + alias Pleroma.FollowingRelationship alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.CommonAPI + alias Pleroma.Web.MastodonAPI.NotificationView alias Pleroma.Web.Push alias Pleroma.Web.Streamer @@ -272,16 +274,6 @@ test "it doesn't create a notification for user if he is the activity author" do refute Notification.create_notification(activity, author) end - test "it doesn't create a notification for follow-unfollow-follow chains" do - user = insert(:user) - followed_user = insert(:user) - {:ok, _, _, activity} = CommonAPI.follow(user, followed_user) - Notification.create_notification(activity, followed_user) - CommonAPI.unfollow(user, followed_user) - {:ok, _, _, activity_dupe} = CommonAPI.follow(user, followed_user) - refute Notification.create_notification(activity_dupe, followed_user) - end - test "it doesn't create duplicate notifications for follow+subscribed users" do user = insert(:user) subscriber = insert(:user) @@ -304,6 +296,74 @@ test "it doesn't create subscription notifications if the recipient cannot see t end end + describe "follow / follow_request notifications" do + test "it creates `follow` notification for approved Follow activity" do + user = insert(:user) + followed_user = insert(:user, locked: false) + + {:ok, _, _, _activity} = CommonAPI.follow(user, followed_user) + assert FollowingRelationship.following?(user, followed_user) + assert [notification] = Notification.for_user(followed_user) + + assert %{type: "follow"} = + NotificationView.render("show.json", %{ + notification: notification, + for: followed_user + }) + end + + test "if `follow_request` notifications are enabled, " <> + "it creates `follow_request` notification for pending Follow activity" do + clear_config([:notifications, :enable_follow_request_notifications], true) + user = insert(:user) + followed_user = insert(:user, locked: true) + + {:ok, _, _, _activity} = CommonAPI.follow(user, followed_user) + refute FollowingRelationship.following?(user, followed_user) + assert [notification] = Notification.for_user(followed_user) + + render_opts = %{notification: notification, for: followed_user} + assert %{type: "follow_request"} = NotificationView.render("show.json", render_opts) + + # After request is accepted, the same notification is rendered with type "follow": + assert {:ok, _} = CommonAPI.accept_follow_request(user, followed_user) + + notification_id = notification.id + assert [%{id: ^notification_id}] = Notification.for_user(followed_user) + assert %{type: "follow"} = NotificationView.render("show.json", render_opts) + end + + test "if `follow_request` notifications are disabled, " <> + "it does NOT create `follow*` notification for pending Follow activity" do + clear_config([:notifications, :enable_follow_request_notifications], false) + user = insert(:user) + followed_user = insert(:user, locked: true) + + {:ok, _, _, _activity} = CommonAPI.follow(user, followed_user) + refute FollowingRelationship.following?(user, followed_user) + assert [] = Notification.for_user(followed_user) + + # After request is accepted, no new notifications are generated: + assert {:ok, _} = CommonAPI.accept_follow_request(user, followed_user) + assert [] = Notification.for_user(followed_user) + end + + test "it doesn't create a notification for follow-unfollow-follow chains" do + user = insert(:user) + followed_user = insert(:user, locked: false) + + {:ok, _, _, _activity} = CommonAPI.follow(user, followed_user) + assert FollowingRelationship.following?(user, followed_user) + assert [notification] = Notification.for_user(followed_user) + + CommonAPI.unfollow(user, followed_user) + {:ok, _, _, _activity_dupe} = CommonAPI.follow(user, followed_user) + + notification_id = notification.id + assert [%{id: ^notification_id}] = Notification.for_user(followed_user) + end + end + describe "get notification" do test "it gets a notification that belongs to the user" do user = insert(:user) From 3965772b261e78669441a5bf3a597f1a69f78a7f Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 8 Apr 2020 21:33:37 +0300 Subject: [PATCH 006/137] [#1559] Minor change (analysis). --- test/notification_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/notification_test.exs b/test/notification_test.exs index 0877aaaaf..a7f53e319 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -8,10 +8,10 @@ defmodule Pleroma.NotificationTest do import Pleroma.Factory import Mock + alias Pleroma.FollowingRelationship alias Pleroma.Notification alias Pleroma.Tests.ObanHelpers alias Pleroma.User - alias Pleroma.FollowingRelationship alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.NotificationView From ac672a9d6bfdd3cba7692f80a883bd38b0b09a57 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 9 Apr 2020 15:13:37 +0300 Subject: [PATCH 007/137] [#1559] Addressed code review requests. --- lib/pleroma/activity.ex | 8 +++--- .../mastodon_api/views/notification_view.ex | 9 +++---- lib/pleroma/web/push/impl.ex | 25 ++++++++++--------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 3803d8e50..6213d0eb7 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -300,6 +300,8 @@ def follow_accepted?( def follow_accepted?(_), do: false + @spec mastodon_notification_type(Activity.t()) :: String.t() | nil + for {ap_type, type} <- @mastodon_notification_types, not is_list(type) do def mastodon_notification_type(%Activity{data: %{"type" => unquote(ap_type)}}), do: unquote(type) @@ -315,11 +317,11 @@ def mastodon_notification_type(%Activity{data: %{"type" => "Follow"}} = activity def mastodon_notification_type(%Activity{}), do: nil + @spec from_mastodon_notification_type(String.t()) :: String.t() | nil + @doc "Converts Mastodon notification type to AR activity type" def from_mastodon_notification_type(type) do with {k, _v} <- - Enum.find(@mastodon_notification_types, fn {_k, v} -> - v == type or (is_list(v) and type in v) - end) do + Enum.find(@mastodon_notification_types, fn {_k, v} -> type in List.wrap(v) end) do k end end diff --git a/lib/pleroma/web/mastodon_api/views/notification_view.ex b/lib/pleroma/web/mastodon_api/views/notification_view.ex index feed47129..7001fd7b9 100644 --- a/lib/pleroma/web/mastodon_api/views/notification_view.ex +++ b/lib/pleroma/web/mastodon_api/views/notification_view.ex @@ -113,17 +113,14 @@ def render( "move" -> put_target(response, activity, reading_user, render_opts) - "follow" -> - response - - "follow_request" -> - response - "pleroma:emoji_reaction" -> response |> put_status(parent_activity_fn.(), reading_user, render_opts) |> put_emoji(activity) + type when type in ["follow", "follow_request"] -> + response + _ -> nil end diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex index 89d45b2e1..f1740a6e0 100644 --- a/lib/pleroma/web/push/impl.ex +++ b/lib/pleroma/web/push/impl.ex @@ -153,10 +153,10 @@ def format_body( when type in ["Follow", "Like"] do mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) - case {type, mastodon_type} do - {"Follow", "follow"} -> "@#{actor.nickname} has followed you" - {"Follow", "follow_request"} -> "@#{actor.nickname} has requested to follow you" - {"Like", _} -> "@#{actor.nickname} has favorited your post" + case mastodon_type do + "follow" -> "@#{actor.nickname} has followed you" + "follow_request" -> "@#{actor.nickname} has requested to follow you" + "favourite" -> "@#{actor.nickname} has favorited your post" end end @@ -166,15 +166,16 @@ def format_title(%{activity: %{data: %{"directMessage" => true}}}, _mastodon_typ "New Direct Message" end - def format_title(%{activity: %{data: %{"type" => type}}} = notification, mastodon_type) do - mastodon_type = mastodon_type || mastodon_notification_type(notification.activity) + def format_title(%{activity: activity}, mastodon_type) do + mastodon_type = mastodon_type || mastodon_notification_type(activity) - case {type, mastodon_type} do - {"Create", _} -> "New Mention" - {"Follow", "follow"} -> "New Follower" - {"Follow", "follow_request"} -> "New Follow Request" - {"Announce", _} -> "New Repeat" - {"Like", _} -> "New Favorite" + case mastodon_type do + "mention" -> "New Mention" + "follow" -> "New Follower" + "follow_request" -> "New Follow Request" + "reblog" -> "New Repeat" + "favourite" -> "New Favorite" + type -> "New #{String.capitalize(type || "event")}" end end end From 5628984df4809888746ea005decf3856ca929858 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 1 Apr 2020 01:50:53 +0200 Subject: [PATCH 008/137] User: remove source_data use for follower_address and following_address --- lib/pleroma/user.ex | 91 ++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 71c8c3a4e..d030c7314 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -306,6 +306,7 @@ def banner_url(user, options \\ []) do end end + # Should probably be renamed or removed def ap_id(%User{nickname: nickname}), do: "#{Web.base_url()}/users/#{nickname}" def ap_followers(%User{follower_address: fa}) when is_binary(fa), do: fa @@ -339,6 +340,13 @@ defp truncate_if_exists(params, key, max_length) do end end + defp fix_follower_address(%{follower_address: _, following_address: _} = params), do: params + + defp fix_follower_address(%{nickname: nickname} = params), + do: Map.put(params, :follower_address, ap_followers(%User{nickname: nickname})) + + defp fix_follower_address(params), do: params + def remote_user_creation(params) do bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) @@ -348,53 +356,44 @@ def remote_user_creation(params) do |> truncate_if_exists(:name, name_limit) |> truncate_if_exists(:bio, bio_limit) |> truncate_fields_param() + |> fix_follower_address() - changeset = - %User{local: false} - |> cast( - params, - [ - :bio, - :name, - :ap_id, - :nickname, - :avatar, - :ap_enabled, - :source_data, - :banner, - :locked, - :magic_key, - :uri, - :hide_followers, - :hide_follows, - :hide_followers_count, - :hide_follows_count, - :follower_count, - :fields, - :following_count, - :discoverable, - :invisible, - :actor_type, - :also_known_as - ] - ) - |> validate_required([:name, :ap_id]) - |> unique_constraint(:nickname) - |> validate_format(:nickname, @email_regex) - |> validate_length(:bio, max: bio_limit) - |> validate_length(:name, max: name_limit) - |> validate_fields(true) - - case params[:source_data] do - %{"followers" => followers, "following" => following} -> - changeset - |> put_change(:follower_address, followers) - |> put_change(:following_address, following) - - _ -> - followers = ap_followers(%User{nickname: get_field(changeset, :nickname)}) - put_change(changeset, :follower_address, followers) - end + %User{local: false} + |> cast( + params, + [ + :bio, + :name, + :ap_id, + :nickname, + :avatar, + :ap_enabled, + :source_data, + :banner, + :locked, + :magic_key, + :uri, + :follower_address, + :following_address, + :hide_followers, + :hide_follows, + :hide_followers_count, + :hide_follows_count, + :follower_count, + :fields, + :following_count, + :discoverable, + :invisible, + :actor_type, + :also_known_as + ] + ) + |> validate_required([:name, :ap_id]) + |> unique_constraint(:nickname) + |> validate_format(:nickname, @email_regex) + |> validate_length(:bio, max: bio_limit) + |> validate_length(:name, max: name_limit) + |> validate_fields(true) end def update_changeset(struct, params \\ %{}) do From 19eedb3d0424abb235eec1a51457ed0bf3a0e95d Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 1 Apr 2020 06:58:48 +0200 Subject: [PATCH 009/137] User: Move public_key from source_data to own field --- lib/pleroma/user.ex | 9 ++++++--- lib/pleroma/web/activity_pub/activity_pub.ex | 4 +++- .../20200401030751_users_add_public_key.exs | 17 +++++++++++++++++ test/signature_test.exs | 13 ++++--------- 4 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 priv/repo/migrations/20200401030751_users_add_public_key.exs diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index d030c7314..0adea42ec 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -82,6 +82,7 @@ defmodule Pleroma.User do field(:password, :string, virtual: true) field(:password_confirmation, :string, virtual: true) field(:keys, :string) + field(:public_key, :string) field(:ap_id, :string) field(:avatar, :map) field(:local, :boolean, default: true) @@ -366,6 +367,7 @@ def remote_user_creation(params) do :name, :ap_id, :nickname, + :public_key, :avatar, :ap_enabled, :source_data, @@ -407,6 +409,7 @@ def update_changeset(struct, params \\ %{}) do :bio, :name, :avatar, + :public_key, :locked, :no_rich_text, :default_scope, @@ -503,6 +506,7 @@ def upgrade_changeset(struct, params \\ %{}, remote? \\ false) do :name, :follower_address, :following_address, + :public_key, :avatar, :last_refreshed_at, :ap_enabled, @@ -1616,8 +1620,7 @@ defp create_service_actor(uri, nickname) do |> set_cache() end - # AP style - def public_key(%{source_data: %{"publicKey" => %{"publicKeyPem" => public_key_pem}}}) do + def public_key(%{public_key: public_key_pem}) when is_binary(public_key_pem) do key = public_key_pem |> :public_key.pem_decode() @@ -1627,7 +1630,7 @@ def public_key(%{source_data: %{"publicKey" => %{"publicKeyPem" => public_key_pe {:ok, key} end - def public_key(_), do: {:error, "not found key"} + def public_key(_), do: {:error, "key not found"} def get_public_key_for_ap_id(ap_id) do with {:ok, %User{} = user} <- get_or_fetch_by_ap_id(ap_id), diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 19286fd01..0e4a9d842 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1432,6 +1432,7 @@ defp object_to_user_data(data) do discoverable = data["discoverable"] || false invisible = data["invisible"] || false actor_type = data["type"] || "Person" + public_key = data["publicKey"]["publicKeyPem"] user_data = %{ ap_id: data["id"], @@ -1449,7 +1450,8 @@ defp object_to_user_data(data) do following_address: data["following"], bio: data["summary"], actor_type: actor_type, - also_known_as: Map.get(data, "alsoKnownAs", []) + also_known_as: Map.get(data, "alsoKnownAs", []), + public_key: public_key } # nickname can be nil because of virtual actors diff --git a/priv/repo/migrations/20200401030751_users_add_public_key.exs b/priv/repo/migrations/20200401030751_users_add_public_key.exs new file mode 100644 index 000000000..04e5ad1e2 --- /dev/null +++ b/priv/repo/migrations/20200401030751_users_add_public_key.exs @@ -0,0 +1,17 @@ +defmodule Pleroma.Repo.Migrations.UsersAddPublicKey do + use Ecto.Migration + + def up do + alter table(:users) do + add_if_not_exists(:public_key, :text) + end + + execute("UPDATE users SET public_key = source_data->'publicKey'->>'publicKeyPem'") + end + + def down do + alter table(:users) do + remove_if_exists(:public_key, :text) + end + end +end diff --git a/test/signature_test.exs b/test/signature_test.exs index 04736d8b9..d5a2a62c4 100644 --- a/test/signature_test.exs +++ b/test/signature_test.exs @@ -19,12 +19,7 @@ defmodule Pleroma.SignatureTest do @private_key "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA48qb4v6kqigZutO9Ot0wkp27GIF2LiVaADgxQORZozZR63jH\nTaoOrS3Xhngbgc8SSOhfXET3omzeCLqaLNfXnZ8OXmuhJfJSU6mPUvmZ9QdT332j\nfN/g3iWGhYMf/M9ftCKh96nvFVO/tMruzS9xx7tkrfJjehdxh/3LlJMMImPtwcD7\nkFXwyt1qZTAU6Si4oQAJxRDQXHp1ttLl3Ob829VM7IKkrVmY8TD+JSlV0jtVJPj6\n1J19ytKTx/7UaucYvb9HIiBpkuiy5n/irDqKLVf5QEdZoNCdojOZlKJmTLqHhzKP\n3E9TxsUjhrf4/EqegNc/j982RvOxeu4i40zMQwIDAQABAoIBAQDH5DXjfh21i7b4\ncXJuw0cqget617CDUhemdakTDs9yH+rHPZd3mbGDWuT0hVVuFe4vuGpmJ8c+61X0\nRvugOlBlavxK8xvYlsqTzAmPgKUPljyNtEzQ+gz0I+3mH2jkin2rL3D+SksZZgKm\nfiYMPIQWB2WUF04gB46DDb2mRVuymGHyBOQjIx3WC0KW2mzfoFUFRlZEF+Nt8Ilw\nT+g/u0aZ1IWoszbsVFOEdghgZET0HEarum0B2Je/ozcPYtwmU10iBANGMKdLqaP/\nj954BPunrUf6gmlnLZKIKklJj0advx0NA+cL79+zeVB3zexRYSA5o9q0WPhiuTwR\n/aedWHnBAoGBAP0sDWBAM1Y4TRAf8ZI9PcztwLyHPzfEIqzbObJJnx1icUMt7BWi\n+/RMOnhrlPGE1kMhOqSxvXYN3u+eSmWTqai2sSH5Hdw2EqnrISSTnwNUPINX7fHH\njEkgmXQ6ixE48SuBZnb4w1EjdB/BA6/sjL+FNhggOc87tizLTkMXmMtTAoGBAOZV\n+wPuAMBDBXmbmxCuDIjoVmgSlgeRunB1SA8RCPAFAiUo3+/zEgzW2Oz8kgI+xVwM\n33XkLKrWG1Orhpp6Hm57MjIc5MG+zF4/YRDpE/KNG9qU1tiz0UD5hOpIU9pP4bR/\ngxgPxZzvbk4h5BfHWLpjlk8UUpgk6uxqfti48c1RAoGBALBOKDZ6HwYRCSGMjUcg\n3NPEUi84JD8qmFc2B7Tv7h2he2ykIz9iFAGpwCIyETQsJKX1Ewi0OlNnD3RhEEAy\nl7jFGQ+mkzPSeCbadmcpYlgIJmf1KN/x7fDTAepeBpCEzfZVE80QKbxsaybd3Dp8\nCfwpwWUFtBxr4c7J+gNhAGe/AoGAPn8ZyqkrPv9wXtyfqFjxQbx4pWhVmNwrkBPi\nZ2Qh3q4dNOPwTvTO8vjghvzIyR8rAZzkjOJKVFgftgYWUZfM5gE7T2mTkBYq8W+U\n8LetF+S9qAM2gDnaDx0kuUTCq7t87DKk6URuQ/SbI0wCzYjjRD99KxvChVGPBHKo\n1DjqMuECgYEAgJGNm7/lJCS2wk81whfy/ttKGsEIkyhPFYQmdGzSYC5aDc2gp1R3\nxtOkYEvdjfaLfDGEa4UX8CHHF+w3t9u8hBtcdhMH6GYb9iv6z0VBTt4A/11HUR49\n3Z7TQ18Iyh3jAUCzFV9IJlLIExq5Y7P4B3ojWFBN607sDCt8BMPbDYs=\n-----END RSA PRIVATE KEY-----" - @public_key %{ - "id" => "https://mastodon.social/users/lambadalambda#main-key", - "owner" => "https://mastodon.social/users/lambadalambda", - "publicKeyPem" => - "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw0P/Tq4gb4G/QVuMGbJo\nC/AfMNcv+m7NfrlOwkVzcU47jgESuYI4UtJayissCdBycHUnfVUd9qol+eznSODz\nCJhfJloqEIC+aSnuEPGA0POtWad6DU0E6/Ho5zQn5WAWUwbRQqowbrsm/GHo2+3v\neR5jGenwA6sYhINg/c3QQbksyV0uJ20Umyx88w8+TJuv53twOfmyDWuYNoQ3y5cc\nHKOZcLHxYOhvwg3PFaGfFHMFiNmF40dTXt9K96r7sbzc44iLD+VphbMPJEjkMuf8\nPGEFOBzy8pm3wJZw2v32RNW2VESwMYyqDzwHXGSq1a73cS7hEnc79gXlELsK04L9\nQQIDAQAB\n-----END PUBLIC KEY-----\n" - } + @public_key "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw0P/Tq4gb4G/QVuMGbJo\nC/AfMNcv+m7NfrlOwkVzcU47jgESuYI4UtJayissCdBycHUnfVUd9qol+eznSODz\nCJhfJloqEIC+aSnuEPGA0POtWad6DU0E6/Ho5zQn5WAWUwbRQqowbrsm/GHo2+3v\neR5jGenwA6sYhINg/c3QQbksyV0uJ20Umyx88w8+TJuv53twOfmyDWuYNoQ3y5cc\nHKOZcLHxYOhvwg3PFaGfFHMFiNmF40dTXt9K96r7sbzc44iLD+VphbMPJEjkMuf8\nPGEFOBzy8pm3wJZw2v32RNW2VESwMYyqDzwHXGSq1a73cS7hEnc79gXlELsK04L9\nQQIDAQAB\n-----END PUBLIC KEY-----\n" @rsa_public_key { :RSAPublicKey, @@ -42,7 +37,7 @@ defp make_fake_conn(key_id), test "it returns key" do expected_result = {:ok, @rsa_public_key} - user = insert(:user, source_data: %{"publicKey" => @public_key}) + user = insert(:user, public_key: @public_key) assert Signature.fetch_public_key(make_fake_conn(user.ap_id)) == expected_result end @@ -53,8 +48,8 @@ test "it returns error when not found user" do end) =~ "[error] Could not decode user" end - test "it returns error if public key is empty" do - user = insert(:user, source_data: %{"publicKey" => %{}}) + test "it returns error if public key is nil" do + user = insert(:user, public_key: nil) assert Signature.fetch_public_key(make_fake_conn(user.ap_id)) == {:error, :error} end From b6bed1a284ce07359642e0a884d2476ca387439d Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 9 Apr 2020 13:01:35 +0200 Subject: [PATCH 010/137] Types.URI: New --- lib/pleroma/user.ex | 3 ++- .../object_validators/note_validator.ex | 1 + .../object_validators/types/object_id.ex | 12 +++-------- .../object_validators/types/uri.ex | 20 +++++++++++++++++++ 4 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 lib/pleroma/web/activity_pub/object_validators/types/uri.ex diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 0adea42ec..027386a22 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -28,6 +28,7 @@ defmodule Pleroma.User do alias Pleroma.UserRelationship alias Pleroma.Web alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.ObjectValidators.Types alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils @@ -113,7 +114,7 @@ defmodule Pleroma.User do field(:show_role, :boolean, default: true) field(:settings, :map, default: nil) field(:magic_key, :string, default: nil) - field(:uri, :string, default: nil) + field(:uri, Types.Uri, default: nil) field(:hide_followers_count, :boolean, default: false) field(:hide_follows_count, :boolean, default: false) field(:hide_followers, :boolean, default: false) diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex index c95b622e4..462a5620a 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex @@ -35,6 +35,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) field(:inRepyTo, :string) + field(:uri, Types.Uri) field(:likes, {:array, :string}, default: []) field(:announcements, {:array, :string}, default: []) diff --git a/lib/pleroma/web/activity_pub/object_validators/types/object_id.ex b/lib/pleroma/web/activity_pub/object_validators/types/object_id.ex index f6e749b33..f71f76370 100644 --- a/lib/pleroma/web/activity_pub/object_validators/types/object_id.ex +++ b/lib/pleroma/web/activity_pub/object_validators/types/object_id.ex @@ -15,15 +15,9 @@ def cast(object) when is_binary(object) do def cast(%{"id" => object}), do: cast(object) - def cast(_) do - :error - end + def cast(_), do: :error - def dump(data) do - {:ok, data} - end + def dump(data), do: {:ok, data} - def load(data) do - {:ok, data} - end + def load(data), do: {:ok, data} end diff --git a/lib/pleroma/web/activity_pub/object_validators/types/uri.ex b/lib/pleroma/web/activity_pub/object_validators/types/uri.ex new file mode 100644 index 000000000..24845bcc0 --- /dev/null +++ b/lib/pleroma/web/activity_pub/object_validators/types/uri.ex @@ -0,0 +1,20 @@ +defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Uri do + use Ecto.Type + + def type, do: :string + + def cast(uri) when is_binary(uri) do + case URI.parse(uri) do + %URI{host: nil} -> :error + %URI{host: ""} -> :error + %URI{scheme: scheme} when scheme in ["https", "http"] -> {:ok, uri} + _ -> :error + end + end + + def cast(_), do: :error + + def dump(data), do: {:ok, data} + + def load(data), do: {:ok, data} +end From 369c03834c5f2638080ff515055723e6c1c716bf Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 1 Apr 2020 07:15:38 +0200 Subject: [PATCH 011/137] formatter: Use user.uri instead of user.source_data.uri --- lib/pleroma/formatter.ex | 7 ++----- test/formatter_test.exs | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index c44e7fc8b..02a93a8dc 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -31,7 +31,7 @@ def escape_mention_handler("@" <> nickname = mention, buffer, _, _) do def mention_handler("@" <> nickname, buffer, opts, acc) do case User.get_cached_by_nickname(nickname) do %User{id: id} = user -> - ap_id = get_ap_id(user) + user_url = user.uri || user.ap_id nickname_text = get_nickname_text(nickname, opts) link = @@ -42,7 +42,7 @@ def mention_handler("@" <> nickname, buffer, opts, acc) do ["@", Phoenix.HTML.Tag.content_tag(:span, nickname_text)], "data-user": id, class: "u-url mention", - href: ap_id, + href: user_url, rel: "ugc" ), class: "h-card" @@ -146,9 +146,6 @@ def truncate(text, max_length \\ 200, omission \\ "...") do end end - defp get_ap_id(%User{source_data: %{"url" => url}}) when is_binary(url), do: url - defp get_ap_id(%User{ap_id: ap_id}), do: ap_id - defp get_nickname_text(nickname, %{mentions_format: :full}), do: User.full_nickname(nickname) defp get_nickname_text(nickname, _), do: User.local_nickname(nickname) end diff --git a/test/formatter_test.exs b/test/formatter_test.exs index 93fd8eab7..bef5a2c28 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -140,7 +140,7 @@ test "gives a replacement for user links, using local nicknames in user links te archaeme = insert(:user, nickname: "archa_eme_", - source_data: %{"url" => "https://archeme/@archa_eme_"} + uri: "https://archeme/@archa_eme_" ) archaeme_remote = insert(:user, %{nickname: "archaeme@archae.me"}) From 62656ab259cec1a8585abecf45096b283fa4c60a Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 1 Apr 2020 07:47:07 +0200 Subject: [PATCH 012/137] User: Move inbox & shared_inbox to own fields --- lib/pleroma/user.ex | 8 +++ lib/pleroma/web/activity_pub/activity_pub.ex | 19 ++++++- lib/pleroma/web/activity_pub/publisher.ex | 13 +++-- .../20200401072456_users_add_inboxes.exs | 20 +++++++ test/web/activity_pub/publisher_test.exs | 52 ++++++------------- test/web/federator_test.exs | 4 +- 6 files changed, 70 insertions(+), 46 deletions(-) create mode 100644 priv/repo/migrations/20200401072456_users_add_inboxes.exs diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 027386a22..7d8f3a76b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -134,6 +134,8 @@ defmodule Pleroma.User do field(:skip_thread_containment, :boolean, default: false) field(:actor_type, :string, default: "Person") field(:also_known_as, {:array, :string}, default: []) + field(:inbox, :string) + field(:shared_inbox, :string) embeds_one( :notification_settings, @@ -367,6 +369,8 @@ def remote_user_creation(params) do :bio, :name, :ap_id, + :inbox, + :shared_inbox, :nickname, :public_key, :avatar, @@ -411,6 +415,8 @@ def update_changeset(struct, params \\ %{}) do :name, :avatar, :public_key, + :inbox, + :shared_inbox, :locked, :no_rich_text, :default_scope, @@ -508,6 +514,8 @@ def upgrade_changeset(struct, params \\ %{}, remote? \\ false) do :follower_address, :following_address, :public_key, + :inbox, + :shared_inbox, :avatar, :last_refreshed_at, :ap_enabled, diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 0e4a9d842..f0bbecc9b 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1432,7 +1432,20 @@ defp object_to_user_data(data) do discoverable = data["discoverable"] || false invisible = data["invisible"] || false actor_type = data["type"] || "Person" - public_key = data["publicKey"]["publicKeyPem"] + + public_key = + if is_map(data["publicKey"]) && is_binary(data["publicKey"]["publicKeyPem"]) do + data["publicKey"]["publicKeyPem"] + else + nil + end + + shared_inbox = + if is_map(data["endpoints"]) && is_binary(data["endpoints"]["sharedInbox"]) do + data["endpoints"]["sharedInbox"] + else + nil + end user_data = %{ ap_id: data["id"], @@ -1451,7 +1464,9 @@ defp object_to_user_data(data) do bio: data["summary"], actor_type: actor_type, also_known_as: Map.get(data, "alsoKnownAs", []), - public_key: public_key + public_key: public_key, + inbox: data["inbox"], + shared_inbox: shared_inbox } # nickname can be nil because of virtual actors diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index 6c558e7f0..b70cbd043 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -141,8 +141,8 @@ defp get_cc_ap_ids(ap_id, recipients) do |> Enum.map(& &1.ap_id) end - defp maybe_use_sharedinbox(%User{source_data: data}), - do: (is_map(data["endpoints"]) && Map.get(data["endpoints"], "sharedInbox")) || data["inbox"] + defp maybe_use_sharedinbox(%User{shared_inbox: nil, inbox: inbox}), do: inbox + defp maybe_use_sharedinbox(%User{shared_inbox: shared_inbox}), do: shared_inbox @doc """ Determine a user inbox to use based on heuristics. These heuristics @@ -157,7 +157,7 @@ defp maybe_use_sharedinbox(%User{source_data: data}), """ def determine_inbox( %Activity{data: activity_data}, - %User{source_data: data} = user + %User{inbox: inbox} = user ) do to = activity_data["to"] || [] cc = activity_data["cc"] || [] @@ -174,7 +174,7 @@ def determine_inbox( maybe_use_sharedinbox(user) true -> - data["inbox"] + inbox end end @@ -192,14 +192,13 @@ def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity) inboxes = recipients |> Enum.filter(&User.ap_enabled?/1) - |> Enum.map(fn %{source_data: data} -> data["inbox"] end) + |> Enum.map(fn actor -> actor.inbox end) |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) |> Instances.filter_reachable() Repo.checkout(fn -> Enum.each(inboxes, fn {inbox, unreachable_since} -> - %User{ap_id: ap_id} = - Enum.find(recipients, fn %{source_data: data} -> data["inbox"] == inbox end) + %User{ap_id: ap_id} = Enum.find(recipients, fn actor -> actor.inbox == inbox end) # Get all the recipients on the same host and add them to cc. Otherwise, a remote # instance would only accept a first message for the first recipient and ignore the rest. diff --git a/priv/repo/migrations/20200401072456_users_add_inboxes.exs b/priv/repo/migrations/20200401072456_users_add_inboxes.exs new file mode 100644 index 000000000..0947f0ab2 --- /dev/null +++ b/priv/repo/migrations/20200401072456_users_add_inboxes.exs @@ -0,0 +1,20 @@ +defmodule Pleroma.Repo.Migrations.UsersAddInboxes do + use Ecto.Migration + + def up do + alter table(:users) do + add_if_not_exists(:inbox, :text) + add_if_not_exists(:shared_inbox, :text) + end + + execute("UPDATE users SET inbox = source_data->>'inbox'") + execute("UPDATE users SET shared_inbox = source_data->'endpoints'->>'sharedInbox'") + end + + def down do + alter table(:users) do + remove_if_exists(:inbox, :text) + remove_if_exists(:shared_inbox, :text) + end + end +end diff --git a/test/web/activity_pub/publisher_test.exs b/test/web/activity_pub/publisher_test.exs index 801da03c1..c2bc38d52 100644 --- a/test/web/activity_pub/publisher_test.exs +++ b/test/web/activity_pub/publisher_test.exs @@ -48,10 +48,7 @@ test "it returns links" do describe "determine_inbox/2" do test "it returns sharedInbox for messages involving as:Public in to" do - user = - insert(:user, %{ - source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}} - }) + user = insert(:user, %{shared_inbox: "http://example.com/inbox"}) activity = %Activity{ data: %{"to" => [@as_public], "cc" => [user.follower_address]} @@ -61,10 +58,7 @@ test "it returns sharedInbox for messages involving as:Public in to" do end test "it returns sharedInbox for messages involving as:Public in cc" do - user = - insert(:user, %{ - source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}} - }) + user = insert(:user, %{shared_inbox: "http://example.com/inbox"}) activity = %Activity{ data: %{"cc" => [@as_public], "to" => [user.follower_address]} @@ -74,11 +68,7 @@ test "it returns sharedInbox for messages involving as:Public in cc" do end test "it returns sharedInbox for messages involving multiple recipients in to" do - user = - insert(:user, %{ - source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}} - }) - + user = insert(:user, %{shared_inbox: "http://example.com/inbox"}) user_two = insert(:user) user_three = insert(:user) @@ -90,11 +80,7 @@ test "it returns sharedInbox for messages involving multiple recipients in to" d end test "it returns sharedInbox for messages involving multiple recipients in cc" do - user = - insert(:user, %{ - source_data: %{"endpoints" => %{"sharedInbox" => "http://example.com/inbox"}} - }) - + user = insert(:user, %{shared_inbox: "http://example.com/inbox"}) user_two = insert(:user) user_three = insert(:user) @@ -107,12 +93,10 @@ test "it returns sharedInbox for messages involving multiple recipients in cc" d test "it returns sharedInbox for messages involving multiple recipients in total" do user = - insert(:user, - source_data: %{ - "inbox" => "http://example.com/personal-inbox", - "endpoints" => %{"sharedInbox" => "http://example.com/inbox"} - } - ) + insert(:user, %{ + shared_inbox: "http://example.com/inbox", + inbox: "http://example.com/personal-inbox" + }) user_two = insert(:user) @@ -125,12 +109,10 @@ test "it returns sharedInbox for messages involving multiple recipients in total test "it returns inbox for messages involving single recipients in total" do user = - insert(:user, - source_data: %{ - "inbox" => "http://example.com/personal-inbox", - "endpoints" => %{"sharedInbox" => "http://example.com/inbox"} - } - ) + insert(:user, %{ + shared_inbox: "http://example.com/inbox", + inbox: "http://example.com/personal-inbox" + }) activity = %Activity{ data: %{"to" => [user.ap_id], "cc" => []} @@ -258,11 +240,11 @@ test "it returns inbox for messages involving single recipients in total" do [:passthrough], [] do follower = - insert(:user, + insert(:user, %{ local: false, - source_data: %{"inbox" => "https://domain.com/users/nick1/inbox"}, + inbox: "https://domain.com/users/nick1/inbox", ap_enabled: true - ) + }) actor = insert(:user, follower_address: follower.ap_id) user = insert(:user) @@ -295,14 +277,14 @@ test "it returns inbox for messages involving single recipients in total" do fetcher = insert(:user, local: false, - source_data: %{"inbox" => "https://domain.com/users/nick1/inbox"}, + inbox: "https://domain.com/users/nick1/inbox", ap_enabled: true ) another_fetcher = insert(:user, local: false, - source_data: %{"inbox" => "https://domain2.com/users/nick1/inbox"}, + inbox: "https://domain2.com/users/nick1/inbox", ap_enabled: true ) diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index da844c24c..59e53bb03 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -78,7 +78,7 @@ test "it federates only to reachable instances via AP" do local: false, nickname: "nick1@domain.com", ap_id: "https://domain.com/users/nick1", - source_data: %{"inbox" => inbox1}, + inbox: inbox1, ap_enabled: true }) @@ -86,7 +86,7 @@ test "it federates only to reachable instances via AP" do local: false, nickname: "nick2@domain2.com", ap_id: "https://domain2.com/users/nick2", - source_data: %{"inbox" => inbox2}, + inbox: inbox2, ap_enabled: true }) From 9172d719ccbf84d55236007d329fc880db69fe42 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 3 Apr 2020 13:03:32 +0200 Subject: [PATCH 013/137] profile emojis in User.emoji instead of source_data --- lib/pleroma/emoji/formatter.ex | 14 ++------ lib/pleroma/user.ex | 27 +++++++++----- lib/pleroma/web/activity_pub/activity_pub.ex | 9 +++++ .../web/activity_pub/transmogrifier.ex | 2 +- .../web/activity_pub/views/user_view.ex | 2 +- lib/pleroma/web/common_api/common_api.ex | 20 ----------- lib/pleroma/web/common_api/utils.ex | 17 +-------- .../controllers/account_controller.ex | 6 +--- .../web/mastodon_api/views/account_view.ex | 10 +++--- .../controllers/account_controller.ex | 15 +++----- lib/pleroma/web/static_fe/static_fe_view.ex | 9 ----- .../static_fe/static_fe/_user_card.html.eex | 2 +- .../static_fe/static_fe/profile.html.eex | 2 +- .../20200406100225_users_add_emoji.exs | 35 +++++++++++++++++++ test/emoji/formatter_test.exs | 24 ++++--------- test/web/activity_pub/transmogrifier_test.exs | 14 ++++++++ .../web/activity_pub/views/user_view_test.exs | 2 +- test/web/common_api/common_api_test.exs | 12 ------- test/web/common_api/common_api_utils_test.exs | 23 ------------ .../mastodon_api/views/account_view_test.exs | 16 ++------- 20 files changed, 103 insertions(+), 158 deletions(-) create mode 100644 priv/repo/migrations/20200406100225_users_add_emoji.exs diff --git a/lib/pleroma/emoji/formatter.ex b/lib/pleroma/emoji/formatter.ex index 59ff2cac3..dc45b8a38 100644 --- a/lib/pleroma/emoji/formatter.ex +++ b/lib/pleroma/emoji/formatter.ex @@ -38,22 +38,14 @@ def demojify(text) do def demojify(text, nil), do: text - @doc "Outputs a list of the emoji-shortcodes in a text" - def get_emoji(text) when is_binary(text) do - Enum.filter(Emoji.get_all(), fn {emoji, %Emoji{}} -> - String.contains?(text, ":#{emoji}:") - end) - end - - def get_emoji(_), do: [] - @doc "Outputs a list of the emoji-Maps in a text" def get_emoji_map(text) when is_binary(text) do - get_emoji(text) + Emoji.get_all() + |> Enum.filter(fn {emoji, %Emoji{}} -> String.contains?(text, ":#{emoji}:") end) |> Enum.reduce(%{}, fn {name, %Emoji{file: file}}, acc -> Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}") end) end - def get_emoji_map(_), do: [] + def get_emoji_map(_), do: %{} end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 7d8f3a76b..cd3551e11 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -15,6 +15,7 @@ defmodule Pleroma.User do alias Pleroma.Config alias Pleroma.Conversation.Participation alias Pleroma.Delivery + alias Pleroma.Emoji alias Pleroma.FollowingRelationship alias Pleroma.Formatter alias Pleroma.HTML @@ -124,7 +125,7 @@ defmodule Pleroma.User do field(:pinned_activities, {:array, :string}, default: []) field(:email_notifications, :map, default: %{"digest" => false}) field(:mascot, :map, default: nil) - field(:emoji, {:array, :map}, default: []) + field(:emoji, :map, default: %{}) field(:pleroma_settings_store, :map, default: %{}) field(:fields, {:array, :map}, default: []) field(:raw_fields, {:array, :map}, default: []) @@ -368,6 +369,7 @@ def remote_user_creation(params) do [ :bio, :name, + :emoji, :ap_id, :inbox, :shared_inbox, @@ -413,6 +415,7 @@ def update_changeset(struct, params \\ %{}) do [ :bio, :name, + :emoji, :avatar, :public_key, :inbox, @@ -443,6 +446,7 @@ def update_changeset(struct, params \\ %{}) do |> validate_length(:bio, max: bio_limit) |> validate_length(:name, min: 1, max: name_limit) |> put_fields() + |> put_emoji() |> put_change_if_present(:bio, &{:ok, parse_bio(&1, struct)}) |> put_change_if_present(:avatar, &put_upload(&1, :avatar)) |> put_change_if_present(:banner, &put_upload(&1, :banner)) @@ -478,6 +482,18 @@ defp parse_fields(value) do |> elem(0) end + defp put_emoji(changeset) do + bio = get_change(changeset, :bio) + name = get_change(changeset, :name) + + if bio || name do + emoji = Map.merge(Emoji.Formatter.get_emoji_map(bio), Emoji.Formatter.get_emoji_map(name)) + put_change(changeset, :emoji, emoji) + else + changeset + end + end + defp put_change_if_present(changeset, map_field, value_function) do if value = get_change(changeset, map_field) do with {:ok, new_value} <- value_function.(value) do @@ -511,6 +527,7 @@ def upgrade_changeset(struct, params \\ %{}, remote? \\ false) do [ :bio, :name, + :emoji, :follower_address, :following_address, :public_key, @@ -618,7 +635,7 @@ def register_changeset(struct, params \\ %{}, opts \\ []) do struct |> confirmation_changeset(need_confirmation: need_confirmation?) - |> cast(params, [:bio, :email, :name, :nickname, :password, :password_confirmation]) + |> cast(params, [:bio, :email, :name, :nickname, :password, :password_confirmation, :emoji]) |> validate_required([:name, :nickname, :password, :password_confirmation]) |> validate_confirmation(:password) |> unique_constraint(:email) @@ -1969,12 +1986,6 @@ def update_background(user, background) do |> update_and_set_cache() end - def update_source_data(user, source_data) do - user - |> cast(%{source_data: source_data}, [:source_data]) - |> update_and_set_cache() - end - def roles(%{is_moderator: is_moderator, is_admin: is_admin}) do %{ admin: is_admin, diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index f0bbecc9b..63502b484 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1427,6 +1427,14 @@ defp object_to_user_data(data) do |> Enum.filter(fn %{"type" => t} -> t == "PropertyValue" end) |> Enum.map(fn fields -> Map.take(fields, ["name", "value"]) end) + emojis = + data + |> Map.get("tag", []) + |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end) + |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> + Map.put(acc, String.trim(name, ":"), url) + end) + locked = data["manuallyApprovesFollowers"] || false data = Transmogrifier.maybe_fix_user_object(data) discoverable = data["discoverable"] || false @@ -1454,6 +1462,7 @@ defp object_to_user_data(data) do source_data: data, banner: banner, fields: fields, + emoji: emojis, locked: locked, discoverable: discoverable, invisible: invisible, diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 0a8ad62ad..3d4070fd5 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -1129,7 +1129,7 @@ defp build_mention_tag(%{ap_id: ap_id, nickname: nickname} = _) do def take_emoji_tags(%User{emoji: emoji}) do emoji - |> Enum.flat_map(&Map.to_list/1) + |> Map.to_list() |> Enum.map(&build_emoji_tag/1) end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index bc21ac6c7..d3d79dd5e 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -103,7 +103,7 @@ def render("user.json", %{user: user}) do }, "endpoints" => endpoints, "attachment" => fields, - "tag" => (user.source_data["tag"] || []) ++ emoji_tags, + "tag" => emoji_tags, "discoverable" => user.discoverable } |> Map.merge(maybe_make_image(&User.avatar_url/2, "icon", user)) diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 636cf3301..952a8d8cb 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -332,26 +332,6 @@ defp maybe_create_activity_expiration({:ok, activity}, %NaiveDateTime{} = expire defp maybe_create_activity_expiration(result, _), do: result - # Updates the emojis for a user based on their profile - def update(user) do - emoji = emoji_from_profile(user) - source_data = Map.put(user.source_data, "tag", emoji) - - user = - case User.update_source_data(user, source_data) do - {:ok, user} -> user - _ -> user - end - - ActivityPub.update(%{ - local: true, - to: [Pleroma.Constants.as_public(), user.follower_address], - cc: [], - actor: user.ap_id, - object: Pleroma.Web.ActivityPub.UserView.render("user.json", %{user: user}) - }) - end - def pin(id_or_ap_id, %{ap_id: user_ap_id} = user) do with %Activity{ actor: ^user_ap_id, diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 635e7cd38..7eec5aa09 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -10,7 +10,6 @@ defmodule Pleroma.Web.CommonAPI.Utils do alias Pleroma.Activity alias Pleroma.Config alias Pleroma.Conversation.Participation - alias Pleroma.Emoji alias Pleroma.Formatter alias Pleroma.Object alias Pleroma.Plugs.AuthenticationPlug @@ -18,7 +17,6 @@ defmodule Pleroma.Web.CommonAPI.Utils do alias Pleroma.User alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility - alias Pleroma.Web.Endpoint alias Pleroma.Web.MediaProxy require Logger @@ -175,7 +173,7 @@ def make_poll_data(%{"poll" => %{"options" => options, "expires_in" => expires_i "replies" => %{"type" => "Collection", "totalItems" => 0} } - {note, Map.merge(emoji, Emoji.Formatter.get_emoji_map(option))} + {note, Map.merge(emoji, Pleroma.Emoji.Formatter.get_emoji_map(option))} end) end_time = @@ -431,19 +429,6 @@ def confirm_current_password(user, password) do end end - def emoji_from_profile(%User{bio: bio, name: name}) do - [bio, name] - |> Enum.map(&Emoji.Formatter.get_emoji/1) - |> Enum.concat() - |> Enum.map(fn {shortcode, %Emoji{file: path}} -> - %{ - "type" => "Emoji", - "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}#{path}"}, - "name" => ":#{shortcode}:" - } - end) - end - def maybe_notify_to_recipients( recipients, %Activity{data: %{"to" => to, "type" => _type}} = _activity diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 21bc3d5a5..3fcaa6be6 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -140,9 +140,7 @@ def verify_credentials(%{assigns: %{user: user}} = conn, _) do end @doc "PATCH /api/v1/accounts/update_credentials" - def update_credentials(%{assigns: %{user: original_user}} = conn, params) do - user = original_user - + def update_credentials(%{assigns: %{user: user}} = conn, params) do user_params = [ :no_rich_text, @@ -178,8 +176,6 @@ def update_credentials(%{assigns: %{user: original_user}} = conn, params) do changeset = User.update_changeset(user, user_params) with {:ok, user} <- User.update_and_set_cache(changeset) do - if original_user != user, do: CommonAPI.update(user) - render(conn, "show.json", user: user, for: user, with_pleroma_settings: true) else _e -> render_error(conn, :forbidden, "Invalid request") diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 99e62f580..966032b69 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -180,13 +180,11 @@ defp do_render("show.json", %{user: user} = opts) do bot = user.actor_type in ["Application", "Service"] emojis = - (user.source_data["tag"] || []) - |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end) - |> Enum.map(fn %{"icon" => %{"url" => url}, "name" => name} -> + Enum.map(user.emoji, fn {shortcode, url} -> %{ - "shortcode" => String.trim(name, ":"), - "url" => MediaProxy.url(url), - "static_url" => MediaProxy.url(url), + "shortcode" => shortcode, + "url" => url, + "static_url" => url, "visible_in_picker" => false } end) diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index dcba67d03..ed4fdfdba 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -13,7 +13,6 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do alias Pleroma.Plugs.RateLimiter alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.StatusView require Pleroma.Constants @@ -58,38 +57,32 @@ def confirmation_resend(conn, params) do @doc "PATCH /api/v1/pleroma/accounts/update_avatar" def update_avatar(%{assigns: %{user: user}} = conn, %{"img" => ""}) do - {:ok, user} = + {:ok, _user} = user |> Changeset.change(%{avatar: nil}) |> User.update_and_set_cache() - CommonAPI.update(user) - json(conn, %{url: nil}) end def update_avatar(%{assigns: %{user: user}} = conn, params) do {:ok, %{data: data}} = ActivityPub.upload(params, type: :avatar) - {:ok, user} = user |> Changeset.change(%{avatar: data}) |> User.update_and_set_cache() + {:ok, _user} = user |> Changeset.change(%{avatar: data}) |> User.update_and_set_cache() %{"url" => [%{"href" => href} | _]} = data - CommonAPI.update(user) - json(conn, %{url: href}) end @doc "PATCH /api/v1/pleroma/accounts/update_banner" def update_banner(%{assigns: %{user: user}} = conn, %{"banner" => ""}) do - with {:ok, user} <- User.update_banner(user, %{}) do - CommonAPI.update(user) + with {:ok, _user} <- User.update_banner(user, %{}) do json(conn, %{url: nil}) end end def update_banner(%{assigns: %{user: user}} = conn, params) do with {:ok, object} <- ActivityPub.upload(%{"img" => params["banner"]}, type: :banner), - {:ok, user} <- User.update_banner(user, object.data) do - CommonAPI.update(user) + {:ok, _user} <- User.update_banner(user, object.data) do %{"url" => [%{"href" => href} | _]} = object.data json(conn, %{url: href}) diff --git a/lib/pleroma/web/static_fe/static_fe_view.ex b/lib/pleroma/web/static_fe/static_fe_view.ex index 66d87620c..b3d1d1ec8 100644 --- a/lib/pleroma/web/static_fe/static_fe_view.ex +++ b/lib/pleroma/web/static_fe/static_fe_view.ex @@ -18,15 +18,6 @@ defmodule Pleroma.Web.StaticFE.StaticFEView do @media_types ["image", "audio", "video"] - def emoji_for_user(%User{} = user) do - user.source_data - |> Map.get("tag", []) - |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end) - |> Enum.map(fn %{"icon" => %{"url" => url}, "name" => name} -> - {String.trim(name, ":"), url} - end) - end - def fetch_media_type(%{"mediaType" => mediaType}) do Utils.fetch_media_type(@media_types, mediaType) end diff --git a/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex index 2a7582d45..56f3a1524 100644 --- a/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex +++ b/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex @@ -4,7 +4,7 @@ - <%= raw (@user.name |> Formatter.emojify(emoji_for_user(@user))) %> + <%= raw Formatter.emojify(@user.name, @user.emoji) %> <%= @user.nickname %> diff --git a/lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex index e7d2aecad..3191bf450 100644 --- a/lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex +++ b/lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex @@ -7,7 +7,7 @@ - <%= raw Formatter.emojify(@user.name, emoji_for_user(@user)) %> | + <%= raw Formatter.emojify(@user.name, @user.emoji) %> | <%= link "@#{@user.nickname}@#{Endpoint.host()}", to: (@user.uri || @user.ap_id) %>

<%= raw @user.bio %>

diff --git a/priv/repo/migrations/20200406100225_users_add_emoji.exs b/priv/repo/migrations/20200406100225_users_add_emoji.exs new file mode 100644 index 000000000..d0254c170 --- /dev/null +++ b/priv/repo/migrations/20200406100225_users_add_emoji.exs @@ -0,0 +1,35 @@ +defmodule Pleroma.Repo.Migrations.UsersPopulateEmoji do + use Ecto.Migration + + import Ecto.Query + + alias Pleroma.User + alias Pleroma.Repo + + def up do + execute("ALTER TABLE users ALTER COLUMN emoji SET DEFAULT '{}'::jsonb") + execute("UPDATE users SET emoji = DEFAULT WHERE emoji = '[]'::jsonb") + + from(u in User) + |> select([u], struct(u, [:id, :ap_id, :source_data])) + |> Repo.stream() + |> Enum.each(fn user -> + emoji = + user.source_data + |> Map.get("tag", []) + |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end) + |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> + Map.put(acc, String.trim(name, ":"), url) + end) + + user + |> Ecto.Changeset.cast(%{emoji: emoji}, [:emoji]) + |> Repo.update() + end) + end + + def down do + execute("ALTER TABLE users ALTER COLUMN emoji SET DEFAULT '[]'::jsonb") + execute("UPDATE users SET emoji = DEFAULT WHERE emoji = '{}'::jsonb") + end +end diff --git a/test/emoji/formatter_test.exs b/test/emoji/formatter_test.exs index 3bfee9420..12af6cd8b 100644 --- a/test/emoji/formatter_test.exs +++ b/test/emoji/formatter_test.exs @@ -3,7 +3,6 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Emoji.FormatterTest do - alias Pleroma.Emoji alias Pleroma.Emoji.Formatter use Pleroma.DataCase @@ -32,30 +31,19 @@ test "it does not add XSS emoji" do end end - describe "get_emoji" do + describe "get_emoji_map" do test "it returns the emoji used in the text" do - text = "I love :firefox:" - - assert Formatter.get_emoji(text) == [ - {"firefox", - %Emoji{ - code: "firefox", - file: "/emoji/Firefox.gif", - tags: ["Gif", "Fun"], - safe_code: "firefox", - safe_file: "/emoji/Firefox.gif" - }} - ] + assert Formatter.get_emoji_map("I love :firefox:") == %{ + "firefox" => "http://localhost:4001/emoji/Firefox.gif" + } end test "it returns a nice empty result when no emojis are present" do - text = "I love moominamma" - assert Formatter.get_emoji(text) == [] + assert Formatter.get_emoji_map("I love moominamma") == %{} end test "it doesn't die when text is absent" do - text = nil - assert Formatter.get_emoji(text) == [] + assert Formatter.get_emoji_map(nil) == %{} end end end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 6dfd823f7..d7f11d1d7 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -2182,4 +2182,18 @@ test "sets `replies` collection with a limited number of self-replies" do Transmogrifier.set_replies(object.data)["replies"] end end + + test "take_emoji_tags/1" do + user = insert(:user, %{emoji: %{"firefox" => "https://example.org/firefox.png"}}) + + assert Transmogrifier.take_emoji_tags(user) == [ + %{ + "icon" => %{"type" => "Image", "url" => "https://example.org/firefox.png"}, + "id" => "https://example.org/firefox.png", + "name" => ":firefox:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + } + ] + end end diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index ecb2dc386..20578161b 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -38,7 +38,7 @@ test "Renders profile fields" do end test "Renders with emoji tags" do - user = insert(:user, emoji: [%{"bib" => "/test"}]) + user = insert(:user, emoji: %{"bib" => "/test"}) assert %{ "tag" => [ diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index f46ad0272..5e78c5758 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -97,18 +97,6 @@ test "it adds emoji in the object" do assert Object.normalize(activity).data["emoji"]["firefox"] end - test "it adds emoji when updating profiles" do - user = insert(:user, %{name: ":firefox:"}) - - {:ok, activity} = CommonAPI.update(user) - user = User.get_cached_by_ap_id(user.ap_id) - [firefox] = user.source_data["tag"] - - assert firefox["name"] == ":firefox:" - - assert Pleroma.Constants.as_public() in activity.recipients - end - describe "posting" do test "it supports explicit addressing" do user = insert(:user) diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 98cf02d49..b21445fe9 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -7,7 +7,6 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do alias Pleroma.Object alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils - alias Pleroma.Web.Endpoint use Pleroma.DataCase import ExUnit.CaptureLog @@ -42,28 +41,6 @@ test "correct password given" do end end - test "parses emoji from name and bio" do - {:ok, user} = UserBuilder.insert(%{name: ":blank:", bio: ":firefox:"}) - - expected = [ - %{ - "type" => "Emoji", - "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/emoji/Firefox.gif"}, - "name" => ":firefox:" - }, - %{ - "type" => "Emoji", - "icon" => %{ - "type" => "Image", - "url" => "#{Endpoint.url()}/emoji/blank.png" - }, - "name" => ":blank:" - } - ] - - assert expected == Utils.emoji_from_profile(user) - end - describe "format_input/3" do test "works for bare text/plain" do text = "hello world!" diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 4435f69ff..85fa4f6a2 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -19,16 +19,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do end test "Represent a user account" do - source_data = %{ - "tag" => [ - %{ - "type" => "Emoji", - "icon" => %{"url" => "/file.png"}, - "name" => ":karjalanpiirakka:" - } - ] - } - background_image = %{ "url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}] } @@ -37,13 +27,13 @@ test "Represent a user account" do insert(:user, %{ follower_count: 3, note_count: 5, - source_data: source_data, background: background_image, nickname: "shp@shitposter.club", name: ":karjalanpiirakka: shp", bio: "valid html. a
b
c
d
f", - inserted_at: ~N[2017-08-15 15:47:06.597036] + inserted_at: ~N[2017-08-15 15:47:06.597036], + emoji: %{"karjalanpiirakka" => "/file.png"} }) expected = %{ @@ -117,7 +107,6 @@ test "Represent a Service(bot) account" do insert(:user, %{ follower_count: 3, note_count: 5, - source_data: %{}, actor_type: "Service", nickname: "shp@shitposter.club", inserted_at: ~N[2017-08-15 15:47:06.597036] @@ -311,7 +300,6 @@ test "represent an embedded relationship" do insert(:user, %{ follower_count: 0, note_count: 5, - source_data: %{}, actor_type: "Service", nickname: "shp@shitposter.club", inserted_at: ~N[2017-08-15 15:47:06.597036] From 3420dec494203b46d37ddc17f7e1235dc908a5b3 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 6 Apr 2020 10:44:48 +0200 Subject: [PATCH 014/137] Remove User.fields/1 --- lib/pleroma/user.ex | 19 +------------------ .../web/activity_pub/views/user_view.ex | 5 +---- test/web/activity_pub/transmogrifier_test.exs | 8 ++++---- 3 files changed, 6 insertions(+), 26 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index cd3551e11..79e9b2c86 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1993,21 +1993,6 @@ def roles(%{is_moderator: is_moderator, is_admin: is_admin}) do } end - # ``fields`` is an array of mastodon profile field, containing ``{"name": "…", "value": "…"}``. - # For example: [{"name": "Pronoun", "value": "she/her"}, …] - def fields(%{fields: nil, source_data: %{"attachment" => attachment}}) do - limit = Pleroma.Config.get([:instance, :max_remote_account_fields], 0) - - attachment - |> Enum.filter(fn %{"type" => t} -> t == "PropertyValue" end) - |> Enum.map(fn fields -> Map.take(fields, ["name", "value"]) end) - |> Enum.take(limit) - end - - def fields(%{fields: nil}), do: [] - - def fields(%{fields: fields}), do: fields - def validate_fields(changeset, remote? \\ false) do limit_name = if remote?, do: :max_remote_account_fields, else: :max_account_fields limit = Pleroma.Config.get([:instance, limit_name], 0) @@ -2195,9 +2180,7 @@ def sanitize_html(%User{} = user) do # - display name def sanitize_html(%User{} = user, filter) do fields = - user - |> User.fields() - |> Enum.map(fn %{"name" => name, "value" => value} -> + Enum.map(user.fields, fn %{"name" => name, "value" => value} -> %{ "name" => name, "value" => HTML.filter_tags(value, Pleroma.HTML.Scrubber.LinksOnly) diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index d3d79dd5e..34590b16d 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -79,10 +79,7 @@ def render("user.json", %{user: user}) do emoji_tags = Transmogrifier.take_emoji_tags(user) - fields = - user - |> User.fields() - |> Enum.map(&Map.put(&1, "type", "PropertyValue")) + fields = Enum.map(user.fields, &Map.put(&1, "type", "PropertyValue")) %{ "id" => user.ap_id, diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index d7f11d1d7..8ddc75669 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -746,7 +746,7 @@ test "it works with custom profile fields" do user = User.get_cached_by_ap_id(activity.actor) - assert User.fields(user) == [ + assert user.fields == [ %{"name" => "foo", "value" => "bar"}, %{"name" => "foo1", "value" => "bar1"} ] @@ -767,7 +767,7 @@ test "it works with custom profile fields" do user = User.get_cached_by_ap_id(user.ap_id) - assert User.fields(user) == [ + assert user.fields == [ %{"name" => "foo", "value" => "updated"}, %{"name" => "foo1", "value" => "updated"} ] @@ -785,7 +785,7 @@ test "it works with custom profile fields" do user = User.get_cached_by_ap_id(user.ap_id) - assert User.fields(user) == [ + assert user.fields == [ %{"name" => "foo", "value" => "updated"}, %{"name" => "foo1", "value" => "updated"} ] @@ -796,7 +796,7 @@ test "it works with custom profile fields" do user = User.get_cached_by_ap_id(user.ap_id) - assert User.fields(user) == [] + assert user.fields == [] end test "it works for incoming update activities which lock the account" do From e89078ac2a27bb0a833c982dbb5eef63ddea3cc0 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 6 Apr 2020 10:59:35 +0200 Subject: [PATCH 015/137] User: remove source_data --- lib/pleroma/user.ex | 3 --- lib/pleroma/web/activity_pub/activity_pub.ex | 1 - .../20200406105422_users_remove_source_data.exs | 15 +++++++++++++++ test/user_test.exs | 2 +- test/web/activity_pub/activity_pub_test.exs | 1 - 5 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 priv/repo/migrations/20200406105422_users_remove_source_data.exs diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 79e9b2c86..d05dfb480 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -97,7 +97,6 @@ defmodule Pleroma.User do field(:last_digest_emailed_at, :naive_datetime) field(:banner, :map, default: %{}) field(:background, :map, default: %{}) - field(:source_data, :map, default: %{}) field(:note_count, :integer, default: 0) field(:follower_count, :integer, default: 0) field(:following_count, :integer, default: 0) @@ -377,7 +376,6 @@ def remote_user_creation(params) do :public_key, :avatar, :ap_enabled, - :source_data, :banner, :locked, :magic_key, @@ -536,7 +534,6 @@ def upgrade_changeset(struct, params \\ %{}, remote? \\ false) do :avatar, :last_refreshed_at, :ap_enabled, - :source_data, :banner, :locked, :magic_key, diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 63502b484..9b832f4cb 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1459,7 +1459,6 @@ defp object_to_user_data(data) do ap_id: data["id"], uri: get_actor_url(data["url"]), ap_enabled: true, - source_data: data, banner: banner, fields: fields, emoji: emojis, diff --git a/priv/repo/migrations/20200406105422_users_remove_source_data.exs b/priv/repo/migrations/20200406105422_users_remove_source_data.exs new file mode 100644 index 000000000..9812d480f --- /dev/null +++ b/priv/repo/migrations/20200406105422_users_remove_source_data.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.UsersRemoveSourceData do + use Ecto.Migration + + def up do + alter table(:users) do + remove_if_exists(:source_data, :map) + end + end + + def down do + alter table(:users) do + add_if_not_exists(:source_data, :map, default: %{}) + end + end +end diff --git a/test/user_test.exs b/test/user_test.exs index d39787f35..d35005353 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -581,7 +581,7 @@ test "updates an existing user, if stale" do {:ok, user} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/admin") - assert user.source_data["endpoints"] + assert user.inbox refute user.last_refreshed_at == orig_user.last_refreshed_at end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 17e7b97de..6410df49b 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -180,7 +180,6 @@ test "it returns a user" do {:ok, user} = ActivityPub.make_user_from_ap_id(user_id) assert user.ap_id == user_id assert user.nickname == "admin@mastodon.example.org" - assert user.source_data assert user.ap_enabled assert user.follower_address == "http://mastodon.example.org/users/admin/followers" end From 88b16fdfb7b40877aecae5d45f6f3a1c54362f13 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 11 Apr 2020 16:01:09 +0300 Subject: [PATCH 016/137] [#1364] Disabled notifications on activities from blocked domains. --- CHANGELOG.md | 1 + lib/pleroma/notification.ex | 20 +++++++++++++------- test/notification_test.exs | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36897503a..22d0645fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Support pagination in conversations API +- Filtering of push notifications on activities from blocked domains ## [unreleased-patch] diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 04ee510b9..02363ddb0 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -321,10 +321,11 @@ def create_notification(%Activity{} = activity, %User{} = user, do_send \\ true) @doc """ Returns a tuple with 2 elements: - {enabled notification receivers, currently disabled receivers (blocking / [thread] muting)} + {notification-enabled receivers, currently disabled receivers (blocking / [thread] muting)} NOTE: might be called for FAKE Activities, see ActivityPub.Utils.get_notified_from_object/1 """ + @spec get_notified_from_activity(Activity.t(), boolean()) :: {list(User.t()), list(User.t())} def get_notified_from_activity(activity, local_only \\ true) def get_notified_from_activity(%Activity{data: %{"type" => type}} = activity, local_only) @@ -337,17 +338,22 @@ def get_notified_from_activity(%Activity{data: %{"type" => type}} = activity, lo |> Utils.maybe_notify_followers(activity) |> Enum.uniq() - # Since even subscribers and followers can mute / thread-mute, filtering all above AP IDs - notification_enabled_ap_ids = - potential_receiver_ap_ids - |> exclude_relationship_restricted_ap_ids(activity) - |> exclude_thread_muter_ap_ids(activity) - potential_receivers = potential_receiver_ap_ids |> Enum.uniq() |> User.get_users_from_set(local_only) + activity_actor_domain = activity.actor && URI.parse(activity.actor).host + + notification_enabled_ap_ids = + for u <- potential_receivers, activity_actor_domain not in u.domain_blocks, do: u.ap_id + + # Since even subscribers and followers can mute / thread-mute, filtering all above AP IDs + notification_enabled_ap_ids = + notification_enabled_ap_ids + |> exclude_relationship_restricted_ap_ids(activity) + |> exclude_thread_muter_ap_ids(activity) + notification_enabled_users = Enum.filter(potential_receivers, fn u -> u.ap_id in notification_enabled_ap_ids end) diff --git a/test/notification_test.exs b/test/notification_test.exs index 837a9dacd..caa941934 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -609,6 +609,21 @@ test "it returns thread-muting recipient in disabled recipients list" do assert [other_user] == disabled_receivers refute other_user in enabled_receivers end + + test "it returns domain-blocking recipient in disabled recipients list" do + blocked_domain = "blocked.domain" + user = insert(:user, %{ap_id: "https://#{blocked_domain}/@actor"}) + other_user = insert(:user) + + {:ok, other_user} = User.block_domain(other_user, blocked_domain) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "hey @#{other_user.nickname}!"}) + + {enabled_receivers, disabled_receivers} = Notification.get_notified_from_activity(activity) + + assert [] == enabled_receivers + assert [other_user] == disabled_receivers + end end describe "notification lifecycle" do From c077ad0b3305e74f5b8d1b9bf38d4f480d76c1a6 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 11 Apr 2020 21:44:52 +0300 Subject: [PATCH 017/137] Remove User.upgrade_changeset in favor of remote_user_creation The two changesets had the same purpose, yet some changes were updated in one, but not the other (`uri`, for example). Also makes `Transmogrifier.upgrade_user_from_ap_id` be called from `ActivityPub.make_user_from_ap_id` only when the user is actually not AP enabled yet. I did not bother rewriting tests that used `User.insert_or_update` to use the changeset instead because they seemed to just test the implementation, rather than behavior. --- lib/pleroma/user.ex | 60 ++--------------- lib/pleroma/web/activity_pub/activity_pub.ex | 15 ++++- .../web/activity_pub/transmogrifier.ex | 14 ++-- test/user_test.exs | 64 ++----------------- .../web/activity_pub/views/user_view_test.exs | 2 +- 5 files changed, 31 insertions(+), 124 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 71c8c3a4e..fab405233 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -339,18 +339,20 @@ defp truncate_if_exists(params, key, max_length) do end end - def remote_user_creation(params) do + def remote_user_changeset(struct \\ %User{local: false}, params) do bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) params = params + |> Map.put(:name, blank?(params[:name]) || params[:nickname]) + |> Map.put_new(:last_refreshed_at, NaiveDateTime.utc_now()) |> truncate_if_exists(:name, name_limit) |> truncate_if_exists(:bio, bio_limit) |> truncate_fields_param() changeset = - %User{local: false} + struct |> cast( params, [ @@ -375,7 +377,8 @@ def remote_user_creation(params) do :discoverable, :invisible, :actor_type, - :also_known_as + :also_known_as, + :last_refreshed_at ] ) |> validate_required([:name, :ap_id]) @@ -488,49 +491,6 @@ defp put_upload(value, type) do end end - def upgrade_changeset(struct, params \\ %{}, remote? \\ false) do - bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) - name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) - - params = Map.put(params, :last_refreshed_at, NaiveDateTime.utc_now()) - - params = if remote?, do: truncate_fields_param(params), else: params - - struct - |> cast( - params, - [ - :bio, - :name, - :follower_address, - :following_address, - :avatar, - :last_refreshed_at, - :ap_enabled, - :source_data, - :banner, - :locked, - :magic_key, - :follower_count, - :following_count, - :hide_follows, - :fields, - :hide_followers, - :allow_following_move, - :discoverable, - :hide_followers_count, - :hide_follows_count, - :actor_type, - :also_known_as - ] - ) - |> unique_constraint(:nickname) - |> validate_format(:nickname, local_nickname_regex()) - |> validate_length(:bio, max: bio_limit) - |> validate_length(:name, max: name_limit) - |> validate_fields(remote?) - end - def update_as_admin_changeset(struct, params) do struct |> update_changeset(params) @@ -1642,14 +1602,6 @@ def get_public_key_for_ap_id(ap_id) do defp blank?(""), do: nil defp blank?(n), do: n - def insert_or_update_user(data) do - data - |> Map.put(:name, blank?(data[:name]) || data[:nickname]) - |> remote_user_creation() - |> Repo.insert(on_conflict: {:replace_all_except, [:id]}, conflict_target: :nickname) - |> set_cache() - end - def ap_enabled?(%User{local: true}), do: true def ap_enabled?(%User{ap_enabled: ap_enabled}), do: ap_enabled def ap_enabled?(_), do: false diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 86b105b7f..2602b966b 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1551,11 +1551,22 @@ def fetch_and_prepare_user_from_ap_id(ap_id) do end def make_user_from_ap_id(ap_id) do - if _user = User.get_cached_by_ap_id(ap_id) do + user = User.get_cached_by_ap_id(ap_id) + + if user && !User.ap_enabled?(user) do Transmogrifier.upgrade_user_from_ap_id(ap_id) else with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id) do - User.insert_or_update_user(data) + if user do + user + |> User.remote_user_changeset(data) + |> User.update_and_set_cache() + else + data + |> User.remote_user_changeset() + |> Repo.insert() + |> User.set_cache() + end else e -> {:error, e} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index f9951cc5d..18fd56bed 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -710,7 +710,7 @@ def handle_incoming( {:ok, new_user_data} = ActivityPub.user_data_from_user_object(object) actor - |> User.upgrade_changeset(new_user_data, true) + |> User.remote_user_changeset(new_user_data) |> User.update_and_set_cache() ActivityPub.update(%{ @@ -1253,12 +1253,8 @@ def perform(:user_upgrade, user) do def upgrade_user_from_ap_id(ap_id) do with %User{local: false} = user <- User.get_cached_by_ap_id(ap_id), {:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id), - already_ap <- User.ap_enabled?(user), - {:ok, user} <- upgrade_user(user, data) do - if not already_ap do - TransmogrifierWorker.enqueue("user_upgrade", %{"user_id" => user.id}) - end - + {:ok, user} <- update_user(user, data) do + TransmogrifierWorker.enqueue("user_upgrade", %{"user_id" => user.id}) {:ok, user} else %User{} = user -> {:ok, user} @@ -1266,9 +1262,9 @@ def upgrade_user_from_ap_id(ap_id) do end end - defp upgrade_user(user, data) do + defp update_user(user, data) do user - |> User.upgrade_changeset(data, true) + |> User.remote_user_changeset(data) |> User.update_and_set_cache() end diff --git a/test/user_test.exs b/test/user_test.exs index d39787f35..5c24955c2 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -609,7 +609,7 @@ test "returns an ap_followers link for a user" do ) <> "/followers" end - describe "remote user creation changeset" do + describe "remote user changeset" do @valid_remote %{ bio: "hello", name: "Someone", @@ -621,28 +621,28 @@ test "returns an ap_followers link for a user" do setup do: clear_config([:instance, :user_name_length]) test "it confirms validity" do - cs = User.remote_user_creation(@valid_remote) + cs = User.remote_user_changeset(@valid_remote) assert cs.valid? end test "it sets the follower_adress" do - cs = User.remote_user_creation(@valid_remote) + cs = User.remote_user_changeset(@valid_remote) # remote users get a fake local follower address assert cs.changes.follower_address == User.ap_followers(%User{nickname: @valid_remote[:nickname]}) end test "it enforces the fqn format for nicknames" do - cs = User.remote_user_creation(%{@valid_remote | nickname: "bla"}) + cs = User.remote_user_changeset(%{@valid_remote | nickname: "bla"}) assert Ecto.Changeset.get_field(cs, :local) == false assert cs.changes.avatar refute cs.valid? end test "it has required fields" do - [:name, :ap_id] + [:ap_id] |> Enum.each(fn field -> - cs = User.remote_user_creation(Map.delete(@valid_remote, field)) + cs = User.remote_user_changeset(Map.delete(@valid_remote, field)) refute cs.valid? end) end @@ -1198,58 +1198,6 @@ test "get_public_key_for_ap_id fetches a user that's not in the db" do assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin") end - describe "insert or update a user from given data" do - test "with normal data" do - user = insert(:user, %{nickname: "nick@name.de"}) - data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname} - - assert {:ok, %User{}} = User.insert_or_update_user(data) - end - - test "with overly long fields" do - current_max_length = Pleroma.Config.get([:instance, :account_field_value_length], 255) - user = insert(:user, nickname: "nickname@supergood.domain") - - data = %{ - ap_id: user.ap_id, - name: user.name, - nickname: user.nickname, - fields: [ - %{"name" => "myfield", "value" => String.duplicate("h", current_max_length + 1)} - ] - } - - assert {:ok, %User{}} = User.insert_or_update_user(data) - end - - test "with an overly long bio" do - current_max_length = Pleroma.Config.get([:instance, :user_bio_length], 5000) - user = insert(:user, nickname: "nickname@supergood.domain") - - data = %{ - ap_id: user.ap_id, - name: user.name, - nickname: user.nickname, - bio: String.duplicate("h", current_max_length + 1) - } - - assert {:ok, %User{}} = User.insert_or_update_user(data) - end - - test "with an overly long display name" do - current_max_length = Pleroma.Config.get([:instance, :user_name_length], 100) - user = insert(:user, nickname: "nickname@supergood.domain") - - data = %{ - ap_id: user.ap_id, - name: String.duplicate("h", current_max_length + 1), - nickname: user.nickname - } - - assert {:ok, %User{}} = User.insert_or_update_user(data) - end - end - describe "per-user rich-text filtering" do test "html_filter_policy returns default policies, when rich-text is enabled" do user = insert(:user) diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index ecb2dc386..514fd97b8 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -29,7 +29,7 @@ test "Renders profile fields" do {:ok, user} = insert(:user) - |> User.upgrade_changeset(%{fields: fields}) + |> User.update_changeset(%{fields: fields}) |> User.update_and_set_cache() assert %{ From c556efb761a3e7fc2beb4540d6f58dbfe8e4abfe Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sun, 12 Apr 2020 21:53:03 +0300 Subject: [PATCH 018/137] [#1364] Enabled notifications on followed domain-blocked users' activities. --- lib/pleroma/following_relationship.ex | 35 +++++++++++++-- lib/pleroma/notification.ex | 61 +++++++++++++++++++++------ test/notification_test.exs | 35 +++++++++++++-- 3 files changed, 111 insertions(+), 20 deletions(-) diff --git a/lib/pleroma/following_relationship.ex b/lib/pleroma/following_relationship.ex index a9538ea4e..11e06c5cc 100644 --- a/lib/pleroma/following_relationship.ex +++ b/lib/pleroma/following_relationship.ex @@ -69,6 +69,29 @@ def follower_count(%User{} = user) do |> Repo.aggregate(:count, :id) end + def followers_query(%User{} = user) do + __MODULE__ + |> join(:inner, [r], u in User, on: r.follower_id == u.id) + |> where([r], r.following_id == ^user.id) + |> where([r], r.state == "accept") + end + + def followers_ap_ids(%User{} = user, from_ap_ids \\ nil) do + query = + user + |> followers_query() + |> select([r, u], u.ap_id) + + query = + if from_ap_ids do + where(query, [r, u], u.ap_id in ^from_ap_ids) + else + query + end + + Repo.all(query) + end + def following_count(%User{id: nil}), do: 0 def following_count(%User{} = user) do @@ -92,12 +115,16 @@ def following?(%User{id: follower_id}, %User{id: followed_id}) do |> Repo.exists?() end + def following_query(%User{} = user) do + __MODULE__ + |> join(:inner, [r], u in User, on: r.following_id == u.id) + |> where([r], r.follower_id == ^user.id) + |> where([r], r.state == "accept") + end + def following(%User{} = user) do following = - __MODULE__ - |> join(:inner, [r], u in User, on: r.following_id == u.id) - |> where([r], r.follower_id == ^user.id) - |> where([r], r.state == "accept") + following_query(user) |> select([r, u], u.follower_address) |> Repo.all() diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 02363ddb0..da05ff2e4 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Notification do use Ecto.Schema alias Pleroma.Activity + alias Pleroma.FollowingRelationship alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Pagination @@ -81,6 +82,7 @@ def for_user_query(user, opts \\ %{}) do |> exclude_visibility(opts) end + # Excludes blocked users and non-followed domain-blocked users defp exclude_blocked(query, user, opts) do blocked_ap_ids = opts[:blocked_users_ap_ids] || User.blocked_users_ap_ids(user) @@ -88,7 +90,16 @@ defp exclude_blocked(query, user, opts) do |> where([n, a], a.actor not in ^blocked_ap_ids) |> where( [n, a], - fragment("substring(? from '.*://([^/]*)')", a.actor) not in ^user.domain_blocks + fragment( + # "NOT (actor's domain in domain_blocks) OR (actor is in followed AP IDs)" + "NOT (substring(? from '.*://([^/]*)') = ANY(?)) OR \ + ? = ANY(SELECT ap_id FROM users AS u INNER JOIN following_relationships AS fr \ + ON u.id = fr.following_id WHERE fr.follower_id = ? AND fr.state = 'accept')", + a.actor, + ^user.domain_blocks, + a.actor, + ^User.binary_id(user.id) + ) ) end @@ -338,19 +349,11 @@ def get_notified_from_activity(%Activity{data: %{"type" => type}} = activity, lo |> Utils.maybe_notify_followers(activity) |> Enum.uniq() - potential_receivers = + potential_receivers = User.get_users_from_set(potential_receiver_ap_ids, local_only) + + notification_enabled_ap_ids = potential_receiver_ap_ids - |> Enum.uniq() - |> User.get_users_from_set(local_only) - - activity_actor_domain = activity.actor && URI.parse(activity.actor).host - - notification_enabled_ap_ids = - for u <- potential_receivers, activity_actor_domain not in u.domain_blocks, do: u.ap_id - - # Since even subscribers and followers can mute / thread-mute, filtering all above AP IDs - notification_enabled_ap_ids = - notification_enabled_ap_ids + |> exclude_domain_blocker_ap_ids(activity, potential_receivers) |> exclude_relationship_restricted_ap_ids(activity) |> exclude_thread_muter_ap_ids(activity) @@ -362,6 +365,38 @@ def get_notified_from_activity(%Activity{data: %{"type" => type}} = activity, lo def get_notified_from_activity(_, _local_only), do: {[], []} + @doc "Filters out AP IDs of users who domain-block and not follow activity actor" + def exclude_domain_blocker_ap_ids(ap_ids, activity, preloaded_users \\ []) + + def exclude_domain_blocker_ap_ids([], _activity, _preloaded_users), do: [] + + def exclude_domain_blocker_ap_ids(ap_ids, %Activity{} = activity, preloaded_users) do + activity_actor_domain = activity.actor && URI.parse(activity.actor).host + + users = + ap_ids + |> Enum.map(fn ap_id -> + Enum.find(preloaded_users, &(&1.ap_id == ap_id)) || + User.get_cached_by_ap_id(ap_id) + end) + |> Enum.filter(& &1) + + domain_blocker_ap_ids = for u <- users, activity_actor_domain in u.domain_blocks, do: u.ap_id + + domain_blocker_follower_ap_ids = + if Enum.any?(domain_blocker_ap_ids) do + activity + |> Activity.user_actor() + |> FollowingRelationship.followers_ap_ids(domain_blocker_ap_ids) + else + [] + end + + ap_ids + |> Kernel.--(domain_blocker_ap_ids) + |> Kernel.++(domain_blocker_follower_ap_ids) + end + @doc "Filters out AP IDs of users basing on their relationships with activity actor user" def exclude_relationship_restricted_ap_ids([], _activity), do: [] diff --git a/test/notification_test.exs b/test/notification_test.exs index caa941934..4e5559bb1 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -610,7 +610,7 @@ test "it returns thread-muting recipient in disabled recipients list" do refute other_user in enabled_receivers end - test "it returns domain-blocking recipient in disabled recipients list" do + test "it returns non-following domain-blocking recipient in disabled recipients list" do blocked_domain = "blocked.domain" user = insert(:user, %{ap_id: "https://#{blocked_domain}/@actor"}) other_user = insert(:user) @@ -624,6 +624,22 @@ test "it returns domain-blocking recipient in disabled recipients list" do assert [] == enabled_receivers assert [other_user] == disabled_receivers end + + test "it returns following domain-blocking recipient in enabled recipients list" do + blocked_domain = "blocked.domain" + user = insert(:user, %{ap_id: "https://#{blocked_domain}/@actor"}) + other_user = insert(:user) + + {:ok, other_user} = User.block_domain(other_user, blocked_domain) + {:ok, other_user} = User.follow(other_user, user) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "hey @#{other_user.nickname}!"}) + + {enabled_receivers, disabled_receivers} = Notification.get_notified_from_activity(activity) + + assert [other_user] == enabled_receivers + assert [] == disabled_receivers + end end describe "notification lifecycle" do @@ -886,7 +902,7 @@ test "it doesn't return notifications for blocked user" do assert Notification.for_user(user) == [] end - test "it doesn't return notifications for blocked domain" do + test "it doesn't return notifications for domain-blocked non-followed user" do user = insert(:user) blocked = insert(:user, ap_id: "http://some-domain.com") {:ok, user} = User.block_domain(user, "some-domain.com") @@ -896,6 +912,18 @@ test "it doesn't return notifications for blocked domain" do assert Notification.for_user(user) == [] end + test "it returns notifications for domain-blocked but followed user" do + user = insert(:user) + blocked = insert(:user, ap_id: "http://some-domain.com") + + {:ok, user} = User.block_domain(user, "some-domain.com") + {:ok, _} = User.follow(user, blocked) + + {:ok, _activity} = CommonAPI.post(blocked, %{"status" => "hey @#{user.nickname}"}) + + assert length(Notification.for_user(user)) == 1 + end + test "it doesn't return notifications for muted thread" do user = insert(:user) another_user = insert(:user) @@ -926,7 +954,8 @@ test "it doesn't return notifications from a blocked user when with_muted is set assert Enum.empty?(Notification.for_user(user, %{with_muted: true})) end - test "it doesn't return notifications from a domain-blocked user when with_muted is set" do + test "when with_muted is set, " <> + "it doesn't return notifications from a domain-blocked non-followed user" do user = insert(:user) blocked = insert(:user, ap_id: "http://some-domain.com") {:ok, user} = User.block_domain(user, "some-domain.com") From ed894802d5dfe60072b9445cb28e7b474a9f393b Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 12 Apr 2020 18:46:47 -0500 Subject: [PATCH 019/137] Expand MRF SimplePolicy docs --- docs/configuration/mrf.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/configuration/mrf.md b/docs/configuration/mrf.md index c3957c255..9f13c3d18 100644 --- a/docs/configuration/mrf.md +++ b/docs/configuration/mrf.md @@ -41,11 +41,14 @@ config :pleroma, :instance, Once `SimplePolicy` is enabled, you can configure various groups in the `:mrf_simple` config object. These groups are: -* `media_removal`: Servers in this group will have media stripped from incoming messages. -* `media_nsfw`: Servers in this group will have the #nsfw tag and sensitive setting injected into incoming messages which contain media. * `reject`: Servers in this group will have their messages rejected. -* `federated_timeline_removal`: Servers in this group will have their messages unlisted from the public timelines by flipping the `to` and `cc` fields. +* `accept`: If not empty, only messages from these instances will be accepted (whitelist federation). +* `media_nsfw`: Servers in this group will have the #nsfw tag and sensitive setting injected into incoming messages which contain media. +* `media_removal`: Servers in this group will have media stripped from incoming messages. +* `avatar_removal`: Avatars from these servers will be stripped from incoming messages. +* `banner_removal`: Banner images from these servers will be stripped from incoming messages. * `report_removal`: Servers in this group will have their reports (flags) rejected. +* `federated_timeline_removal`: Servers in this group will have their messages unlisted from the public timelines by flipping the `to` and `cc` fields. Servers should be configured as lists. From 9a3c74b244bce6097a8c6da99692bfc9973e1ec8 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 12 Apr 2020 20:26:35 -0500 Subject: [PATCH 020/137] Always accept deletions through SimplePolicy --- .../web/activity_pub/mrf/simple_policy.ex | 3 +++ .../activity_pub/mrf/simple_policy_test.exs | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index 4edc007fd..b23f263f5 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -148,6 +148,9 @@ defp check_banner_removal(%{host: actor_host} = _actor_info, %{"image" => _image defp check_banner_removal(_actor_info, object), do: {:ok, object} + @impl true + def filter(%{"type" => "Delete"} = object), do: {:ok, object} + @impl true def filter(%{"actor" => actor} = object) do actor_info = URI.parse(actor) diff --git a/test/web/activity_pub/mrf/simple_policy_test.exs b/test/web/activity_pub/mrf/simple_policy_test.exs index 91c24c2d9..eaa595706 100644 --- a/test/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/web/activity_pub/mrf/simple_policy_test.exs @@ -258,6 +258,14 @@ test "actor has a matching host" do assert SimplePolicy.filter(remote_user) == {:reject, nil} end + + test "always accept deletions" do + Config.put([:mrf_simple, :reject], ["remote.instance"]) + + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} + end end describe "when :accept" do @@ -308,6 +316,14 @@ test "actor has a matching host" do assert SimplePolicy.filter(remote_user) == {:ok, remote_user} end + + test "always accept deletions" do + Config.put([:mrf_simple, :accept], ["non.matching.remote"]) + + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} + end end describe "when :avatar_removal" do @@ -408,4 +424,11 @@ defp build_remote_user do "type" => "Person" } end + + defp build_remote_deletion_message do + %{ + "type" => "Delete", + "actor" => "https://remote.instance/users/bob" + } + end end From 99b0bc198921099816a5f809f11a7579b3993274 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 13 Apr 2020 13:24:31 +0300 Subject: [PATCH 021/137] [#1364] Resolved merge conflicts with `develop`. Refactoring. --- lib/pleroma/following_relationship.ex | 34 +++++++++++++++++++++++++-- lib/pleroma/notification.ex | 14 +---------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/lib/pleroma/following_relationship.ex b/lib/pleroma/following_relationship.ex index 219a64352..3a3082e72 100644 --- a/lib/pleroma/following_relationship.ex +++ b/lib/pleroma/following_relationship.ex @@ -10,11 +10,12 @@ defmodule Pleroma.FollowingRelationship do alias Ecto.Changeset alias FlakeId.Ecto.CompatType + alias Pleroma.FollowingRelationship.State alias Pleroma.Repo alias Pleroma.User schema "following_relationships" do - field(:state, Pleroma.FollowingRelationship.State, default: :follow_pending) + field(:state, State, default: :follow_pending) belongs_to(:follower, User, type: CompatType) belongs_to(:following, User, type: CompatType) @@ -22,6 +23,11 @@ defmodule Pleroma.FollowingRelationship do timestamps() end + @doc "Returns underlying integer code for state atom" + def state_int_code(state_atom), do: State.__enum_map__() |> Keyword.fetch!(state_atom) + + def accept_state_code, do: state_int_code(:follow_accept) + def changeset(%__MODULE__{} = following_relationship, attrs) do following_relationship |> cast(attrs, [:state]) @@ -86,7 +92,7 @@ def followers_query(%User{} = user) do __MODULE__ |> join(:inner, [r], u in User, on: r.follower_id == u.id) |> where([r], r.following_id == ^user.id) - |> where([r], r.state == "accept") + |> where([r], r.state == ^:follow_accept) end def followers_ap_ids(%User{} = user, from_ap_ids \\ nil) do @@ -198,6 +204,30 @@ def find(following_relationships, follower, following) do end) end + @doc """ + For a query with joined activity, + keeps rows where activity's actor is followed by user -or- is NOT domain-blocked by user. + """ + def keep_following_or_not_domain_blocked(query, user) do + where( + query, + [_, activity], + fragment( + # "(actor's domain NOT in domain_blocks) OR (actor IS in followed AP IDs)" + """ + NOT (substring(? from '.*://([^/]*)') = ANY(?)) OR + ? = ANY(SELECT ap_id FROM users AS u INNER JOIN following_relationships AS fr + ON u.id = fr.following_id WHERE fr.follower_id = ? AND fr.state = ?) + """, + activity.actor, + ^user.domain_blocks, + activity.actor, + ^User.binary_id(user.id), + ^accept_state_code() + ) + ) + end + defp validate_not_self_relationship(%Changeset{} = changeset) do changeset |> validate_follower_id_following_id_inequality() diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index da05ff2e4..b76dd176c 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -88,19 +88,7 @@ defp exclude_blocked(query, user, opts) do query |> where([n, a], a.actor not in ^blocked_ap_ids) - |> where( - [n, a], - fragment( - # "NOT (actor's domain in domain_blocks) OR (actor is in followed AP IDs)" - "NOT (substring(? from '.*://([^/]*)') = ANY(?)) OR \ - ? = ANY(SELECT ap_id FROM users AS u INNER JOIN following_relationships AS fr \ - ON u.id = fr.following_id WHERE fr.follower_id = ? AND fr.state = 'accept')", - a.actor, - ^user.domain_blocks, - a.actor, - ^User.binary_id(user.id) - ) - ) + |> FollowingRelationship.keep_following_or_not_domain_blocked(user) end defp exclude_notification_muted(query, _, %{@include_muted_option => true}) do From b08ded6c2f5ee29c6efc8c67cfc2ce0a679f0c77 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Fri, 3 Apr 2020 22:45:08 +0400 Subject: [PATCH 022/137] Add spec for AccountController.create --- .../api_spec/operations/account_operation.ex | 68 ++++++ lib/pleroma/web/api_spec/render_error.ex | 27 +++ .../schemas/account_create_request.ex | 56 +++++ .../schemas/account_create_response.ex | 29 +++ .../controllers/account_controller.ex | 36 +-- lib/pleroma/web/twitter_api/twitter_api.ex | 102 ++++---- test/web/api_spec/account_operation_test.exs | 48 ++++ .../controllers/account_controller_test.exs | 30 ++- test/web/twitter_api/twitter_api_test.exs | 222 +++++++++--------- 9 files changed, 426 insertions(+), 192 deletions(-) create mode 100644 lib/pleroma/web/api_spec/operations/account_operation.ex create mode 100644 lib/pleroma/web/api_spec/render_error.ex create mode 100644 lib/pleroma/web/api_spec/schemas/account_create_request.ex create mode 100644 lib/pleroma/web/api_spec/schemas/account_create_response.ex create mode 100644 test/web/api_spec/account_operation_test.exs diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex new file mode 100644 index 000000000..9085f1af1 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -0,0 +1,68 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.AccountOperation do + alias OpenApiSpex.Operation + alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest + alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Helpers + + @spec open_api_operation(atom) :: Operation.t() + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + @spec create_operation() :: Operation.t() + def create_operation do + %Operation{ + tags: ["accounts"], + summary: "Register an account", + description: + "Creates a user and account records. Returns an account access token for the app that initiated the request. The app should save this token for later, and should wait for the user to confirm their account by clicking a link in their email inbox.", + operationId: "AccountController.create", + requestBody: Helpers.request_body("Parameters", AccountCreateRequest, required: true), + responses: %{ + 200 => Operation.response("Account", "application/json", AccountCreateResponse) + } + } + end + + def verify_credentials_operation do + :ok + end + + def update_credentials_operation do + :ok + end + + def relationships_operation do + :ok + end + + def show_operation do + :ok + end + + def statuses_operation do + :ok + end + + def followers_operation do + :ok + end + + def following_operation, do: :ok + def lists_operation, do: :ok + def follow_operation, do: :ok + def unfollow_operation, do: :ok + def mute_operation, do: :ok + def unmute_operation, do: :ok + def block_operation, do: :ok + def unblock_operation, do: :ok + def follows_operation, do: :ok + def mutes_operation, do: :ok + def blocks_operation, do: :ok + def endorsements_operation, do: :ok +end diff --git a/lib/pleroma/web/api_spec/render_error.ex b/lib/pleroma/web/api_spec/render_error.ex new file mode 100644 index 000000000..e063d115b --- /dev/null +++ b/lib/pleroma/web/api_spec/render_error.ex @@ -0,0 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.RenderError do + @behaviour Plug + + alias Plug.Conn + alias OpenApiSpex.Plug.JsonRenderError + + @impl Plug + def init(opts), do: opts + + @impl Plug + + def call(%{private: %{open_api_spex: %{operation_id: "AccountController.create"}}} = conn, _) do + conn + |> Conn.put_status(:bad_request) + |> Phoenix.Controller.json(%{"error" => "Missing parameters"}) + end + + def call(conn, reason) do + opts = JsonRenderError.init(reason) + + JsonRenderError.call(conn, opts) + end +end diff --git a/lib/pleroma/web/api_spec/schemas/account_create_request.ex b/lib/pleroma/web/api_spec/schemas/account_create_request.ex new file mode 100644 index 000000000..398e2d613 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_create_request.ex @@ -0,0 +1,56 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest do + alias OpenApiSpex.Schema + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountCreateRequest", + description: "POST body for creating an account", + type: :object, + properties: %{ + reason: %Schema{ + type: :string, + description: + "Text that will be reviewed by moderators if registrations require manual approval" + }, + username: %Schema{type: :string, description: "The desired username for the account"}, + email: %Schema{ + type: :string, + description: + "The email address to be used for login. Required when `account_activation_required` is enabled.", + format: :email + }, + password: %Schema{type: :string, description: "The password to be used for login"}, + agreement: %Schema{ + type: :boolean, + description: + "Whether the user agrees to the local rules, terms, and policies. These should be presented to the user in order to allow them to consent before setting this parameter to TRUE." + }, + locale: %Schema{ + type: :string, + description: "The language of the confirmation email that will be sent" + }, + # Pleroma-specific properties: + fullname: %Schema{type: :string, description: "Full name"}, + bio: %Schema{type: :string, description: "Bio", default: ""}, + captcha_solution: %Schema{type: :string, description: "Provider-specific captcha solution"}, + captcha_token: %Schema{type: :string, description: "Provider-specific captcha token"}, + captcha_answer_data: %Schema{type: :string, description: "Provider-specific captcha data"}, + token: %Schema{ + type: :string, + description: "Invite token required when the registrations aren't public" + } + }, + required: [:username, :password, :agreement], + example: %{ + "username" => "cofe", + "email" => "cofe@example.com", + "password" => "secret", + "agreement" => "true", + "bio" => "☕️" + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/account_create_response.ex b/lib/pleroma/web/api_spec/schemas/account_create_response.ex new file mode 100644 index 000000000..f41a034c0 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_create_response.ex @@ -0,0 +1,29 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountCreateResponse", + description: "Response schema for an account", + type: :object, + properties: %{ + token_type: %Schema{type: :string}, + access_token: %Schema{type: :string}, + scope: %Schema{type: :array, items: %Schema{type: :string}}, + created_at: %Schema{type: :integer} + }, + example: %{ + "JSON" => %{ + "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk", + "created_at" => 1_585_918_714, + "scope" => ["read", "write", "follow", "push"], + "token_type" => "Bearer" + } + } + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 7da1a11f6..eb082daf8 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -80,27 +80,33 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug(RateLimiter, [name: :app_account_creation] when action == :create) plug(:assign_account_by_id when action in @needs_account) + plug( + OpenApiSpex.Plug.CastAndValidate, + [render_error: Pleroma.Web.ApiSpec.RenderError] when action == :create + ) + action_fallback(Pleroma.Web.MastodonAPI.FallbackController) + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.AccountOperation + @doc "POST /api/v1/accounts" - def create( - %{assigns: %{app: app}} = conn, - %{"username" => nickname, "password" => _, "agreement" => true} = params - ) do + def create(%{assigns: %{app: app}, body_params: params} = conn, _params) do params = params |> Map.take([ - "email", - "captcha_solution", - "captcha_token", - "captcha_answer_data", - "token", - "password" + :email, + :bio, + :captcha_solution, + :captcha_token, + :captcha_answer_data, + :token, + :password, + :fullname ]) - |> Map.put("nickname", nickname) - |> Map.put("fullname", params["fullname"] || nickname) - |> Map.put("bio", params["bio"] || "") - |> Map.put("confirm", params["password"]) + |> Map.put(:nickname, params.username) + |> Map.put(:fullname, params.fullname || params.username) + |> Map.put(:bio, params.bio || "") + |> Map.put(:confirm, params.password) with :ok <- validate_email_param(params), {:ok, user} <- TwitterAPI.register_user(params, need_confirmation: true), @@ -124,7 +130,7 @@ def create(conn, _) do render_error(conn, :forbidden, "Invalid credentials") end - defp validate_email_param(%{"email" => _}), do: :ok + defp validate_email_param(%{:email => email}) when not is_nil(email), do: :ok defp validate_email_param(_) do case Pleroma.Config.get([:instance, :account_activation_required]) do diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index f9c0994da..37be48b5a 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -12,72 +12,56 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do require Pleroma.Constants def register_user(params, opts \\ []) do - token = params["token"] + params = + params + |> Map.take([ + :nickname, + :password, + :captcha_solution, + :captcha_token, + :captcha_answer_data, + :token, + :email + ]) + |> Map.put(:bio, User.parse_bio(params[:bio] || "")) + |> Map.put(:name, params.fullname) + |> Map.put(:password_confirmation, params[:confirm]) - params = %{ - nickname: params["nickname"], - name: params["fullname"], - bio: User.parse_bio(params["bio"]), - email: params["email"], - password: params["password"], - password_confirmation: params["confirm"], - captcha_solution: params["captcha_solution"], - captcha_token: params["captcha_token"], - captcha_answer_data: params["captcha_answer_data"] - } + case validate_captcha(params) do + :ok -> + if Pleroma.Config.get([:instance, :registrations_open]) do + create_user(params, opts) + else + create_user_with_invite(params, opts) + end - captcha_enabled = Pleroma.Config.get([Pleroma.Captcha, :enabled]) - # true if captcha is disabled or enabled and valid, false otherwise - captcha_ok = - if not captcha_enabled do - :ok - else - Pleroma.Captcha.validate( - params[:captcha_token], - params[:captcha_solution], - params[:captcha_answer_data] - ) - end - - # Captcha invalid - if captcha_ok != :ok do - {:error, error} = captcha_ok - # I have no idea how this error handling works - {:error, %{error: Jason.encode!(%{captcha: [error]})}} - else - registration_process( - params, - %{ - registrations_open: Pleroma.Config.get([:instance, :registrations_open]), - token: token - }, - opts - ) + {:error, error} -> + # I have no idea how this error handling works + {:error, %{error: Jason.encode!(%{captcha: [error]})}} end end - defp registration_process(params, %{registrations_open: true}, opts) do - create_user(params, opts) + defp validate_captcha(params) do + if Pleroma.Config.get([Pleroma.Captcha, :enabled]) do + Pleroma.Captcha.validate( + params.captcha_token, + params.captcha_solution, + params.captcha_answer_data + ) + else + :ok + end end - defp registration_process(params, %{token: token}, opts) do - invite = - unless is_nil(token) do - Repo.get_by(UserInviteToken, %{token: token}) - end - - valid_invite? = invite && UserInviteToken.valid_invite?(invite) - - case invite do - nil -> - {:error, "Invalid token"} - - invite when valid_invite? -> - UserInviteToken.update_usage!(invite) - create_user(params, opts) - - _ -> - {:error, "Expired token"} + defp create_user_with_invite(params, opts) do + with %{token: token} when is_binary(token) <- params, + %UserInviteToken{} = invite <- Repo.get_by(UserInviteToken, %{token: token}), + true <- UserInviteToken.valid_invite?(invite) do + UserInviteToken.update_usage!(invite) + create_user(params, opts) + else + nil -> {:error, "Invalid token"} + _ -> {:error, "Expired token"} end end diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs new file mode 100644 index 000000000..4f8d04698 --- /dev/null +++ b/test/web/api_spec/account_operation_test.exs @@ -0,0 +1,48 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.AccountOperationTest do + use Pleroma.Web.ConnCase, async: true + + alias Pleroma.Web.ApiSpec + alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest + alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + + import OpenApiSpex.TestAssertions + import Pleroma.Factory + + test "AccountCreateRequest example matches schema" do + api_spec = ApiSpec.spec() + schema = AccountCreateRequest.schema() + assert_schema(schema.example, "AccountCreateRequest", api_spec) + end + + test "AccountCreateResponse example matches schema" do + api_spec = ApiSpec.spec() + schema = AccountCreateResponse.schema() + assert_schema(schema.example, "AccountCreateResponse", api_spec) + end + + test "AccountController produces a AccountCreateResponse", %{conn: conn} do + api_spec = ApiSpec.spec() + app_token = insert(:oauth_token, user: nil) + + json = + conn + |> put_req_header("authorization", "Bearer " <> app_token.token) + |> put_req_header("content-type", "application/json") + |> post( + "/api/v1/accounts", + %{ + username: "foo", + email: "bar@example.org", + password: "qwerty", + agreement: true + } + ) + |> json_response(200) + + assert_schema(json, "AccountCreateResponse", api_spec) + end +end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index a450a732c..6fe46af3c 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -830,6 +830,7 @@ test "Account registration via Application", %{conn: conn} do conn = build_conn() + |> put_req_header("content-type", "multipart/form-data") |> put_req_header("authorization", "Bearer " <> token) |> post("/api/v1/accounts", %{ username: "lain", @@ -858,11 +859,12 @@ test "returns error when user already registred", %{conn: conn, valid_params: va _user = insert(:user, email: "lain@example.org") app_token = insert(:oauth_token, user: nil) - conn = + res = conn |> put_req_header("authorization", "Bearer " <> app_token.token) + |> put_req_header("content-type", "application/json") + |> post("/api/v1/accounts", valid_params) - res = post(conn, "/api/v1/accounts", valid_params) assert json_response(res, 400) == %{"error" => "{\"email\":[\"has already been taken\"]}"} end @@ -872,7 +874,10 @@ test "returns bad_request if missing required params", %{ } do app_token = insert(:oauth_token, user: nil) - conn = put_req_header(conn, "authorization", "Bearer " <> app_token.token) + conn = + conn + |> put_req_header("authorization", "Bearer " <> app_token.token) + |> put_req_header("content-type", "application/json") res = post(conn, "/api/v1/accounts", valid_params) assert json_response(res, 200) @@ -897,7 +902,11 @@ test "returns bad_request if missing email params when :account_activation_requi Pleroma.Config.put([:instance, :account_activation_required], true) app_token = insert(:oauth_token, user: nil) - conn = put_req_header(conn, "authorization", "Bearer " <> app_token.token) + + conn = + conn + |> put_req_header("authorization", "Bearer " <> app_token.token) + |> put_req_header("content-type", "application/json") res = conn @@ -920,6 +929,7 @@ test "allow registration without an email", %{conn: conn, valid_params: valid_pa res = conn + |> put_req_header("content-type", "application/json") |> Map.put(:remote_ip, {127, 0, 0, 7}) |> post("/api/v1/accounts", Map.delete(valid_params, :email)) @@ -932,6 +942,7 @@ test "allow registration with an empty email", %{conn: conn, valid_params: valid res = conn + |> put_req_header("content-type", "application/json") |> Map.put(:remote_ip, {127, 0, 0, 8}) |> post("/api/v1/accounts", Map.put(valid_params, :email, "")) @@ -939,9 +950,12 @@ test "allow registration with an empty email", %{conn: conn, valid_params: valid end test "returns forbidden if token is invalid", %{conn: conn, valid_params: valid_params} do - conn = put_req_header(conn, "authorization", "Bearer " <> "invalid-token") + res = + conn + |> put_req_header("authorization", "Bearer " <> "invalid-token") + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v1/accounts", valid_params) - res = post(conn, "/api/v1/accounts", valid_params) assert json_response(res, 403) == %{"error" => "Invalid credentials"} end end @@ -956,10 +970,12 @@ test "respects rate limit setting", %{conn: conn} do conn |> put_req_header("authorization", "Bearer " <> app_token.token) |> Map.put(:remote_ip, {15, 15, 15, 15}) + |> put_req_header("content-type", "multipart/form-data") for i <- 1..2 do conn = - post(conn, "/api/v1/accounts", %{ + conn + |> post("/api/v1/accounts", %{ username: "#{i}lain", email: "#{i}lain@example.org", password: "PlzDontHackLain", diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index f6e13b661..7926a0757 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -18,11 +18,11 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do test "it registers a new user and returns the user." do data = %{ - "nickname" => "lain", - "email" => "lain@wired.jp", - "fullname" => "lain iwakura", - "password" => "bear", - "confirm" => "bear" + :nickname => "lain", + :email => "lain@wired.jp", + :fullname => "lain iwakura", + :password => "bear", + :confirm => "bear" } {:ok, user} = TwitterAPI.register_user(data) @@ -35,12 +35,12 @@ test "it registers a new user and returns the user." do test "it registers a new user with empty string in bio and returns the user." do data = %{ - "nickname" => "lain", - "email" => "lain@wired.jp", - "fullname" => "lain iwakura", - "bio" => "", - "password" => "bear", - "confirm" => "bear" + :nickname => "lain", + :email => "lain@wired.jp", + :fullname => "lain iwakura", + :bio => "", + :password => "bear", + :confirm => "bear" } {:ok, user} = TwitterAPI.register_user(data) @@ -60,12 +60,12 @@ test "it sends confirmation email if :account_activation_required is specified i end data = %{ - "nickname" => "lain", - "email" => "lain@wired.jp", - "fullname" => "lain iwakura", - "bio" => "", - "password" => "bear", - "confirm" => "bear" + :nickname => "lain", + :email => "lain@wired.jp", + :fullname => "lain iwakura", + :bio => "", + :password => "bear", + :confirm => "bear" } {:ok, user} = TwitterAPI.register_user(data) @@ -87,23 +87,23 @@ test "it sends confirmation email if :account_activation_required is specified i test "it registers a new user and parses mentions in the bio" do data1 = %{ - "nickname" => "john", - "email" => "john@gmail.com", - "fullname" => "John Doe", - "bio" => "test", - "password" => "bear", - "confirm" => "bear" + :nickname => "john", + :email => "john@gmail.com", + :fullname => "John Doe", + :bio => "test", + :password => "bear", + :confirm => "bear" } {:ok, user1} = TwitterAPI.register_user(data1) data2 = %{ - "nickname" => "lain", - "email" => "lain@wired.jp", - "fullname" => "lain iwakura", - "bio" => "@john test", - "password" => "bear", - "confirm" => "bear" + :nickname => "lain", + :email => "lain@wired.jp", + :fullname => "lain iwakura", + :bio => "@john test", + :password => "bear", + :confirm => "bear" } {:ok, user2} = TwitterAPI.register_user(data2) @@ -123,13 +123,13 @@ test "returns user on success" do {:ok, invite} = UserInviteToken.create_invite() data = %{ - "nickname" => "vinny", - "email" => "pasta@pizza.vs", - "fullname" => "Vinny Vinesauce", - "bio" => "streamer", - "password" => "hiptofbees", - "confirm" => "hiptofbees", - "token" => invite.token + :nickname => "vinny", + :email => "pasta@pizza.vs", + :fullname => "Vinny Vinesauce", + :bio => "streamer", + :password => "hiptofbees", + :confirm => "hiptofbees", + :token => invite.token } {:ok, user} = TwitterAPI.register_user(data) @@ -145,13 +145,13 @@ test "returns user on success" do test "returns error on invalid token" do data = %{ - "nickname" => "GrimReaper", - "email" => "death@reapers.afterlife", - "fullname" => "Reaper Grim", - "bio" => "Your time has come", - "password" => "scythe", - "confirm" => "scythe", - "token" => "DudeLetMeInImAFairy" + :nickname => "GrimReaper", + :email => "death@reapers.afterlife", + :fullname => "Reaper Grim", + :bio => "Your time has come", + :password => "scythe", + :confirm => "scythe", + :token => "DudeLetMeInImAFairy" } {:error, msg} = TwitterAPI.register_user(data) @@ -165,13 +165,13 @@ test "returns error on expired token" do UserInviteToken.update_invite!(invite, used: true) data = %{ - "nickname" => "GrimReaper", - "email" => "death@reapers.afterlife", - "fullname" => "Reaper Grim", - "bio" => "Your time has come", - "password" => "scythe", - "confirm" => "scythe", - "token" => invite.token + :nickname => "GrimReaper", + :email => "death@reapers.afterlife", + :fullname => "Reaper Grim", + :bio => "Your time has come", + :password => "scythe", + :confirm => "scythe", + :token => invite.token } {:error, msg} = TwitterAPI.register_user(data) @@ -186,16 +186,16 @@ test "returns error on expired token" do setup do data = %{ - "nickname" => "vinny", - "email" => "pasta@pizza.vs", - "fullname" => "Vinny Vinesauce", - "bio" => "streamer", - "password" => "hiptofbees", - "confirm" => "hiptofbees" + :nickname => "vinny", + :email => "pasta@pizza.vs", + :fullname => "Vinny Vinesauce", + :bio => "streamer", + :password => "hiptofbees", + :confirm => "hiptofbees" } check_fn = fn invite -> - data = Map.put(data, "token", invite.token) + data = Map.put(data, :token, invite.token) {:ok, user} = TwitterAPI.register_user(data) fetched_user = User.get_cached_by_nickname("vinny") @@ -250,13 +250,13 @@ test "returns user on success, after him registration fails" do UserInviteToken.update_invite!(invite, uses: 99) data = %{ - "nickname" => "vinny", - "email" => "pasta@pizza.vs", - "fullname" => "Vinny Vinesauce", - "bio" => "streamer", - "password" => "hiptofbees", - "confirm" => "hiptofbees", - "token" => invite.token + :nickname => "vinny", + :email => "pasta@pizza.vs", + :fullname => "Vinny Vinesauce", + :bio => "streamer", + :password => "hiptofbees", + :confirm => "hiptofbees", + :token => invite.token } {:ok, user} = TwitterAPI.register_user(data) @@ -269,13 +269,13 @@ test "returns user on success, after him registration fails" do AccountView.render("show.json", %{user: fetched_user}) data = %{ - "nickname" => "GrimReaper", - "email" => "death@reapers.afterlife", - "fullname" => "Reaper Grim", - "bio" => "Your time has come", - "password" => "scythe", - "confirm" => "scythe", - "token" => invite.token + :nickname => "GrimReaper", + :email => "death@reapers.afterlife", + :fullname => "Reaper Grim", + :bio => "Your time has come", + :password => "scythe", + :confirm => "scythe", + :token => invite.token } {:error, msg} = TwitterAPI.register_user(data) @@ -292,13 +292,13 @@ test "returns user on success" do {:ok, invite} = UserInviteToken.create_invite(%{expires_at: Date.utc_today(), max_use: 100}) data = %{ - "nickname" => "vinny", - "email" => "pasta@pizza.vs", - "fullname" => "Vinny Vinesauce", - "bio" => "streamer", - "password" => "hiptofbees", - "confirm" => "hiptofbees", - "token" => invite.token + :nickname => "vinny", + :email => "pasta@pizza.vs", + :fullname => "Vinny Vinesauce", + :bio => "streamer", + :password => "hiptofbees", + :confirm => "hiptofbees", + :token => invite.token } {:ok, user} = TwitterAPI.register_user(data) @@ -317,13 +317,13 @@ test "error after max uses" do UserInviteToken.update_invite!(invite, uses: 99) data = %{ - "nickname" => "vinny", - "email" => "pasta@pizza.vs", - "fullname" => "Vinny Vinesauce", - "bio" => "streamer", - "password" => "hiptofbees", - "confirm" => "hiptofbees", - "token" => invite.token + :nickname => "vinny", + :email => "pasta@pizza.vs", + :fullname => "Vinny Vinesauce", + :bio => "streamer", + :password => "hiptofbees", + :confirm => "hiptofbees", + :token => invite.token } {:ok, user} = TwitterAPI.register_user(data) @@ -335,13 +335,13 @@ test "error after max uses" do AccountView.render("show.json", %{user: fetched_user}) data = %{ - "nickname" => "GrimReaper", - "email" => "death@reapers.afterlife", - "fullname" => "Reaper Grim", - "bio" => "Your time has come", - "password" => "scythe", - "confirm" => "scythe", - "token" => invite.token + :nickname => "GrimReaper", + :email => "death@reapers.afterlife", + :fullname => "Reaper Grim", + :bio => "Your time has come", + :password => "scythe", + :confirm => "scythe", + :token => invite.token } {:error, msg} = TwitterAPI.register_user(data) @@ -355,13 +355,13 @@ test "returns error on overdue date" do UserInviteToken.create_invite(%{expires_at: Date.add(Date.utc_today(), -1), max_use: 100}) data = %{ - "nickname" => "GrimReaper", - "email" => "death@reapers.afterlife", - "fullname" => "Reaper Grim", - "bio" => "Your time has come", - "password" => "scythe", - "confirm" => "scythe", - "token" => invite.token + :nickname => "GrimReaper", + :email => "death@reapers.afterlife", + :fullname => "Reaper Grim", + :bio => "Your time has come", + :password => "scythe", + :confirm => "scythe", + :token => invite.token } {:error, msg} = TwitterAPI.register_user(data) @@ -377,13 +377,13 @@ test "returns error on with overdue date and after max" do UserInviteToken.update_invite!(invite, uses: 100) data = %{ - "nickname" => "GrimReaper", - "email" => "death@reapers.afterlife", - "fullname" => "Reaper Grim", - "bio" => "Your time has come", - "password" => "scythe", - "confirm" => "scythe", - "token" => invite.token + :nickname => "GrimReaper", + :email => "death@reapers.afterlife", + :fullname => "Reaper Grim", + :bio => "Your time has come", + :password => "scythe", + :confirm => "scythe", + :token => invite.token } {:error, msg} = TwitterAPI.register_user(data) @@ -395,11 +395,11 @@ test "returns error on with overdue date and after max" do test "it returns the error on registration problems" do data = %{ - "nickname" => "lain", - "email" => "lain@wired.jp", - "fullname" => "lain iwakura", - "bio" => "close the world.", - "password" => "bear" + :nickname => "lain", + :email => "lain@wired.jp", + :fullname => "lain iwakura", + :bio => "close the world.", + :password => "bear" } {:error, error_object} = TwitterAPI.register_user(data) From f80116125f928de36c93627bbdf5f6578396f53b Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 6 Apr 2020 00:15:37 +0400 Subject: [PATCH 023/137] Add spec for AccountController.verify_credentials --- lib/pleroma/web/api_spec.ex | 2 +- .../api_spec/operations/account_operation.ex | 14 +- .../web/api_spec/operations/app_operation.ex | 6 +- lib/pleroma/web/api_spec/render_error.ex | 2 +- lib/pleroma/web/api_spec/schemas/account.ex | 181 ++++++++++++++++++ .../web/api_spec/schemas/account_emoji.ex | 31 +++ .../web/api_spec/schemas/account_field.ex | 28 +++ test/web/api_spec/account_operation_test.exs | 7 + 8 files changed, 262 insertions(+), 9 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/account.ex create mode 100644 lib/pleroma/web/api_spec/schemas/account_emoji.ex create mode 100644 lib/pleroma/web/api_spec/schemas/account_field.ex diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex index 41e48a085..c85fe30d1 100644 --- a/lib/pleroma/web/api_spec.ex +++ b/lib/pleroma/web/api_spec.ex @@ -31,7 +31,7 @@ def spec do password: %OpenApiSpex.OAuthFlow{ authorizationUrl: "/oauth/authorize", tokenUrl: "/oauth/token", - scopes: %{"read" => "read"} + scopes: %{"read" => "read", "write" => "write"} } } } diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 9085f1af1..3d2270c29 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -4,9 +4,10 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias OpenApiSpex.Operation + alias Pleroma.Web.ApiSpec.Helpers + alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse - alias Pleroma.Web.ApiSpec.Helpers @spec open_api_operation(atom) :: Operation.t() def open_api_operation(action) do @@ -30,7 +31,16 @@ def create_operation do end def verify_credentials_operation do - :ok + %Operation{ + tags: ["accounts"], + description: "Test to make sure that the user token works.", + summary: "Verify account credentials", + operationId: "AccountController.verify_credentials", + security: [%{"oAuth" => ["read:accounts"]}], + responses: %{ + 200 => Operation.response("Account", "application/json", Account) + } + } end def update_credentials_operation do diff --git a/lib/pleroma/web/api_spec/operations/app_operation.ex b/lib/pleroma/web/api_spec/operations/app_operation.ex index 26d8dbd42..935215c64 100644 --- a/lib/pleroma/web/api_spec/operations/app_operation.ex +++ b/lib/pleroma/web/api_spec/operations/app_operation.ex @@ -51,11 +51,7 @@ def verify_credentials_operation do summary: "Verify your app works", description: "Confirm that the app's OAuth2 credentials work.", operationId: "AppController.verify_credentials", - security: [ - %{ - "oAuth" => ["read"] - } - ], + security: [%{"oAuth" => ["read"]}], responses: %{ 200 => Operation.response("App", "application/json", %Schema{ diff --git a/lib/pleroma/web/api_spec/render_error.ex b/lib/pleroma/web/api_spec/render_error.ex index e063d115b..9184c43b6 100644 --- a/lib/pleroma/web/api_spec/render_error.ex +++ b/lib/pleroma/web/api_spec/render_error.ex @@ -5,8 +5,8 @@ defmodule Pleroma.Web.ApiSpec.RenderError do @behaviour Plug - alias Plug.Conn alias OpenApiSpex.Plug.JsonRenderError + alias Plug.Conn @impl Plug def init(opts), do: opts diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex new file mode 100644 index 000000000..59c4ac4a4 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -0,0 +1,181 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.Account do + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + alias Pleroma.Web.ApiSpec.Schemas.AccountField + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "Account", + description: "Response schema for an account", + type: :object, + properties: %{ + acct: %Schema{type: :string}, + avatar_static: %Schema{type: :string}, + avatar: %Schema{type: :string}, + bot: %Schema{type: :boolean}, + created_at: %Schema{type: :string, format: "date-time"}, + display_name: %Schema{type: :string}, + emojis: %Schema{type: :array, items: AccountEmoji}, + fields: %Schema{type: :array, items: AccountField}, + follow_requests_count: %Schema{type: :integer}, + followers_count: %Schema{type: :integer}, + following_count: %Schema{type: :integer}, + header_static: %Schema{type: :string}, + header: %Schema{type: :string}, + id: %Schema{type: :string}, + locked: %Schema{type: :boolean}, + note: %Schema{type: :string}, + statuses_count: %Schema{type: :integer}, + url: %Schema{type: :string}, + username: %Schema{type: :string}, + pleroma: %Schema{ + type: :object, + properties: %{ + allow_following_move: %Schema{type: :boolean}, + background_image: %Schema{type: :boolean, nullable: true}, + chat_token: %Schema{type: :string}, + confirmation_pending: %Schema{type: :boolean}, + hide_favorites: %Schema{type: :boolean}, + hide_followers_count: %Schema{type: :boolean}, + hide_followers: %Schema{type: :boolean}, + hide_follows_count: %Schema{type: :boolean}, + hide_follows: %Schema{type: :boolean}, + is_admin: %Schema{type: :boolean}, + is_moderator: %Schema{type: :boolean}, + skip_thread_containment: %Schema{type: :boolean}, + tags: %Schema{type: :array, items: %Schema{type: :string}}, + unread_conversation_count: %Schema{type: :integer}, + notification_settings: %Schema{ + type: :object, + properties: %{ + followers: %Schema{type: :boolean}, + follows: %Schema{type: :boolean}, + non_followers: %Schema{type: :boolean}, + non_follows: %Schema{type: :boolean}, + privacy_option: %Schema{type: :boolean} + } + }, + relationship: %Schema{ + type: :object, + properties: %{ + blocked_by: %Schema{type: :boolean}, + blocking: %Schema{type: :boolean}, + domain_blocking: %Schema{type: :boolean}, + endorsed: %Schema{type: :boolean}, + followed_by: %Schema{type: :boolean}, + following: %Schema{type: :boolean}, + id: %Schema{type: :string}, + muting: %Schema{type: :boolean}, + muting_notifications: %Schema{type: :boolean}, + requested: %Schema{type: :boolean}, + showing_reblogs: %Schema{type: :boolean}, + subscribing: %Schema{type: :boolean} + } + }, + settings_store: %Schema{ + type: :object + } + } + }, + source: %Schema{ + type: :object, + properties: %{ + fields: %Schema{type: :array, items: AccountField}, + note: %Schema{type: :string}, + privacy: %Schema{type: :string}, + sensitive: %Schema{type: :boolean}, + pleroma: %Schema{ + type: :object, + properties: %{ + actor_type: %Schema{type: :string}, + discoverable: %Schema{type: :boolean}, + no_rich_text: %Schema{type: :boolean}, + show_role: %Schema{type: :boolean} + } + } + } + } + }, + example: %{ + "JSON" => %{ + "acct" => "foobar", + "avatar" => "https://mypleroma.com/images/avi.png", + "avatar_static" => "https://mypleroma.com/images/avi.png", + "bot" => false, + "created_at" => "2020-03-24T13:05:58.000Z", + "display_name" => "foobar", + "emojis" => [], + "fields" => [], + "follow_requests_count" => 0, + "followers_count" => 0, + "following_count" => 1, + "header" => "https://mypleroma.com/images/banner.png", + "header_static" => "https://mypleroma.com/images/banner.png", + "id" => "9tKi3esbG7OQgZ2920", + "locked" => false, + "note" => "cofe", + "pleroma" => %{ + "allow_following_move" => true, + "background_image" => nil, + "confirmation_pending" => true, + "hide_favorites" => true, + "hide_followers" => false, + "hide_followers_count" => false, + "hide_follows" => false, + "hide_follows_count" => false, + "is_admin" => false, + "is_moderator" => false, + "skip_thread_containment" => false, + "chat_token" => + "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAASOXRLaTNlc2JHN09RZ1oyOTIwZAAGc2lnbmVkbgYARNplS3EB.Mb_Iaqew2bN1I1o79B_iP7encmVCpTKC4OtHZRxdjKc", + "unread_conversation_count" => 0, + "tags" => [], + "notification_settings" => %{ + "followers" => true, + "follows" => true, + "non_followers" => true, + "non_follows" => true, + "privacy_option" => false + }, + "relationship" => %{ + "blocked_by" => false, + "blocking" => false, + "domain_blocking" => false, + "endorsed" => false, + "followed_by" => false, + "following" => false, + "id" => "9tKi3esbG7OQgZ2920", + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "showing_reblogs" => true, + "subscribing" => false + }, + "settings_store" => %{ + "pleroma-fe" => %{} + } + }, + "source" => %{ + "fields" => [], + "note" => "foobar", + "pleroma" => %{ + "actor_type" => "Person", + "discoverable" => false, + "no_rich_text" => false, + "show_role" => true + }, + "privacy" => "public", + "sensitive" => false + }, + "statuses_count" => 0, + "url" => "https://mypleroma.com/users/foobar", + "username" => "foobar" + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/account_emoji.ex b/lib/pleroma/web/api_spec/schemas/account_emoji.ex new file mode 100644 index 000000000..403b13b15 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_emoji.ex @@ -0,0 +1,31 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountEmoji do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountEmoji", + description: "Response schema for account custom fields", + type: :object, + properties: %{ + shortcode: %Schema{type: :string}, + url: %Schema{type: :string}, + static_url: %Schema{type: :string}, + visible_in_picker: %Schema{type: :boolean} + }, + example: %{ + "JSON" => %{ + "shortcode" => "fatyoshi", + "url" => + "https://files.mastodon.social/custom_emojis/images/000/023/920/original/e57ecb623faa0dc9.png", + "static_url" => + "https://files.mastodon.social/custom_emojis/images/000/023/920/static/e57ecb623faa0dc9.png", + "visible_in_picker" => true + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/account_field.ex b/lib/pleroma/web/api_spec/schemas/account_field.ex new file mode 100644 index 000000000..8906d812d --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_field.ex @@ -0,0 +1,28 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountField do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountField", + description: "Response schema for account custom fields", + type: :object, + properties: %{ + name: %Schema{type: :string}, + value: %Schema{type: :string}, + verified_at: %Schema{type: :string, format: "date-time", nullable: true} + }, + example: %{ + "JSON" => %{ + "name" => "Website", + "value" => + "https://pleroma.com", + "verified_at" => "2019-08-29T04:14:55.571+00:00" + } + } + }) +end diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs index 4f8d04698..37501b8cc 100644 --- a/test/web/api_spec/account_operation_test.exs +++ b/test/web/api_spec/account_operation_test.exs @@ -6,12 +6,19 @@ defmodule Pleroma.Web.ApiSpec.AccountOperationTest do use Pleroma.Web.ConnCase, async: true alias Pleroma.Web.ApiSpec + alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse import OpenApiSpex.TestAssertions import Pleroma.Factory + test "Account example matches schema" do + api_spec = ApiSpec.spec() + schema = Account.schema() + assert_schema(schema.example, "Account", api_spec) + end + test "AccountCreateRequest example matches schema" do api_spec = ApiSpec.spec() schema = AccountCreateRequest.schema() From 260cbddc943e53a85762e56852de65d2b900cc04 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 7 Apr 2020 14:53:12 +0400 Subject: [PATCH 024/137] Add spec for AccountController.update_credentials --- lib/pleroma/web/api_spec/helpers.ex | 2 +- .../api_spec/operations/account_operation.ex | 14 +- .../schemas/account_field_attribute.ex | 26 ++++ .../account_update_credentials_request.ex | 123 ++++++++++++++++++ .../controllers/account_controller.ex | 41 ++++-- test/support/conn_case.ex | 5 + test/web/api_spec/account_operation_test.exs | 32 +++++ .../update_credentials_test.exs | 2 + 8 files changed, 229 insertions(+), 16 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/account_field_attribute.ex create mode 100644 lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex index 35cf4c0d8..7348dcbee 100644 --- a/lib/pleroma/web/api_spec/helpers.ex +++ b/lib/pleroma/web/api_spec/helpers.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ApiSpec.Helpers do def request_body(description, schema_ref, opts \\ []) do - media_types = ["application/json", "multipart/form-data"] + media_types = ["application/json", "multipart/form-data", "application/x-www-form-urlencoded"] content = media_types diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 3d2270c29..d7b56cc2b 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest @spec open_api_operation(atom) :: Operation.t() def open_api_operation(action) do @@ -44,7 +45,18 @@ def verify_credentials_operation do end def update_credentials_operation do - :ok + %Operation{ + tags: ["accounts"], + summary: "Update account credentials", + description: "Update the user's display and preferences.", + operationId: "AccountController.update_credentials", + security: [%{"oAuth" => ["write:accounts"]}], + requestBody: + Helpers.request_body("Parameters", AccountUpdateCredentialsRequest, required: true), + responses: %{ + 200 => Operation.response("Account", "application/json", Account) + } + } end def relationships_operation do diff --git a/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex b/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex new file mode 100644 index 000000000..fbbdf95f5 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex @@ -0,0 +1,26 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountAttributeField do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountAttributeField", + description: "Request schema for account custom fields", + type: :object, + properties: %{ + name: %Schema{type: :string}, + value: %Schema{type: :string} + }, + required: [:name, :value], + example: %{ + "JSON" => %{ + "name" => "Website", + "value" => "https://pleroma.com" + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex new file mode 100644 index 000000000..a50bce5ed --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex @@ -0,0 +1,123 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest do + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.AccountAttributeField + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountUpdateCredentialsRequest", + description: "POST body for creating an account", + type: :object, + properties: %{ + bot: %Schema{ + type: :boolean, + description: "Whether the account has a bot flag." + }, + display_name: %Schema{ + type: :string, + description: "The display name to use for the profile." + }, + note: %Schema{type: :string, description: "The account bio."}, + avatar: %Schema{ + type: :string, + description: "Avatar image encoded using multipart/form-data", + format: :binary + }, + header: %Schema{ + type: :string, + description: "Header image encoded using multipart/form-data", + format: :binary + }, + locked: %Schema{ + type: :boolean, + description: "Whether manual approval of follow requests is required." + }, + fields_attributes: %Schema{ + oneOf: [%Schema{type: :array, items: AccountAttributeField}, %Schema{type: :object}] + }, + # NOTE: `source` field is not supported + # + # source: %Schema{ + # type: :object, + # properties: %{ + # privacy: %Schema{type: :string}, + # sensitive: %Schema{type: :boolean}, + # language: %Schema{type: :string} + # } + # }, + + # Pleroma-specific fields + no_rich_text: %Schema{ + type: :boolean, + description: "html tags are stripped from all statuses requested from the API" + }, + hide_followers: %Schema{type: :boolean, description: "user's followers will be hidden"}, + hide_follows: %Schema{type: :boolean, description: "user's follows will be hidden"}, + hide_followers_count: %Schema{ + type: :boolean, + description: "user's follower count will be hidden" + }, + hide_follows_count: %Schema{ + type: :boolean, + description: "user's follow count will be hidden" + }, + hide_favorites: %Schema{ + type: :boolean, + description: "user's favorites timeline will be hidden" + }, + show_role: %Schema{ + type: :boolean, + description: "user's role (e.g admin, moderator) will be exposed to anyone in the + API" + }, + default_scope: %Schema{ + type: :string, + description: "The scope returned under privacy key in Source subentity" + }, + pleroma_settings_store: %Schema{ + type: :object, + description: "Opaque user settings to be saved on the backend." + }, + skip_thread_containment: %Schema{ + type: :boolean, + description: "Skip filtering out broken threads" + }, + allow_following_move: %Schema{ + type: :boolean, + description: "Allows automatically follow moved following accounts" + }, + pleroma_background_image: %Schema{ + type: :string, + description: "Sets the background image of the user.", + format: :binary + }, + discoverable: %Schema{ + type: :boolean, + description: "Discovery of this account in search results and other services is allowed." + }, + actor_type: %Schema{type: :string, description: "the type of this account."} + }, + example: %{ + bot: false, + display_name: "cofe", + note: "foobar", + fields_attributes: [%{name: "foo", value: "bar"}], + no_rich_text: false, + hide_followers: true, + hide_follows: false, + hide_followers_count: false, + hide_follows_count: false, + hide_favorites: false, + show_role: false, + default_scope: "private", + pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}}, + skip_thread_containment: false, + allow_following_move: false, + discoverable: false, + actor_type: "Person" + } + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index eb082daf8..9c986b3b2 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -82,7 +82,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OpenApiSpex.Plug.CastAndValidate, - [render_error: Pleroma.Web.ApiSpec.RenderError] when action == :create + [render_error: Pleroma.Web.ApiSpec.RenderError] + when action in [:create, :verify_credentials, :update_credentials] ) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) @@ -152,9 +153,15 @@ def verify_credentials(%{assigns: %{user: user}} = conn, _) do end @doc "PATCH /api/v1/accounts/update_credentials" - def update_credentials(%{assigns: %{user: original_user}} = conn, params) do + def update_credentials(%{assigns: %{user: original_user}, body_params: params} = conn, _params) do user = original_user + params = + params + |> Map.from_struct() + |> Enum.filter(fn {_, value} -> not is_nil(value) end) + |> Enum.into(%{}) + user_params = [ :no_rich_text, @@ -170,22 +177,22 @@ def update_credentials(%{assigns: %{user: original_user}} = conn, params) do :discoverable ] |> Enum.reduce(%{}, fn key, acc -> - add_if_present(acc, params, to_string(key), key, &{:ok, truthy_param?(&1)}) + add_if_present(acc, params, key, key, &{:ok, truthy_param?(&1)}) end) - |> add_if_present(params, "display_name", :name) - |> add_if_present(params, "note", :bio) - |> add_if_present(params, "avatar", :avatar) - |> add_if_present(params, "header", :banner) - |> add_if_present(params, "pleroma_background_image", :background) + |> add_if_present(params, :display_name, :name) + |> add_if_present(params, :note, :bio) + |> add_if_present(params, :avatar, :avatar) + |> add_if_present(params, :header, :banner) + |> add_if_present(params, :pleroma_background_image, :background) |> add_if_present( params, - "fields_attributes", + :fields_attributes, :raw_fields, &{:ok, normalize_fields_attributes(&1)} ) - |> add_if_present(params, "pleroma_settings_store", :pleroma_settings_store) - |> add_if_present(params, "default_scope", :default_scope) - |> add_if_present(params, "actor_type", :actor_type) + |> add_if_present(params, :pleroma_settings_store, :pleroma_settings_store) + |> add_if_present(params, :default_scope, :default_scope) + |> add_if_present(params, :actor_type, :actor_type) changeset = User.update_changeset(user, user_params) @@ -200,7 +207,7 @@ def update_credentials(%{assigns: %{user: original_user}} = conn, params) do defp add_if_present(map, params, params_field, map_field, value_function \\ &{:ok, &1}) do with true <- Map.has_key?(params, params_field), - {:ok, new_value} <- value_function.(params[params_field]) do + {:ok, new_value} <- value_function.(Map.get(params, params_field)) do Map.put(map, map_field, new_value) else _ -> map @@ -211,7 +218,13 @@ defp normalize_fields_attributes(fields) do if Enum.all?(fields, &is_tuple/1) do Enum.map(fields, fn {_, v} -> v end) else - fields + Enum.map(fields, fn + %Pleroma.Web.ApiSpec.Schemas.AccountAttributeField{} = field -> + %{"name" => field.name, "value" => field.value} + + field -> + field + end) end end diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 064874201..36ce372c2 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -51,6 +51,11 @@ defp oauth_access(scopes, opts \\ []) do %{user: user, token: token, conn: conn} end + defp request_content_type(%{conn: conn}) do + conn = put_req_header(conn, "content-type", "multipart/form-data") + [conn: conn] + end + defp ensure_federating_or_authenticated(conn, url, user) do initial_setting = Config.get([:instance, :federating]) on_exit(fn -> Config.put([:instance, :federating], initial_setting) end) diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs index 37501b8cc..a54059074 100644 --- a/test/web/api_spec/account_operation_test.exs +++ b/test/web/api_spec/account_operation_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperationTest do alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest import OpenApiSpex.TestAssertions import Pleroma.Factory @@ -31,6 +32,12 @@ test "AccountCreateResponse example matches schema" do assert_schema(schema.example, "AccountCreateResponse", api_spec) end + test "AccountUpdateCredentialsRequest example matches schema" do + api_spec = ApiSpec.spec() + schema = AccountUpdateCredentialsRequest.schema() + assert_schema(schema.example, "AccountUpdateCredentialsRequest", api_spec) + end + test "AccountController produces a AccountCreateResponse", %{conn: conn} do api_spec = ApiSpec.spec() app_token = insert(:oauth_token, user: nil) @@ -52,4 +59,29 @@ test "AccountController produces a AccountCreateResponse", %{conn: conn} do assert_schema(json, "AccountCreateResponse", api_spec) end + + test "AccountUpdateCredentialsRequest produces an Account", %{conn: conn} do + api_spec = ApiSpec.spec() + token = insert(:oauth_token, scopes: ["read", "write"]) + + json = + conn + |> put_req_header("authorization", "Bearer " <> token.token) + |> put_req_header("content-type", "application/json") + |> patch( + "/api/v1/accounts/update_credentials", + %{ + hide_followers_count: "true", + hide_follows_count: "true", + skip_thread_containment: "true", + hide_follows: "true", + pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}}, + note: "foobar", + fields_attributes: [%{name: "foo", value: "bar"}] + } + ) + |> json_response(200) + + assert_schema(json, "Account", api_spec) + end end diff --git a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs index 2d256f63c..0e890a980 100644 --- a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs @@ -14,6 +14,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do describe "updating credentials" do setup do: oauth_access(["write:accounts"]) + setup :request_content_type test "sets user settings in a generic way", %{conn: conn} do res_conn = @@ -237,6 +238,7 @@ test "requires 'write:accounts' permission" do for token <- [token1, token2] do conn = build_conn() + |> put_req_header("content-type", "multipart/form-data") |> put_req_header("authorization", "Bearer #{token.token}") |> patch("/api/v1/accounts/update_credentials", %{}) From ab400b2ddb205271b0a2680c45db18844f59a27d Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 7 Apr 2020 16:18:23 +0400 Subject: [PATCH 025/137] Add specs for ActorType and VisibilityScope --- lib/pleroma/web/api_spec/schemas/account.ex | 6 ++++-- .../schemas/account_update_credentials_request.ex | 9 ++++----- lib/pleroma/web/api_spec/schemas/actor_type.ex | 13 +++++++++++++ .../web/api_spec/schemas/visibility_scope.ex | 14 ++++++++++++++ .../account_controller/update_credentials_test.exs | 4 ++-- 5 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/actor_type.ex create mode 100644 lib/pleroma/web/api_spec/schemas/visibility_scope.ex diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex index 59c4ac4a4..beb093182 100644 --- a/lib/pleroma/web/api_spec/schemas/account.ex +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -6,6 +6,8 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji alias Pleroma.Web.ApiSpec.Schemas.AccountField + alias Pleroma.Web.ApiSpec.Schemas.ActorType + alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope require OpenApiSpex @@ -87,12 +89,12 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do properties: %{ fields: %Schema{type: :array, items: AccountField}, note: %Schema{type: :string}, - privacy: %Schema{type: :string}, + privacy: VisibilityScope, sensitive: %Schema{type: :boolean}, pleroma: %Schema{ type: :object, properties: %{ - actor_type: %Schema{type: :string}, + actor_type: ActorType, discoverable: %Schema{type: :boolean}, no_rich_text: %Schema{type: :boolean}, show_role: %Schema{type: :boolean} diff --git a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex index a50bce5ed..6ab48193e 100644 --- a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex +++ b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex @@ -5,6 +5,8 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest do alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.AccountAttributeField + alias Pleroma.Web.ApiSpec.Schemas.ActorType + alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope require OpenApiSpex OpenApiSpex.schema(%{ @@ -73,10 +75,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest do description: "user's role (e.g admin, moderator) will be exposed to anyone in the API" }, - default_scope: %Schema{ - type: :string, - description: "The scope returned under privacy key in Source subentity" - }, + default_scope: VisibilityScope, pleroma_settings_store: %Schema{ type: :object, description: "Opaque user settings to be saved on the backend." @@ -98,7 +97,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest do type: :boolean, description: "Discovery of this account in search results and other services is allowed." }, - actor_type: %Schema{type: :string, description: "the type of this account."} + actor_type: ActorType }, example: %{ bot: false, diff --git a/lib/pleroma/web/api_spec/schemas/actor_type.ex b/lib/pleroma/web/api_spec/schemas/actor_type.ex new file mode 100644 index 000000000..ac9b46678 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/actor_type.ex @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.ActorType do + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "ActorType", + type: :string, + enum: ["Application", "Group", "Organization", "Person", "Service"] + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/visibility_scope.ex b/lib/pleroma/web/api_spec/schemas/visibility_scope.ex new file mode 100644 index 000000000..8c81a4d73 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/visibility_scope.ex @@ -0,0 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.VisibilityScope do + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "VisibilityScope", + description: "Status visibility", + type: :string, + enum: ["public", "unlisted", "private", "direct"] + }) +end diff --git a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs index 0e890a980..a3356c12f 100644 --- a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs @@ -106,10 +106,10 @@ test "updates the user's allow_following_move", %{user: user, conn: conn} do end test "updates the user's default scope", %{conn: conn} do - conn = patch(conn, "/api/v1/accounts/update_credentials", %{default_scope: "cofe"}) + conn = patch(conn, "/api/v1/accounts/update_credentials", %{default_scope: "unlisted"}) assert user_data = json_response(conn, 200) - assert user_data["source"]["privacy"] == "cofe" + assert user_data["source"]["privacy"] == "unlisted" end test "updates the user's hide_followers status", %{conn: conn} do From d7d6a83233f24b80005b4f49a8697535620e4b83 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 7 Apr 2020 18:29:05 +0400 Subject: [PATCH 026/137] Add spec for AccountController.relationships --- .../api_spec/operations/account_operation.ex | 24 +++++++- .../schemas/account_relationship_response.ex | 43 +++++++++++++++ .../schemas/account_relationships_response.ex | 55 +++++++++++++++++++ .../controllers/account_controller.ex | 4 +- test/web/api_spec/account_operation_test.exs | 24 ++++++++ .../controllers/account_controller_test.exs | 14 +++-- 6 files changed, 156 insertions(+), 8 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/account_relationship_response.ex create mode 100644 lib/pleroma/web/api_spec/schemas/account_relationships_response.ex diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index d7b56cc2b..352f66e9d 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -4,10 +4,12 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias OpenApiSpex.Operation + alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Helpers alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest @spec open_api_operation(atom) :: Operation.t() @@ -60,7 +62,27 @@ def update_credentials_operation do end def relationships_operation do - :ok + %Operation{ + tags: ["accounts"], + summary: "Check relationships to other accounts", + operationId: "AccountController.relationships", + description: "Find out whether a given account is followed, blocked, muted, etc.", + security: [%{"oAuth" => ["read:follows"]}], + parameters: [ + Operation.parameter( + :id, + :query, + %Schema{ + oneOf: [%Schema{type: :array, items: %Schema{type: :string}}, %Schema{type: :string}] + }, + "Account IDs", + example: "123" + ) + ], + responses: %{ + 200 => Operation.response("Account", "application/json", AccountRelationshipsResponse) + } + } end def show_operation do diff --git a/lib/pleroma/web/api_spec/schemas/account_relationship_response.ex b/lib/pleroma/web/api_spec/schemas/account_relationship_response.ex new file mode 100644 index 000000000..9974b946b --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_relationship_response.ex @@ -0,0 +1,43 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipResponse do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountRelationshipResponse", + description: "Response schema for an account relationship", + type: :object, + properties: %{ + id: %Schema{type: :string}, + following: %Schema{type: :boolean}, + showing_reblogs: %Schema{type: :boolean}, + followed_by: %Schema{type: :boolean}, + blocking: %Schema{type: :boolean}, + blocked_by: %Schema{type: :boolean}, + muting: %Schema{type: :boolean}, + muting_notifications: %Schema{type: :boolean}, + requested: %Schema{type: :boolean}, + domain_blocking: %Schema{type: :boolean}, + endorsed: %Schema{type: :boolean} + }, + example: %{ + "JSON" => %{ + "id" => "1", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => false, + "blocked_by" => false, + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "domain_blocking" => false, + "endorsed" => false + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex b/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex new file mode 100644 index 000000000..2ca632310 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex @@ -0,0 +1,55 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse do + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountRelationshipsResponse", + description: "Response schema for account relationships", + type: :array, + items: Pleroma.Web.ApiSpec.Schemas.AccountRelationshipResponse, + example: [ + %{ + "id" => "1", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => false, + "blocked_by" => true, + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "domain_blocking" => false, + "endorsed" => true + }, + %{ + "id" => "2", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => false, + "blocked_by" => true, + "muting" => true, + "muting_notifications" => false, + "requested" => true, + "domain_blocking" => false, + "endorsed" => false + }, + %{ + "id" => "3", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => true, + "blocked_by" => false, + "muting" => true, + "muting_notifications" => false, + "requested" => false, + "domain_blocking" => true, + "endorsed" => false + } + ] + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 9c986b3b2..1652e3a1b 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -83,7 +83,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OpenApiSpex.Plug.CastAndValidate, [render_error: Pleroma.Web.ApiSpec.RenderError] - when action in [:create, :verify_credentials, :update_credentials] + when action in [:create, :verify_credentials, :update_credentials, :relationships] ) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) @@ -229,7 +229,7 @@ defp normalize_fields_attributes(fields) do end @doc "GET /api/v1/accounts/relationships" - def relationships(%{assigns: %{user: user}} = conn, %{"id" => id}) do + def relationships(%{assigns: %{user: user}} = conn, %{id: id}) do targets = User.get_all_by_ids(List.wrap(id)) render(conn, "relationships.json", user: user, targets: targets) diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs index a54059074..58a38d8af 100644 --- a/test/web/api_spec/account_operation_test.exs +++ b/test/web/api_spec/account_operation_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperationTest do alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest import OpenApiSpex.TestAssertions @@ -84,4 +85,27 @@ test "AccountUpdateCredentialsRequest produces an Account", %{conn: conn} do assert_schema(json, "Account", api_spec) end + + test "AccountRelationshipsResponse example matches schema" do + api_spec = ApiSpec.spec() + schema = AccountRelationshipsResponse.schema() + assert_schema(schema.example, "AccountRelationshipsResponse", api_spec) + end + + test "/api/v1/accounts/relationships produces AccountRelationshipsResponse", %{ + conn: conn + } do + token = insert(:oauth_token, scopes: ["read", "write"]) + other_user = insert(:user) + {:ok, _user} = Pleroma.User.follow(token.user, other_user) + api_spec = ApiSpec.spec() + + assert [relationship] = + conn + |> put_req_header("authorization", "Bearer " <> token.token) + |> get("/api/v1/accounts/relationships?id=#{other_user.id}") + |> json_response(:ok) + + assert_schema([relationship], "AccountRelationshipsResponse", api_spec) + end end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 6fe46af3c..060a7c1cd 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -1062,14 +1062,18 @@ test "locked accounts" do setup do: oauth_access(["read:follows"]) test "returns the relationships for the current user", %{user: user, conn: conn} do - other_user = insert(:user) + %{id: other_user_id} = other_user = insert(:user) {:ok, _user} = User.follow(user, other_user) - conn = get(conn, "/api/v1/accounts/relationships", %{"id" => [other_user.id]}) + assert [%{"id" => ^other_user_id}] = + conn + |> get("/api/v1/accounts/relationships?id=#{other_user.id}") + |> json_response(200) - assert [relationship] = json_response(conn, 200) - - assert to_string(other_user.id) == relationship["id"] + assert [%{"id" => ^other_user_id}] = + conn + |> get("/api/v1/accounts/relationships?id[]=#{other_user.id}") + |> json_response(200) end test "returns an empty list on a bad request", %{conn: conn} do From 278b3fa0ad0ca58a9e5549e98d24944bbe0bf766 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 7 Apr 2020 18:53:12 +0400 Subject: [PATCH 027/137] Add spec for AccountController.show --- .../web/api_spec/operations/account_operation.ex | 16 +++++++++++++++- .../controllers/account_controller.ex | 4 ++-- test/web/api_spec/account_operation_test.exs | 16 +++++++++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 352f66e9d..5b1b2eb4c 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -86,7 +86,21 @@ def relationships_operation do end def show_operation do - :ok + %Operation{ + tags: ["accounts"], + summary: "Account", + operationId: "AccountController.show", + description: "View information about a profile.", + parameters: [ + Operation.parameter(:id, :path, :string, "Account ID or nickname", + example: "123", + required: true + ) + ], + responses: %{ + 200 => Operation.response("Account", "application/json", Account) + } + } end def statuses_operation do diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 1652e3a1b..67375f31c 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -83,7 +83,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OpenApiSpex.Plug.CastAndValidate, [render_error: Pleroma.Web.ApiSpec.RenderError] - when action in [:create, :verify_credentials, :update_credentials, :relationships] + when action in [:create, :verify_credentials, :update_credentials, :relationships, :show] ) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) @@ -239,7 +239,7 @@ def relationships(%{assigns: %{user: user}} = conn, %{id: id}) do def relationships(%{assigns: %{user: _user}} = conn, _), do: json(conn, []) @doc "GET /api/v1/accounts/:id" - def show(%{assigns: %{user: for_user}} = conn, %{"id" => nickname_or_id}) do + def show(%{assigns: %{user: for_user}} = conn, %{id: nickname_or_id}) do with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id, for: for_user), true <- User.visible_for?(user, for_user) do render(conn, "show.json", user: user, for: for_user) diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs index 58a38d8af..6cc08ee0e 100644 --- a/test/web/api_spec/account_operation_test.exs +++ b/test/web/api_spec/account_operation_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ApiSpec.AccountOperationTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Web.ApiSpec alias Pleroma.Web.ApiSpec.Schemas.Account @@ -108,4 +108,18 @@ test "/api/v1/accounts/relationships produces AccountRelationshipsResponse", %{ assert_schema([relationship], "AccountRelationshipsResponse", api_spec) end + + test "/api/v1/accounts/:id produces Account", %{ + conn: conn + } do + user = insert(:user) + api_spec = ApiSpec.spec() + + assert resp = + conn + |> get("/api/v1/accounts/#{user.id}") + |> json_response(:ok) + + assert_schema(resp, "Account", api_spec) + end end From 03124c96cc192ef8c4893738a0cee552c6984da6 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 8 Apr 2020 22:33:25 +0400 Subject: [PATCH 028/137] Add spec for AccountController.statuses --- lib/pleroma/web/activity_pub/activity_pub.ex | 11 +- lib/pleroma/web/api_spec.ex | 8 + .../api_spec/operations/account_operation.ex | 45 +++- .../account_update_credentials_request.ex | 5 +- .../web/api_spec/schemas/boolean_like.ex | 36 +++ lib/pleroma/web/api_spec/schemas/poll.ex | 35 +++ lib/pleroma/web/api_spec/schemas/status.ex | 227 ++++++++++++++++++ .../web/api_spec/schemas/statuses_response.ex | 13 + .../controllers/account_controller.ex | 17 +- .../web/mastodon_api/views/status_view.ex | 8 +- mix.exs | 4 +- mix.lock | 4 +- test/web/api_spec/account_operation_test.exs | 16 ++ .../controllers/account_controller_test.exs | 60 +++-- 14 files changed, 444 insertions(+), 45 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/boolean_like.ex create mode 100644 lib/pleroma/web/api_spec/schemas/poll.ex create mode 100644 lib/pleroma/web/api_spec/schemas/status.ex create mode 100644 lib/pleroma/web/api_spec/schemas/statuses_response.ex diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 86b105b7f..1909ce097 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -853,7 +853,7 @@ defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) end defp exclude_visibility(query, %{"exclude_visibilities" => visibility}) - when visibility not in @valid_visibilities do + when visibility not in [nil | @valid_visibilities] do Logger.error("Could not exclude visibility to #{visibility}") query end @@ -1060,7 +1060,7 @@ defp restrict_media(_query, %{"only_media" => _val, "skip_preload" => true}) do raise "Can't use the child object without preloading!" end - defp restrict_media(query, %{"only_media" => val}) when val == "true" or val == "1" do + defp restrict_media(query, %{"only_media" => val}) when val in [true, "true", "1"] do from( [_activity, object] in query, where: fragment("not (?)->'attachment' = (?)", object.data, ^[]) @@ -1069,7 +1069,7 @@ defp restrict_media(query, %{"only_media" => val}) when val == "true" or val == defp restrict_media(query, _), do: query - defp restrict_replies(query, %{"exclude_replies" => val}) when val == "true" or val == "1" do + defp restrict_replies(query, %{"exclude_replies" => val}) when val in [true, "true", "1"] do from( [_activity, object] in query, where: fragment("?->>'inReplyTo' is null", object.data) @@ -1078,7 +1078,7 @@ defp restrict_replies(query, %{"exclude_replies" => val}) when val == "true" or defp restrict_replies(query, _), do: query - defp restrict_reblogs(query, %{"exclude_reblogs" => val}) when val == "true" or val == "1" do + defp restrict_reblogs(query, %{"exclude_reblogs" => val}) when val in [true, "true", "1"] do from(activity in query, where: fragment("?->>'type' != 'Announce'", activity.data)) end @@ -1157,7 +1157,8 @@ defp restrict_unlisted(query) do ) end - defp restrict_pinned(query, %{"pinned" => "true", "pinned_activity_ids" => ids}) do + defp restrict_pinned(query, %{"pinned" => pinned, "pinned_activity_ids" => ids}) + when pinned in [true, "true", "1"] do from(activity in query, where: activity.id in ^ids) end diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex index c85fe30d1..d11e776d0 100644 --- a/lib/pleroma/web/api_spec.ex +++ b/lib/pleroma/web/api_spec.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ApiSpec do alias OpenApiSpex.OpenApi + alias OpenApiSpex.Operation alias Pleroma.Web.Endpoint alias Pleroma.Web.Router @@ -24,6 +25,13 @@ def spec do # populate the paths from a phoenix router paths: OpenApiSpex.Paths.from_router(Router), components: %OpenApiSpex.Components{ + parameters: %{ + "accountIdOrNickname" => + Operation.parameter(:id, :path, :string, "Account ID or nickname", + example: "123", + required: true + ) + }, securitySchemes: %{ "oAuth" => %OpenApiSpex.SecurityScheme{ type: "oauth2", diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 5b1b2eb4c..09e6d24ed 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias OpenApiSpex.Operation + alias OpenApiSpex.Reference alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Helpers alias Pleroma.Web.ApiSpec.Schemas.Account @@ -11,6 +12,9 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest + alias Pleroma.Web.ApiSpec.Schemas.BooleanLike + alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse + alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope @spec open_api_operation(atom) :: Operation.t() def open_api_operation(action) do @@ -91,12 +95,7 @@ def show_operation do summary: "Account", operationId: "AccountController.show", description: "View information about a profile.", - parameters: [ - Operation.parameter(:id, :path, :string, "Account ID or nickname", - example: "123", - required: true - ) - ], + parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], responses: %{ 200 => Operation.response("Account", "application/json", Account) } @@ -104,7 +103,39 @@ def show_operation do end def statuses_operation do - :ok + %Operation{ + tags: ["accounts"], + summary: "Statuses", + operationId: "AccountController.statuses", + description: + "Statuses posted to the given account. Public (for public statuses only), or user token + `read:statuses` (for private statuses the user is authorized to see)", + parameters: [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, + Operation.parameter(:pinned, :query, BooleanLike, "Pinned"), + Operation.parameter(:tagged, :query, :string, "With tag"), + Operation.parameter(:only_media, :query, BooleanLike, "Only meadia"), + Operation.parameter(:with_muted, :query, BooleanLike, "With muted"), + Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblobs"), + Operation.parameter( + :exclude_visibilities, + :query, + %Schema{type: :array, items: VisibilityScope}, + "Exclude visibilities" + ), + Operation.parameter(:max_id, :query, :string, "Max ID"), + Operation.parameter(:min_id, :query, :string, "Mix ID"), + Operation.parameter(:since_id, :query, :string, "Since ID"), + Operation.parameter( + :limit, + :query, + %Schema{type: :integer, default: 20, maximum: 40}, + "Limit" + ) + ], + responses: %{ + 200 => Operation.response("Statuses", "application/json", StatusesResponse) + } + } end def followers_operation do diff --git a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex index 6ab48193e..35220c78a 100644 --- a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex +++ b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex @@ -38,7 +38,10 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest do description: "Whether manual approval of follow requests is required." }, fields_attributes: %Schema{ - oneOf: [%Schema{type: :array, items: AccountAttributeField}, %Schema{type: :object}] + oneOf: [ + %Schema{type: :array, items: AccountAttributeField}, + %Schema{type: :object, additionalProperties: %Schema{type: AccountAttributeField}} + ] }, # NOTE: `source` field is not supported # diff --git a/lib/pleroma/web/api_spec/schemas/boolean_like.ex b/lib/pleroma/web/api_spec/schemas/boolean_like.ex new file mode 100644 index 000000000..f3bfb74da --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/boolean_like.ex @@ -0,0 +1,36 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.BooleanLike do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "BooleanLike", + description: """ + The following values will be treated as `false`: + - false + - 0 + - "0", + - "f", + - "F", + - "false", + - "FALSE", + - "off", + - "OFF" + + All other non-null values will be treated as `true` + """, + anyOf: [ + %Schema{type: :boolean}, + %Schema{type: :string}, + %Schema{type: :integer} + ] + }) + + def after_cast(value, _schmea) do + {:ok, Pleroma.Web.ControllerHelper.truthy_param?(value)} + end +end diff --git a/lib/pleroma/web/api_spec/schemas/poll.ex b/lib/pleroma/web/api_spec/schemas/poll.ex new file mode 100644 index 000000000..2a9975f85 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/poll.ex @@ -0,0 +1,35 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.Poll do + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "Poll", + description: "Response schema for account custom fields", + type: :object, + properties: %{ + id: %Schema{type: :string}, + expires_at: %Schema{type: :string, format: "date-time"}, + expired: %Schema{type: :boolean}, + multiple: %Schema{type: :boolean}, + votes_count: %Schema{type: :integer}, + voted: %Schema{type: :boolean}, + emojis: %Schema{type: :array, items: AccountEmoji}, + options: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + title: %Schema{type: :string}, + votes_count: %Schema{type: :integer} + } + } + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex new file mode 100644 index 000000000..486c3a0fe --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/status.ex @@ -0,0 +1,227 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.Status do + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.Account + alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + alias Pleroma.Web.ApiSpec.Schemas.Poll + alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "Status", + description: "Response schema for a status", + type: :object, + properties: %{ + account: Account, + application: %Schema{ + type: :object, + properties: %{ + name: %Schema{type: :string}, + website: %Schema{type: :string, nullable: true} + } + }, + bookmarked: %Schema{type: :boolean}, + card: %Schema{ + type: :object, + nullable: true, + properties: %{ + type: %Schema{type: :string}, + provider_name: %Schema{type: :string}, + provider_url: %Schema{type: :string}, + url: %Schema{type: :string}, + image: %Schema{type: :string}, + title: %Schema{type: :string}, + description: %Schema{type: :string} + } + }, + content: %Schema{type: :string}, + created_at: %Schema{type: :string, format: "date-time"}, + emojis: %Schema{type: :array, items: AccountEmoji}, + favourited: %Schema{type: :boolean}, + favourites_count: %Schema{type: :integer}, + id: %Schema{type: :string}, + in_reply_to_account_id: %Schema{type: :string, nullable: true}, + in_reply_to_id: %Schema{type: :string, nullable: true}, + language: %Schema{type: :string, nullable: true}, + media_attachments: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{type: :string}, + url: %Schema{type: :string}, + remote_url: %Schema{type: :string}, + preview_url: %Schema{type: :string}, + text_url: %Schema{type: :string}, + description: %Schema{type: :string}, + type: %Schema{type: :string, enum: ["image", "video", "audio", "unknown"]}, + pleroma: %Schema{ + type: :object, + properties: %{mime_type: %Schema{type: :string}} + } + } + } + }, + mentions: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{type: :string}, + acct: %Schema{type: :string}, + username: %Schema{type: :string}, + url: %Schema{type: :string} + } + } + }, + muted: %Schema{type: :boolean}, + pinned: %Schema{type: :boolean}, + pleroma: %Schema{ + type: :object, + properties: %{ + content: %Schema{type: :object, additionalProperties: %Schema{type: :string}}, + conversation_id: %Schema{type: :integer}, + direct_conversation_id: %Schema{type: :string, nullable: true}, + emoji_reactions: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + name: %Schema{type: :string}, + count: %Schema{type: :integer}, + me: %Schema{type: :boolean} + } + } + }, + expires_at: %Schema{type: :string, format: "date-time", nullable: true}, + in_reply_to_account_acct: %Schema{type: :string, nullable: true}, + local: %Schema{type: :boolean}, + spoiler_text: %Schema{type: :object, additionalProperties: %Schema{type: :string}}, + thread_muted: %Schema{type: :boolean} + } + }, + poll: %Schema{type: Poll, nullable: true}, + reblog: %Schema{ + allOf: [%OpenApiSpex.Reference{"$ref": "#/components/schemas/Status"}], + nullable: true + }, + reblogged: %Schema{type: :boolean}, + reblogs_count: %Schema{type: :integer}, + replies_count: %Schema{type: :integer}, + sensitive: %Schema{type: :boolean}, + spoiler_text: %Schema{type: :string}, + tags: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + name: %Schema{type: :string}, + url: %Schema{type: :string} + } + } + }, + uri: %Schema{type: :string}, + url: %Schema{type: :string}, + visibility: VisibilityScope + }, + example: %{ + "JSON" => %{ + "account" => %{ + "acct" => "nick6", + "avatar" => "http://localhost:4001/images/avi.png", + "avatar_static" => "http://localhost:4001/images/avi.png", + "bot" => false, + "created_at" => "2020-04-07T19:48:51.000Z", + "display_name" => "Test テスト User 6", + "emojis" => [], + "fields" => [], + "followers_count" => 1, + "following_count" => 0, + "header" => "http://localhost:4001/images/banner.png", + "header_static" => "http://localhost:4001/images/banner.png", + "id" => "9toJCsKN7SmSf3aj5c", + "locked" => false, + "note" => "Tester Number 6", + "pleroma" => %{ + "background_image" => nil, + "confirmation_pending" => false, + "hide_favorites" => true, + "hide_followers" => false, + "hide_followers_count" => false, + "hide_follows" => false, + "hide_follows_count" => false, + "is_admin" => false, + "is_moderator" => false, + "relationship" => %{ + "blocked_by" => false, + "blocking" => false, + "domain_blocking" => false, + "endorsed" => false, + "followed_by" => false, + "following" => true, + "id" => "9toJCsKN7SmSf3aj5c", + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "showing_reblogs" => true, + "subscribing" => false + }, + "skip_thread_containment" => false, + "tags" => [] + }, + "source" => %{ + "fields" => [], + "note" => "Tester Number 6", + "pleroma" => %{"actor_type" => "Person", "discoverable" => false}, + "sensitive" => false + }, + "statuses_count" => 1, + "url" => "http://localhost:4001/users/nick6", + "username" => "nick6" + }, + "application" => %{"name" => "Web", "website" => nil}, + "bookmarked" => false, + "card" => nil, + "content" => "foobar", + "created_at" => "2020-04-07T19:48:51.000Z", + "emojis" => [], + "favourited" => false, + "favourites_count" => 0, + "id" => "9toJCu5YZW7O7gfvH6", + "in_reply_to_account_id" => nil, + "in_reply_to_id" => nil, + "language" => nil, + "media_attachments" => [], + "mentions" => [], + "muted" => false, + "pinned" => false, + "pleroma" => %{ + "content" => %{"text/plain" => "foobar"}, + "conversation_id" => 345_972, + "direct_conversation_id" => nil, + "emoji_reactions" => [], + "expires_at" => nil, + "in_reply_to_account_acct" => nil, + "local" => true, + "spoiler_text" => %{"text/plain" => ""}, + "thread_muted" => false + }, + "poll" => nil, + "reblog" => nil, + "reblogged" => false, + "reblogs_count" => 0, + "replies_count" => 0, + "sensitive" => false, + "spoiler_text" => "", + "tags" => [], + "uri" => "http://localhost:4001/objects/0f5dad44-0e9e-4610-b377-a2631e499190", + "url" => "http://localhost:4001/notice/9toJCu5YZW7O7gfvH6", + "visibility" => "private" + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/statuses_response.ex b/lib/pleroma/web/api_spec/schemas/statuses_response.ex new file mode 100644 index 000000000..fb7c7e0aa --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/statuses_response.ex @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.StatusesResponse do + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "StatusesResponse", + type: :array, + items: Pleroma.Web.ApiSpec.Schemas.Status + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 67375f31c..208df5698 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -83,7 +83,14 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OpenApiSpex.Plug.CastAndValidate, [render_error: Pleroma.Web.ApiSpec.RenderError] - when action in [:create, :verify_credentials, :update_credentials, :relationships, :show] + when action in [ + :create, + :verify_credentials, + :update_credentials, + :relationships, + :show, + :statuses + ] ) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) @@ -250,12 +257,14 @@ def show(%{assigns: %{user: for_user}} = conn, %{id: nickname_or_id}) do @doc "GET /api/v1/accounts/:id/statuses" def statuses(%{assigns: %{user: reading_user}} = conn, params) do - with %User{} = user <- User.get_cached_by_nickname_or_id(params["id"], for: reading_user), + with %User{} = user <- User.get_cached_by_nickname_or_id(params.id, for: reading_user), true <- User.visible_for?(user, reading_user) do params = params - |> Map.put("tag", params["tagged"]) - |> Map.delete("godmode") + |> Map.delete(:tagged) + |> Enum.filter(&(not is_nil(&1))) + |> Map.new(fn {key, value} -> {to_string(key), value} end) + |> Map.put("tag", params[:tagged]) activities = ActivityPub.fetch_user_activities(user, reading_user, params) diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index b5850e1ae..ba40fd63e 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -521,11 +521,9 @@ def render_content(object), do: object.data["content"] || "" """ @spec build_tags(list(any())) :: list(map()) def build_tags(object_tags) when is_list(object_tags) do - object_tags = for tag when is_binary(tag) <- object_tags, do: tag - - Enum.reduce(object_tags, [], fn tag, tags -> - tags ++ [%{name: tag, url: "/tag/#{URI.encode(tag)}"}] - end) + object_tags + |> Enum.filter(&is_binary/1) + |> Enum.map(&%{name: &1, url: "/tag/#{URI.encode(&1)}"}) end def build_tags(_), do: [] diff --git a/mix.exs b/mix.exs index c781995e0..ec69d70c0 100644 --- a/mix.exs +++ b/mix.exs @@ -189,7 +189,9 @@ defp deps do ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:mox, "~> 0.5", only: :test}, {:restarter, path: "./restarter"}, - {:open_api_spex, "~> 3.6"} + {:open_api_spex, + git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", + ref: "b862ebd78de0df95875cf46feb6e9607130dc2a8"} ] ++ oauth_deps() end diff --git a/mix.lock b/mix.lock index ba4e3ac44..779be4f87 100644 --- a/mix.lock +++ b/mix.lock @@ -74,7 +74,7 @@ "nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"}, "nodex": {:git, "https://git.pleroma.social/pleroma/nodex", "cb6730f943cfc6aad674c92161be23a8411f15d1", [ref: "cb6730f943cfc6aad674c92161be23a8411f15d1"]}, "oban": {:hex, :oban, "1.2.0", "7cca94d341be43d220571e28f69131c4afc21095b25257397f50973d3fc59b07", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ba5f8b3f7d76967b3e23cf8014f6a13e4ccb33431e4808f036709a7f822362ee"}, - "open_api_spex": {:hex, :open_api_spex, "3.6.0", "64205aba9f2607f71b08fd43e3351b9c5e9898ec5ef49fc0ae35890da502ade9", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "126ba3473966277132079cb1d5bf1e3df9e36fe2acd00166e75fd125cecb59c5"}, + "open_api_spex": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", "b862ebd78de0df95875cf46feb6e9607130dc2a8", [ref: "b862ebd78de0df95875cf46feb6e9607130dc2a8"]}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.4", "8dd29ed783f2e12195d7e0a4640effc0a7c37e6537da491f1db01839eee6d053", [:mix], [], "hexpm", "595d09db74cb093b1903381c9de423276a931a2480a46a1a5dc7f932a2a6375b"}, "phoenix": {:hex, :phoenix, "1.4.13", "67271ad69b51f3719354604f4a3f968f83aa61c19199343656c9caee057ff3b8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ab765a0feddb81fc62e2116c827b5f068df85159c162bee760745276ad7ddc1b"}, @@ -82,7 +82,7 @@ "phoenix_html": {:hex, :phoenix_html, "2.14.0", "d8c6bc28acc8e65f8ea0080ee05aa13d912c8758699283b8d3427b655aabe284", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "b0bb30eda478a06dbfbe96728061a93833db3861a49ccb516f839ecb08493fbb"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm", "1f13f9f0f3e769a667a6b6828d29dec37497a082d195cc52dbef401a9b69bf38"}, "phoenix_swoosh": {:hex, :phoenix_swoosh, "0.2.0", "a7e0b32077cd6d2323ae15198839b05d9caddfa20663fd85787479e81f89520e", [:mix], [{:phoenix, "~> 1.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:swoosh, "~> 0.1", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "ebf1bfa7b3c1c850c04929afe02e2e0d7ab135e0706332c865de03e761676b1f"}, - "plug": {:hex, :plug, "1.9.0", "8d7c4e26962283ff9f8f3347bd73838e2413fbc38b7bb5467d5924f68f3a5a4a", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "9902eda2c52ada2a096434682e99a2493f5d06a94d6ac6bcfff9805f952350f1"}, + "plug": {:hex, :plug, "1.10.0", "6508295cbeb4c654860845fb95260737e4a8838d34d115ad76cd487584e2fc4d", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "422a9727e667be1bf5ab1de03be6fa0ad67b775b2d84ed908f3264415ef29d4a"}, "plug_cowboy": {:hex, :plug_cowboy, "2.1.2", "8b0addb5908c5238fac38e442e81b6fcd32788eaa03246b4d55d147c47c5805e", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "7d722581ce865a237e14da6d946f92704101740a256bd13ec91e63c0b122fc70"}, "plug_crypto": {:hex, :plug_crypto, "1.1.2", "bdd187572cc26dbd95b87136290425f2b580a116d3fb1f564216918c9730d227", [:mix], [], "hexpm", "6b8b608f895b6ffcfad49c37c7883e8df98ae19c6a28113b02aa1e9c5b22d6b5"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf"}, diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs index 6cc08ee0e..892ade71c 100644 --- a/test/web/api_spec/account_operation_test.exs +++ b/test/web/api_spec/account_operation_test.exs @@ -122,4 +122,20 @@ test "/api/v1/accounts/:id produces Account", %{ assert_schema(resp, "Account", api_spec) end + + test "/api/v1/accounts/:id/statuses produces StatusesResponse", %{ + conn: conn + } do + user = insert(:user) + Pleroma.Web.CommonAPI.post(user, %{"status" => "foobar"}) + + api_spec = ApiSpec.spec() + + assert resp = + conn + |> get("/api/v1/accounts/#{user.id}/statuses") + |> json_response(:ok) + + assert_schema(resp, "StatusesResponse", api_spec) + end end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 060a7c1cd..969256fa4 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -10,9 +10,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.InternalFetchActor + alias Pleroma.Web.ApiSpec alias Pleroma.Web.CommonAPI alias Pleroma.Web.OAuth.Token + import OpenApiSpex.TestAssertions import Pleroma.Factory describe "account fetching" do @@ -245,22 +247,23 @@ test "respects blocks", %{user: user_one, conn: conn} do {:ok, activity} = CommonAPI.post(user_two, %{"status" => "User one sux0rz"}) {:ok, repeat, _} = CommonAPI.repeat(activity.id, user_three) - resp = get(conn, "/api/v1/accounts/#{user_two.id}/statuses") - - assert [%{"id" => id}] = json_response(resp, 200) + assert resp = get(conn, "/api/v1/accounts/#{user_two.id}/statuses") |> json_response(200) + assert [%{"id" => id}] = resp + assert_schema(resp, "StatusesResponse", ApiSpec.spec()) assert id == activity.id # Even a blocked user will deliver the full user timeline, there would be # no point in looking at a blocked users timeline otherwise - resp = get(conn, "/api/v1/accounts/#{user_two.id}/statuses") - - assert [%{"id" => id}] = json_response(resp, 200) + assert resp = get(conn, "/api/v1/accounts/#{user_two.id}/statuses") |> json_response(200) + assert [%{"id" => id}] = resp assert id == activity.id + assert_schema(resp, "StatusesResponse", ApiSpec.spec()) # Third user's timeline includes the repeat when viewed by unauthenticated user - resp = get(build_conn(), "/api/v1/accounts/#{user_three.id}/statuses") - assert [%{"id" => id}] = json_response(resp, 200) + resp = get(build_conn(), "/api/v1/accounts/#{user_three.id}/statuses") |> json_response(200) + assert [%{"id" => id}] = resp assert id == repeat.id + assert_schema(resp, "StatusesResponse", ApiSpec.spec()) # When viewing a third user's timeline, the blocked users' statuses will NOT be shown resp = get(conn, "/api/v1/accounts/#{user_three.id}/statuses") @@ -286,30 +289,34 @@ test "gets users statuses", %{conn: conn} do {:ok, private_activity} = CommonAPI.post(user_one, %{"status" => "private", "visibility" => "private"}) - resp = get(conn, "/api/v1/accounts/#{user_one.id}/statuses") - - assert [%{"id" => id}] = json_response(resp, 200) + resp = get(conn, "/api/v1/accounts/#{user_one.id}/statuses") |> json_response(200) + assert [%{"id" => id}] = resp assert id == to_string(activity.id) + assert_schema(resp, "StatusesResponse", ApiSpec.spec()) resp = conn |> assign(:user, user_two) |> assign(:token, insert(:oauth_token, user: user_two, scopes: ["read:statuses"])) |> get("/api/v1/accounts/#{user_one.id}/statuses") + |> json_response(200) - assert [%{"id" => id_one}, %{"id" => id_two}] = json_response(resp, 200) + assert [%{"id" => id_one}, %{"id" => id_two}] = resp assert id_one == to_string(direct_activity.id) assert id_two == to_string(activity.id) + assert_schema(resp, "StatusesResponse", ApiSpec.spec()) resp = conn |> assign(:user, user_three) |> assign(:token, insert(:oauth_token, user: user_three, scopes: ["read:statuses"])) |> get("/api/v1/accounts/#{user_one.id}/statuses") + |> json_response(200) - assert [%{"id" => id_one}, %{"id" => id_two}] = json_response(resp, 200) + assert [%{"id" => id_one}, %{"id" => id_two}] = resp assert id_one == to_string(private_activity.id) assert id_two == to_string(activity.id) + assert_schema(resp, "StatusesResponse", ApiSpec.spec()) end test "unimplemented pinned statuses feature", %{conn: conn} do @@ -335,40 +342,45 @@ test "gets an users media", %{conn: conn} do {:ok, image_post} = CommonAPI.post(user, %{"status" => "cofe", "media_ids" => [media_id]}) - conn = get(conn, "/api/v1/accounts/#{user.id}/statuses", %{"only_media" => "true"}) + conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?only_media=true") assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(image_post.id) + assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) - conn = get(build_conn(), "/api/v1/accounts/#{user.id}/statuses", %{"only_media" => "1"}) + conn = get(build_conn(), "/api/v1/accounts/#{user.id}/statuses?only_media=1") assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(image_post.id) + assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) end test "gets a user's statuses without reblogs", %{user: user, conn: conn} do {:ok, post} = CommonAPI.post(user, %{"status" => "HI!!!"}) {:ok, _, _} = CommonAPI.repeat(post.id, user) - conn = get(conn, "/api/v1/accounts/#{user.id}/statuses", %{"exclude_reblogs" => "true"}) + conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?exclude_reblogs=true") assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(post.id) + assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) - conn = get(conn, "/api/v1/accounts/#{user.id}/statuses", %{"exclude_reblogs" => "1"}) + conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?exclude_reblogs=1") assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(post.id) + assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) end test "filters user's statuses by a hashtag", %{user: user, conn: conn} do {:ok, post} = CommonAPI.post(user, %{"status" => "#hashtag"}) {:ok, _post} = CommonAPI.post(user, %{"status" => "hashtag"}) - conn = get(conn, "/api/v1/accounts/#{user.id}/statuses", %{"tagged" => "hashtag"}) + conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?tagged=hashtag") assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(post.id) + assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) end test "the user views their own timelines and excludes direct messages", %{ @@ -378,11 +390,11 @@ test "the user views their own timelines and excludes direct messages", %{ {:ok, public_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "public"}) {:ok, _direct_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) - conn = - get(conn, "/api/v1/accounts/#{user.id}/statuses", %{"exclude_visibilities" => ["direct"]}) + conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?exclude_visibilities[]=direct") assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(public_activity.id) + assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) end end @@ -420,9 +432,11 @@ test "if user is authenticated", %{local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) end end @@ -441,6 +455,7 @@ test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} d res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) end test "if user is authenticated", %{local: local, remote: remote} do @@ -448,9 +463,11 @@ test "if user is authenticated", %{local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) end end @@ -463,6 +480,7 @@ test "if user is authenticated", %{local: local, remote: remote} do test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") @@ -476,9 +494,11 @@ test "if user is authenticated", %{local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") assert length(json_response(res_conn, 200)) == 1 + assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) end end From bd6e2b300f82e66afb121c2339c3cbbfb0b1a446 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 8 Apr 2020 23:16:20 +0400 Subject: [PATCH 029/137] Add spec for AccountController.followers --- .../api_spec/operations/account_operation.ex | 19 ++++++++++++++++++- .../web/api_spec/schemas/accounts_response.ex | 13 +++++++++++++ .../controllers/account_controller.ex | 8 +++++++- .../controllers/account_controller_test.exs | 4 ++++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/accounts_response.ex diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 09e6d24ed..070c74758 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -11,6 +11,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest alias Pleroma.Web.ApiSpec.Schemas.BooleanLike alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse @@ -139,7 +140,23 @@ def statuses_operation do end def followers_operation do - :ok + %Operation{ + tags: ["accounts"], + summary: "Followers", + operationId: "AccountController.followers", + security: [%{"oAuth" => ["read:accounts"]}], + description: + "Accounts which follow the given account, if network is not hidden by the account owner.", + parameters: [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, + Operation.parameter(:max_id, :query, :string, "Max ID"), + Operation.parameter(:since_id, :query, :string, "Since ID"), + Operation.parameter(:limit, :query, :integer, "Limit") + ], + responses: %{ + 200 => Operation.response("Accounts", "application/json", AccountsResponse) + } + } end def following_operation, do: :ok diff --git a/lib/pleroma/web/api_spec/schemas/accounts_response.ex b/lib/pleroma/web/api_spec/schemas/accounts_response.ex new file mode 100644 index 000000000..b714f59e7 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/accounts_response.ex @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountsResponse do + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountsResponse", + type: :array, + items: Pleroma.Web.ApiSpec.Schemas.Account + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 208df5698..1ffccdd1d 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -89,7 +89,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :update_credentials, :relationships, :show, - :statuses + :statuses, + :followers ] ) @@ -284,6 +285,11 @@ def statuses(%{assigns: %{user: reading_user}} = conn, params) do @doc "GET /api/v1/accounts/:id/followers" def followers(%{assigns: %{user: for_user, account: user}} = conn, params) do + params = + params + |> Enum.map(fn {key, value} -> {to_string(key), value} end) + |> Enum.into(%{}) + followers = cond do for_user && user.id == for_user.id -> MastodonAPI.get_followers(user, params) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 969256fa4..79b3adc69 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -513,6 +513,7 @@ test "getting followers", %{user: user, conn: conn} do assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(user.id) + assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end test "getting followers, hide_followers", %{user: user, conn: conn} do @@ -536,6 +537,7 @@ test "getting followers, hide_followers, same user requesting" do |> get("/api/v1/accounts/#{other_user.id}/followers") refute [] == json_response(conn, 200) + assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end test "getting followers, pagination", %{user: user, conn: conn} do @@ -551,6 +553,7 @@ test "getting followers, pagination", %{user: user, conn: conn} do assert [%{"id" => id3}, %{"id" => id2}] = json_response(res_conn, 200) assert id3 == follower3.id assert id2 == follower2.id + assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{user.id}/followers?max_id=#{follower3.id}") @@ -566,6 +569,7 @@ test "getting followers, pagination", %{user: user, conn: conn} do assert [link_header] = get_resp_header(res_conn, "link") assert link_header =~ ~r/min_id=#{follower2.id}/ assert link_header =~ ~r/max_id=#{follower2.id}/ + assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) end end From e105cc12b67e44eb4e19293b850731f300999a4f Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 8 Apr 2020 23:38:07 +0400 Subject: [PATCH 030/137] Add spec for AccountController.following --- .../api_spec/operations/account_operation.ex | 35 +++++++++++++++++-- .../controllers/account_controller.ex | 8 ++++- .../controllers/account_controller_test.exs | 5 +++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 070c74758..456d08a45 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -150,8 +150,40 @@ def followers_operation do parameters: [ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, Operation.parameter(:max_id, :query, :string, "Max ID"), + Operation.parameter(:min_id, :query, :string, "Mix ID"), Operation.parameter(:since_id, :query, :string, "Since ID"), - Operation.parameter(:limit, :query, :integer, "Limit") + Operation.parameter( + :limit, + :query, + %Schema{type: :integer, default: 20, maximum: 40}, + "Limit" + ) + ], + responses: %{ + 200 => Operation.response("Accounts", "application/json", AccountsResponse) + } + } + end + + def following_operation do + %Operation{ + tags: ["accounts"], + summary: "Following", + operationId: "AccountController.following", + security: [%{"oAuth" => ["read:accounts"]}], + description: + "Accounts which the given account is following, if network is not hidden by the account owner.", + parameters: [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, + Operation.parameter(:max_id, :query, :string, "Max ID"), + Operation.parameter(:min_id, :query, :string, "Mix ID"), + Operation.parameter(:since_id, :query, :string, "Since ID"), + Operation.parameter( + :limit, + :query, + %Schema{type: :integer, default: 20, maximum: 40}, + "Limit" + ) ], responses: %{ 200 => Operation.response("Accounts", "application/json", AccountsResponse) @@ -159,7 +191,6 @@ def followers_operation do } end - def following_operation, do: :ok def lists_operation, do: :ok def follow_operation, do: :ok def unfollow_operation, do: :ok diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 1ffccdd1d..e74180662 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -90,7 +90,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :relationships, :show, :statuses, - :followers + :followers, + :following ] ) @@ -304,6 +305,11 @@ def followers(%{assigns: %{user: for_user, account: user}} = conn, params) do @doc "GET /api/v1/accounts/:id/following" def following(%{assigns: %{user: for_user, account: user}} = conn, params) do + params = + params + |> Enum.map(fn {key, value} -> {to_string(key), value} end) + |> Enum.into(%{}) + followers = cond do for_user && user.id == for_user.id -> MastodonAPI.get_friends(user, params) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 79b3adc69..341c9b015 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -584,6 +584,7 @@ test "getting following", %{user: user, conn: conn} do assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(other_user.id) + assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end test "getting following, hide_follows, other user requesting" do @@ -598,6 +599,7 @@ test "getting following, hide_follows, other user requesting" do |> get("/api/v1/accounts/#{user.id}/following") assert [] == json_response(conn, 200) + assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end test "getting following, hide_follows, same user requesting" do @@ -627,12 +629,14 @@ test "getting following, pagination", %{user: user, conn: conn} do assert [%{"id" => id3}, %{"id" => id2}] = json_response(res_conn, 200) assert id3 == following3.id assert id2 == following2.id + assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{user.id}/following?max_id=#{following3.id}") assert [%{"id" => id2}, %{"id" => id1}] = json_response(res_conn, 200) assert id2 == following2.id assert id1 == following1.id + assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{user.id}/following?limit=1&max_id=#{following3.id}") @@ -643,6 +647,7 @@ test "getting following, pagination", %{user: user, conn: conn} do assert [link_header] = get_resp_header(res_conn, "link") assert link_header =~ ~r/min_id=#{following2.id}/ assert link_header =~ ~r/max_id=#{following2.id}/ + assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) end end From 1b680a98ae15035215fa8489f825af72532340c4 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 8 Apr 2020 23:51:46 +0400 Subject: [PATCH 031/137] Add spec for AccountController.lists --- .../api_spec/operations/account_operation.ex | 18 ++++++++++++- lib/pleroma/web/api_spec/schemas/list.ex | 25 +++++++++++++++++++ .../web/api_spec/schemas/lists_response.ex | 16 ++++++++++++ .../controllers/account_controller.ex | 3 ++- .../controllers/account_controller_test.exs | 1 + 5 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/list.ex create mode 100644 lib/pleroma/web/api_spec/schemas/lists_response.ex diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 456d08a45..ad10f4ec9 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -14,6 +14,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest alias Pleroma.Web.ApiSpec.Schemas.BooleanLike + alias Pleroma.Web.ApiSpec.Schemas.ListsResponse alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope @@ -191,7 +192,22 @@ def following_operation do } end - def lists_operation, do: :ok + def lists_operation do + %Operation{ + tags: ["accounts"], + summary: "Lists containing this account", + operationId: "AccountController.lists", + security: [%{"oAuth" => ["read:lists"]}], + description: "User lists that you have added this account to.", + parameters: [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"} + ], + responses: %{ + 200 => Operation.response("Lists", "application/json", ListsResponse) + } + } + end + def follow_operation, do: :ok def unfollow_operation, do: :ok def mute_operation, do: :ok diff --git a/lib/pleroma/web/api_spec/schemas/list.ex b/lib/pleroma/web/api_spec/schemas/list.ex new file mode 100644 index 000000000..30fa7db93 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/list.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.List do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "List", + description: "Response schema for a list", + type: :object, + properties: %{ + id: %Schema{type: :string}, + title: %Schema{type: :string} + }, + example: %{ + "JSON" => %{ + "id" => "123", + "title" => "my list" + } + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/lists_response.ex b/lib/pleroma/web/api_spec/schemas/lists_response.ex new file mode 100644 index 000000000..132454579 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/lists_response.ex @@ -0,0 +1,16 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.ListsResponse do + alias Pleroma.Web.ApiSpec.Schemas.List + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "ListsResponse", + description: "Response schema for lists", + type: :array, + items: List + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index e74180662..2c5cd8cde 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -91,7 +91,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :show, :statuses, :followers, - :following + :following, + :lists ] ) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 341c9b015..706eea5d9 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -1051,6 +1051,7 @@ test "returns lists to which the account belongs" do |> json_response(200) assert res == [%{"id" => to_string(list.id), "title" => "Test List"}] + assert_schema(res, "ListsResponse", ApiSpec.spec()) end end From 854780c72bc90a55d7005a05861d45771c5aeadf Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 9 Apr 2020 15:25:24 +0400 Subject: [PATCH 032/137] Add spec for AccountController.follow --- lib/pleroma/web/api_spec.ex | 2 +- .../api_spec/operations/account_operation.ex | 28 +++++++++++---- ...ip_response.ex => account_relationship.ex} | 36 ++++++++++--------- .../schemas/account_relationships_response.ex | 5 ++- .../controllers/account_controller.ex | 7 ++-- .../controllers/account_controller_test.exs | 1 + 6 files changed, 51 insertions(+), 28 deletions(-) rename lib/pleroma/web/api_spec/schemas/{account_relationship_response.ex => account_relationship.ex} (71%) diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex index d11e776d0..b3c1e3ea2 100644 --- a/lib/pleroma/web/api_spec.ex +++ b/lib/pleroma/web/api_spec.ex @@ -39,7 +39,7 @@ def spec do password: %OpenApiSpex.OAuthFlow{ authorizationUrl: "/oauth/authorize", tokenUrl: "/oauth/token", - scopes: %{"read" => "read", "write" => "write"} + scopes: %{"read" => "read", "write" => "write", "follow" => "follow"} } } } diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index ad10f4ec9..a76141f7a 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest @@ -186,9 +187,7 @@ def following_operation do "Limit" ) ], - responses: %{ - 200 => Operation.response("Accounts", "application/json", AccountsResponse) - } + responses: %{200 => Operation.response("Accounts", "application/json", AccountsResponse)} } end @@ -199,16 +198,33 @@ def lists_operation do operationId: "AccountController.lists", security: [%{"oAuth" => ["read:lists"]}], description: "User lists that you have added this account to.", + parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], + responses: %{200 => Operation.response("Lists", "application/json", ListsResponse)} + } + end + + def follow_operation do + %Operation{ + tags: ["accounts"], + summary: "Follow", + operationId: "AccountController.follow", + security: [%{"oAuth" => ["follow", "write:follows"]}], + description: "Follow the given account", parameters: [ - %Reference{"$ref": "#/components/parameters/accountIdOrNickname"} + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, + Operation.parameter( + :reblogs, + :query, + BooleanLike, + "Receive this account's reblogs in home timeline? Defaults to true." + ) ], responses: %{ - 200 => Operation.response("Lists", "application/json", ListsResponse) + 200 => Operation.response("Relationship", "application/json", AccountRelationship) } } end - def follow_operation, do: :ok def unfollow_operation, do: :ok def mute_operation, do: :ok def unmute_operation, do: :ok diff --git a/lib/pleroma/web/api_spec/schemas/account_relationship_response.ex b/lib/pleroma/web/api_spec/schemas/account_relationship.ex similarity index 71% rename from lib/pleroma/web/api_spec/schemas/account_relationship_response.ex rename to lib/pleroma/web/api_spec/schemas/account_relationship.ex index 9974b946b..7db3b49bb 100644 --- a/lib/pleroma/web/api_spec/schemas/account_relationship_response.ex +++ b/lib/pleroma/web/api_spec/schemas/account_relationship.ex @@ -2,41 +2,43 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipResponse do +defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationship do alias OpenApiSpex.Schema require OpenApiSpex OpenApiSpex.schema(%{ - title: "AccountRelationshipResponse", - description: "Response schema for an account relationship", + title: "AccountRelationship", + description: "Response schema for relationship", type: :object, properties: %{ - id: %Schema{type: :string}, - following: %Schema{type: :boolean}, - showing_reblogs: %Schema{type: :boolean}, - followed_by: %Schema{type: :boolean}, - blocking: %Schema{type: :boolean}, blocked_by: %Schema{type: :boolean}, + blocking: %Schema{type: :boolean}, + domain_blocking: %Schema{type: :boolean}, + endorsed: %Schema{type: :boolean}, + followed_by: %Schema{type: :boolean}, + following: %Schema{type: :boolean}, + id: %Schema{type: :string}, muting: %Schema{type: :boolean}, muting_notifications: %Schema{type: :boolean}, requested: %Schema{type: :boolean}, - domain_blocking: %Schema{type: :boolean}, - endorsed: %Schema{type: :boolean} + showing_reblogs: %Schema{type: :boolean}, + subscribing: %Schema{type: :boolean} }, example: %{ "JSON" => %{ - "id" => "1", - "following" => true, - "showing_reblogs" => true, - "followed_by" => true, - "blocking" => false, "blocked_by" => false, + "blocking" => false, + "domain_blocking" => false, + "endorsed" => false, + "followed_by" => false, + "following" => false, + "id" => "9tKi3esbG7OQgZ2920", "muting" => false, "muting_notifications" => false, "requested" => false, - "domain_blocking" => false, - "endorsed" => false + "showing_reblogs" => true, + "subscribing" => false } } }) diff --git a/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex b/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex index 2ca632310..960e14db1 100644 --- a/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex +++ b/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse do title: "AccountRelationshipsResponse", description: "Response schema for account relationships", type: :array, - items: Pleroma.Web.ApiSpec.Schemas.AccountRelationshipResponse, + items: Pleroma.Web.ApiSpec.Schemas.AccountRelationship, example: [ %{ "id" => "1", @@ -22,6 +22,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse do "muting_notifications" => false, "requested" => false, "domain_blocking" => false, + "subscribing" => false, "endorsed" => true }, %{ @@ -35,6 +36,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse do "muting_notifications" => false, "requested" => true, "domain_blocking" => false, + "subscribing" => false, "endorsed" => false }, %{ @@ -48,6 +50,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse do "muting_notifications" => false, "requested" => false, "domain_blocking" => true, + "subscribing" => true, "endorsed" => false } ] diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 2c5cd8cde..d2ad65ef3 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -92,7 +92,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :statuses, :followers, :following, - :lists + :lists, + :follow ] ) @@ -337,8 +338,8 @@ def follow(%{assigns: %{user: %{id: id}, account: %{id: id}}}, _params) do {:error, :not_found} end - def follow(%{assigns: %{user: follower, account: followed}} = conn, _params) do - with {:ok, follower} <- MastodonAPI.follow(follower, followed, conn.params) do + def follow(%{assigns: %{user: follower, account: followed}} = conn, params) do + with {:ok, follower} <- MastodonAPI.follow(follower, followed, params) do render(conn, "relationship.json", user: follower, target: followed) else {:error, message} -> json_response(conn, :forbidden, %{error: message}) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 706eea5d9..7a3d58600 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -669,6 +669,7 @@ test "following / unfollowing a user", %{conn: conn} do assert %{"id" => id} = json_response(conn, 200) assert id == to_string(other_user.id) + assert_schema(json_response(conn, 200), "AccountRelationship", ApiSpec.spec()) end test "cancelling follow request", %{conn: conn} do From aa958a6dda7cdcf12e9cd9232e7c6be421610317 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 9 Apr 2020 17:57:21 +0400 Subject: [PATCH 033/137] Add spec for AccountController.unfollow --- .../web/api_spec/operations/account_operation.ex | 15 ++++++++++++++- .../controllers/account_controller.ex | 3 ++- .../controllers/account_controller_test.exs | 16 ++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index a76141f7a..8925ebefd 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -225,7 +225,20 @@ def follow_operation do } end - def unfollow_operation, do: :ok + def unfollow_operation do + %Operation{ + tags: ["accounts"], + summary: "Unfollow", + operationId: "AccountController.unfollow", + security: [%{"oAuth" => ["follow", "write:follows"]}], + description: "Unfollow the given account", + parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], + responses: %{ + 200 => Operation.response("Relationship", "application/json", AccountRelationship) + } + } + end + def mute_operation, do: :ok def unmute_operation, do: :ok def block_operation, do: :ok diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index d2ad65ef3..1ecce2928 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -93,7 +93,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :followers, :following, :lists, - :follow + :follow, + :unfollow ] ) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 7a3d58600..d56e7fb4a 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -660,10 +660,12 @@ test "following / unfollowing a user", %{conn: conn} do ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/follow") assert %{"id" => _id, "following" => true} = json_response(ret_conn, 200) + assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/unfollow") assert %{"id" => _id, "following" => false} = json_response(ret_conn, 200) + assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) conn = post(conn, "/api/v1/follows", %{"uri" => other_user.nickname}) @@ -675,11 +677,15 @@ test "following / unfollowing a user", %{conn: conn} do test "cancelling follow request", %{conn: conn} do %{id: other_user_id} = insert(:user, %{locked: true}) - assert %{"id" => ^other_user_id, "following" => false, "requested" => true} = - conn |> post("/api/v1/accounts/#{other_user_id}/follow") |> json_response(:ok) + resp = conn |> post("/api/v1/accounts/#{other_user_id}/follow") |> json_response(:ok) - assert %{"id" => ^other_user_id, "following" => false, "requested" => false} = - conn |> post("/api/v1/accounts/#{other_user_id}/unfollow") |> json_response(:ok) + assert %{"id" => ^other_user_id, "following" => false, "requested" => true} = resp + assert_schema(resp, "AccountRelationship", ApiSpec.spec()) + + resp = conn |> post("/api/v1/accounts/#{other_user_id}/unfollow") |> json_response(:ok) + + assert %{"id" => ^other_user_id, "following" => false, "requested" => false} = resp + assert_schema(resp, "AccountRelationship", ApiSpec.spec()) end test "following without reblogs" do @@ -690,6 +696,7 @@ test "following without reblogs" do ret_conn = post(conn, "/api/v1/accounts/#{followed.id}/follow?reblogs=false") assert %{"showing_reblogs" => false} = json_response(ret_conn, 200) + assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) {:ok, activity} = CommonAPI.post(other_user, %{"status" => "hey"}) {:ok, reblog, _} = CommonAPI.repeat(activity.id, followed) @@ -701,6 +708,7 @@ test "following without reblogs" do ret_conn = post(conn, "/api/v1/accounts/#{followed.id}/follow?reblogs=true") assert %{"showing_reblogs" => true} = json_response(ret_conn, 200) + assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) conn = get(conn, "/api/v1/timelines/home") From e4195d4a684908d58482f9c865375a080e7b78bc Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 9 Apr 2020 18:28:14 +0400 Subject: [PATCH 034/137] Add specs for AccountController.mute and AccountController.unmute --- .../api_spec/operations/account_operation.ex | 41 ++++++++++++++++++- .../api_spec/schemas/account_mute_request.ex | 24 +++++++++++ .../controllers/account_controller.ex | 10 ++--- .../controllers/account_controller_test.exs | 13 +++++- 4 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/account_mute_request.ex diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 8925ebefd..62ae2eead 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountMuteRequest alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse @@ -239,8 +240,44 @@ def unfollow_operation do } end - def mute_operation, do: :ok - def unmute_operation, do: :ok + def mute_operation do + %Operation{ + tags: ["accounts"], + summary: "Mute", + operationId: "AccountController.mute", + security: [%{"oAuth" => ["follow", "write:mutes"]}], + requestBody: Helpers.request_body("Parameters", AccountMuteRequest), + description: + "Mute the given account. Clients should filter statuses and notifications from this account, if received (e.g. due to a boost in the Home timeline).", + parameters: [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, + Operation.parameter( + :notifications, + :query, + %Schema{allOf: [BooleanLike], default: true}, + "Mute notifications in addition to statuses? Defaults to `true`." + ) + ], + responses: %{ + 200 => Operation.response("Relationship", "application/json", AccountRelationship) + } + } + end + + def unmute_operation do + %Operation{ + tags: ["accounts"], + summary: "Unmute", + operationId: "AccountController.unmute", + security: [%{"oAuth" => ["follow", "write:mutes"]}], + description: "Unmute the given account.", + parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], + responses: %{ + 200 => Operation.response("Relationship", "application/json", AccountRelationship) + } + } + end + def block_operation, do: :ok def unblock_operation, do: :ok def follows_operation, do: :ok diff --git a/lib/pleroma/web/api_spec/schemas/account_mute_request.ex b/lib/pleroma/web/api_spec/schemas/account_mute_request.ex new file mode 100644 index 000000000..a61f6d04c --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_mute_request.ex @@ -0,0 +1,24 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountMuteRequest do + alias OpenApiSpex.Schema + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountMuteRequest", + description: "POST body for muting an account", + type: :object, + properties: %{ + notifications: %Schema{ + type: :boolean, + description: "Mute notifications in addition to statuses? Defaults to true.", + default: true + } + }, + example: %{ + "notifications" => true + } + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 1ecce2928..9aba2e094 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -94,7 +94,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :following, :lists, :follow, - :unfollow + :unfollow, + :mute, + :unmute ] ) @@ -359,10 +361,8 @@ def unfollow(%{assigns: %{user: follower, account: followed}} = conn, _params) d end @doc "POST /api/v1/accounts/:id/mute" - def mute(%{assigns: %{user: muter, account: muted}} = conn, params) do - notifications? = params |> Map.get("notifications", true) |> truthy_param?() - - with {:ok, _user_relationships} <- User.mute(muter, muted, notifications?) do + def mute(%{assigns: %{user: muter, account: muted}, body_params: params} = conn, _params) do + with {:ok, _user_relationships} <- User.mute(muter, muted, params.notifications) do render(conn, "relationship.json", user: muter, target: muted) else {:error, message} -> json_response(conn, :forbidden, %{error: message}) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index d56e7fb4a..91d4685cb 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -751,32 +751,41 @@ test "following / unfollowing errors", %{user: user, conn: conn} do test "with notifications", %{conn: conn} do other_user = insert(:user) - ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/mute") + ret_conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/accounts/#{other_user.id}/mute") response = json_response(ret_conn, 200) assert %{"id" => _id, "muting" => true, "muting_notifications" => true} = response + assert_schema(response, "AccountRelationship", ApiSpec.spec()) conn = post(conn, "/api/v1/accounts/#{other_user.id}/unmute") response = json_response(conn, 200) assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = response + assert_schema(response, "AccountRelationship", ApiSpec.spec()) end test "without notifications", %{conn: conn} do other_user = insert(:user) ret_conn = - post(conn, "/api/v1/accounts/#{other_user.id}/mute", %{"notifications" => "false"}) + conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v1/accounts/#{other_user.id}/mute", %{"notifications" => "false"}) response = json_response(ret_conn, 200) assert %{"id" => _id, "muting" => true, "muting_notifications" => false} = response + assert_schema(response, "AccountRelationship", ApiSpec.spec()) conn = post(conn, "/api/v1/accounts/#{other_user.id}/unmute") response = json_response(conn, 200) assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = response + assert_schema(response, "AccountRelationship", ApiSpec.spec()) end end From 68a979b8243b9a5b685df2c13388a93b9ede1900 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 9 Apr 2020 18:41:18 +0400 Subject: [PATCH 035/137] Add specs for AccountController.block and AccountController.unblock --- .../api_spec/operations/account_operation.ex | 31 +++++++++++++++++-- .../controllers/account_controller.ex | 4 ++- .../controllers/account_controller_test.exs | 2 ++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 62ae2eead..73fbe8785 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -278,8 +278,35 @@ def unmute_operation do } end - def block_operation, do: :ok - def unblock_operation, do: :ok + def block_operation do + %Operation{ + tags: ["accounts"], + summary: "Block", + operationId: "AccountController.block", + security: [%{"oAuth" => ["follow", "write:blocks"]}], + description: + "Block the given account. Clients should filter statuses from this account if received (e.g. due to a boost in the Home timeline)", + parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], + responses: %{ + 200 => Operation.response("Relationship", "application/json", AccountRelationship) + } + } + end + + def unblock_operation do + %Operation{ + tags: ["accounts"], + summary: "Unblock", + operationId: "AccountController.unblock", + security: [%{"oAuth" => ["follow", "write:blocks"]}], + description: "Unblock the given account.", + parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], + responses: %{ + 200 => Operation.response("Relationship", "application/json", AccountRelationship) + } + } + end + def follows_operation, do: :ok def mutes_operation, do: :ok def blocks_operation, do: :ok diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 9aba2e094..c1f70f32c 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -96,7 +96,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :follow, :unfollow, :mute, - :unmute + :unmute, + :block, + :unblock ] ) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 91d4685cb..f71b54ade 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -819,10 +819,12 @@ test "blocking / unblocking a user" do ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/block") assert %{"id" => _id, "blocking" => true} = json_response(ret_conn, 200) + assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) conn = post(conn, "/api/v1/accounts/#{other_user.id}/unblock") assert %{"id" => _id, "blocking" => false} = json_response(conn, 200) + assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) end describe "create account by app" do From ab185d3ea47deb38128dc501acdf27c47c542de2 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 9 Apr 2020 20:12:09 +0400 Subject: [PATCH 036/137] Add spec for AccountController.follows --- .../api_spec/operations/account_operation.ex | 15 +++++++++++++- .../schemas/account_follows_request.ex | 18 +++++++++++++++++ .../controllers/account_controller.ex | 5 +++-- .../controllers/account_controller_test.exs | 20 +++++++++++++++---- 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/account_follows_request.ex diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 73fbe8785..9fef7ece1 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse + alias Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest alias Pleroma.Web.ApiSpec.Schemas.AccountMuteRequest alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse @@ -307,7 +308,19 @@ def unblock_operation do } end - def follows_operation, do: :ok + def follows_operation do + %Operation{ + tags: ["accounts"], + summary: "Follows", + operationId: "AccountController.follows", + security: [%{"oAuth" => ["follow", "write:follows"]}], + requestBody: Helpers.request_body("Parameters", AccountFollowsRequest, required: true), + responses: %{ + 200 => Operation.response("Account", "application/json", Account) + } + } + end + def mutes_operation, do: :ok def blocks_operation, do: :ok def endorsements_operation, do: :ok diff --git a/lib/pleroma/web/api_spec/schemas/account_follows_request.ex b/lib/pleroma/web/api_spec/schemas/account_follows_request.ex new file mode 100644 index 000000000..4fbe615d6 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/account_follows_request.ex @@ -0,0 +1,18 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest do + alias OpenApiSpex.Schema + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "AccountFollowsRequest", + description: "POST body for muting an account", + type: :object, + properties: %{ + uri: %Schema{type: :string} + }, + required: [:uri] + }) +end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index c1f70f32c..4340b9c84 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -98,7 +98,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do :mute, :unmute, :block, - :unblock + :unblock, + :follows ] ) @@ -401,7 +402,7 @@ def unblock(%{assigns: %{user: blocker, account: blocked}} = conn, _params) do end @doc "POST /api/v1/follows" - def follows(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do + def follows(%{assigns: %{user: follower}, body_params: %{uri: uri}} = conn, _) do with {_, %User{} = followed} <- {:followed, User.get_cached_by_nickname(uri)}, {_, true} <- {:followed, follower.id != followed.id}, {:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index f71b54ade..fa2091c5e 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -667,11 +667,14 @@ test "following / unfollowing a user", %{conn: conn} do assert %{"id" => _id, "following" => false} = json_response(ret_conn, 200) assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) - conn = post(conn, "/api/v1/follows", %{"uri" => other_user.nickname}) + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/follows", %{"uri" => other_user.nickname}) assert %{"id" => id} = json_response(conn, 200) assert id == to_string(other_user.id) - assert_schema(json_response(conn, 200), "AccountRelationship", ApiSpec.spec()) + assert_schema(json_response(conn, 200), "Account", ApiSpec.spec()) end test "cancelling follow request", %{conn: conn} do @@ -728,7 +731,12 @@ test "following / unfollowing errors", %{user: user, conn: conn} do # self follow via uri user = User.get_cached_by_id(user.id) - conn_res = post(conn, "/api/v1/follows", %{"uri" => user.nickname}) + + conn_res = + conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v1/follows", %{"uri" => user.nickname}) + assert %{"error" => "Record not found"} = json_response(conn_res, 404) # follow non existing user @@ -736,7 +744,11 @@ test "following / unfollowing errors", %{user: user, conn: conn} do assert %{"error" => "Record not found"} = json_response(conn_res, 404) # follow non existing user via uri - conn_res = post(conn, "/api/v1/follows", %{"uri" => "doesntexist"}) + conn_res = + conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v1/follows", %{"uri" => "doesntexist"}) + assert %{"error" => "Record not found"} = json_response(conn_res, 404) # unfollow non existing user From 7e0b42d99f3eb9520bc29cc29c06512c55183482 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 9 Apr 2020 20:34:21 +0400 Subject: [PATCH 037/137] Add specs for AccountController.mutes, AccountController.blocks, AccountController.mutes, AccountController.endorsements --- .../api_spec/operations/account_operation.ex | 41 +++++++++++++++++-- .../controllers/account_controller.ex | 23 +---------- .../controllers/account_controller_test.exs | 2 + 3 files changed, 41 insertions(+), 25 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 9fef7ece1..9749c3b60 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -321,7 +321,42 @@ def follows_operation do } end - def mutes_operation, do: :ok - def blocks_operation, do: :ok - def endorsements_operation, do: :ok + def mutes_operation do + %Operation{ + tags: ["accounts"], + summary: "Muted accounts", + operationId: "AccountController.mutes", + description: "Accounts the user has muted.", + security: [%{"oAuth" => ["follow", "read:mutes"]}], + responses: %{ + 200 => Operation.response("Accounts", "application/json", AccountsResponse) + } + } + end + + def blocks_operation do + %Operation{ + tags: ["accounts"], + summary: "Blocked users", + operationId: "AccountController.blocks", + description: "View your blocks. See also accounts/:id/{block,unblock}", + security: [%{"oAuth" => ["read:blocks"]}], + responses: %{ + 200 => Operation.response("Accounts", "application/json", AccountsResponse) + } + } + end + + def endorsements_operation do + %Operation{ + tags: ["accounts"], + summary: "Endorsements", + operationId: "AccountController.endorsements", + description: "Not implemented", + security: [%{"oAuth" => ["read:accounts"]}], + responses: %{ + 200 => Operation.response("Empry array", "application/json", %Schema{type: :array}) + } + } + end end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 4340b9c84..f72c91c51 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -80,28 +80,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug(RateLimiter, [name: :app_account_creation] when action == :create) plug(:assign_account_by_id when action in @needs_account) - plug( - OpenApiSpex.Plug.CastAndValidate, - [render_error: Pleroma.Web.ApiSpec.RenderError] - when action in [ - :create, - :verify_credentials, - :update_credentials, - :relationships, - :show, - :statuses, - :followers, - :following, - :lists, - :follow, - :unfollow, - :mute, - :unmute, - :block, - :unblock, - :follows - ] - ) + plug(OpenApiSpex.Plug.CastAndValidate, render_error: Pleroma.Web.ApiSpec.RenderError) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index fa2091c5e..86136f7e4 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -1155,6 +1155,7 @@ test "getting a list of mutes" do other_user_id = to_string(other_user.id) assert [%{"id" => ^other_user_id}] = json_response(conn, 200) + assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end test "getting a list of blocks" do @@ -1170,5 +1171,6 @@ test "getting a list of blocks" do other_user_id = to_string(other_user.id) assert [%{"id" => ^other_user_id}] = json_response(conn, 200) + assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end end From c28aaf9d82a781508eba886bd455767a110d1b7c Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 13 Apr 2020 21:21:04 +0400 Subject: [PATCH 038/137] Add OpenAPI spec for CustomEmojiController --- .../operations/custom_emoji_operation.ex | 25 +++++++++++ .../web/api_spec/schemas/custom_emoji.ex | 30 +++++++++++++ .../schemas/custom_emojis_response.ex | 42 +++++++++++++++++++ .../controllers/custom_emoji_controller.ex | 4 ++ .../custom_emoji_controller_test.exs | 27 ++++++++++-- 5 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex create mode 100644 lib/pleroma/web/api_spec/schemas/custom_emoji.ex create mode 100644 lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex diff --git a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex new file mode 100644 index 000000000..cf2215823 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.CustomEmojiOperation do + alias OpenApiSpex.Operation + alias Pleroma.Web.ApiSpec.Schemas.CustomEmojisResponse + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["custom_emojis"], + summary: "List custom custom emojis", + description: "Returns custom emojis that are available on the server.", + operationId: "CustomEmojiController.index", + responses: %{ + 200 => Operation.response("Custom Emojis", "application/json", CustomEmojisResponse) + } + } + end +end diff --git a/lib/pleroma/web/api_spec/schemas/custom_emoji.ex b/lib/pleroma/web/api_spec/schemas/custom_emoji.ex new file mode 100644 index 000000000..5531b2081 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/custom_emoji.ex @@ -0,0 +1,30 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.CustomEmoji do + alias OpenApiSpex.Schema + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "CustomEmoji", + description: "Response schema for an CustomEmoji", + type: :object, + properties: %{ + shortcode: %Schema{type: :string}, + url: %Schema{type: :string}, + static_url: %Schema{type: :string}, + visible_in_picker: %Schema{type: :boolean}, + category: %Schema{type: :string}, + tags: %Schema{type: :array} + }, + example: %{ + "shortcode" => "aaaa", + "url" => "https://files.mastodon.social/custom_emojis/images/000/007/118/original/aaaa.png", + "static_url" => + "https://files.mastodon.social/custom_emojis/images/000/007/118/static/aaaa.png", + "visible_in_picker" => true + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex b/lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex new file mode 100644 index 000000000..01582a63d --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex @@ -0,0 +1,42 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.CustomEmojisResponse do + alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "CustomEmojisResponse", + description: "Response schema for custom emojis", + type: :array, + items: CustomEmoji, + example: [ + %{ + "category" => "Fun", + "shortcode" => "blank", + "static_url" => "https://lain.com/emoji/blank.png", + "tags" => ["Fun"], + "url" => "https://lain.com/emoji/blank.png", + "visible_in_picker" => true + }, + %{ + "category" => "Gif,Fun", + "shortcode" => "firefox", + "static_url" => "https://lain.com/emoji/Firefox.gif", + "tags" => ["Gif", "Fun"], + "url" => "https://lain.com/emoji/Firefox.gif", + "visible_in_picker" => true + }, + %{ + "category" => "pack:mixed", + "shortcode" => "sadcat", + "static_url" => "https://lain.com/emoji/mixed/sadcat.png", + "tags" => ["pack:mixed"], + "url" => "https://lain.com/emoji/mixed/sadcat.png", + "visible_in_picker" => true + } + ] + }) +end 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 d82de1db5..3bfebef8b 100644 --- a/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex @@ -5,6 +5,10 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiController do use Pleroma.Web, :controller + plug(OpenApiSpex.Plug.CastAndValidate) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.CustomEmojiOperation + def index(conn, _params) do render(conn, "index.json", custom_emojis: Pleroma.Emoji.get_all()) end diff --git a/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs b/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs index 6567a0667..0b2ffa470 100644 --- a/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs +++ b/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs @@ -4,13 +4,18 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiControllerTest do use Pleroma.Web.ConnCase, async: true + alias Pleroma.Web.ApiSpec + alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji + alias Pleroma.Web.ApiSpec.Schemas.CustomEmojisResponse + import OpenApiSpex.TestAssertions test "with tags", %{conn: conn} do - [emoji | _body] = - conn - |> get("/api/v1/custom_emojis") - |> json_response(200) + assert resp = + conn + |> get("/api/v1/custom_emojis") + |> json_response(200) + assert [emoji | _body] = resp assert Map.has_key?(emoji, "shortcode") assert Map.has_key?(emoji, "static_url") assert Map.has_key?(emoji, "tags") @@ -18,5 +23,19 @@ test "with tags", %{conn: conn} do assert Map.has_key?(emoji, "category") assert Map.has_key?(emoji, "url") assert Map.has_key?(emoji, "visible_in_picker") + assert_schema(resp, "CustomEmojisResponse", ApiSpec.spec()) + assert_schema(emoji, "CustomEmoji", ApiSpec.spec()) + end + + test "CustomEmoji example matches schema" do + api_spec = ApiSpec.spec() + schema = CustomEmoji.schema() + assert_schema(schema.example, "CustomEmoji", api_spec) + end + + test "CustomEmojisResponse example matches schema" do + api_spec = ApiSpec.spec() + schema = CustomEmojisResponse.schema() + assert_schema(schema.example, "CustomEmojisResponse", api_spec) end end From f7e623c11c4b6f4f323a4317e9489092be73f9cd Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 14 Apr 2020 20:19:08 +0300 Subject: [PATCH 039/137] [#1364] Resolved merge conflicts with `develop`. --- lib/pleroma/notification.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index f517282f7..b76dd176c 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Notification do alias Pleroma.Activity alias Pleroma.FollowingRelationship - alias Pleroma.Marker alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Pagination From d3e876aeeebfcdd2821ef8310bd60b785e6df560 Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 10:26:44 +0000 Subject: [PATCH 040/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 9749c3b60..7ead44197 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -120,7 +120,8 @@ def statuses_operation do Operation.parameter(:tagged, :query, :string, "With tag"), Operation.parameter(:only_media, :query, BooleanLike, "Only meadia"), Operation.parameter(:with_muted, :query, BooleanLike, "With muted"), - Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblobs"), + Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), + Operation.parameter( :exclude_visibilities, :query, From a7feca1604fe7f22d10c0fd3284f14eae8609852 Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 10:26:53 +0000 Subject: [PATCH 041/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 7ead44197..1c726a612 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -119,7 +119,7 @@ def statuses_operation do Operation.parameter(:pinned, :query, BooleanLike, "Pinned"), Operation.parameter(:tagged, :query, :string, "With tag"), Operation.parameter(:only_media, :query, BooleanLike, "Only meadia"), - Operation.parameter(:with_muted, :query, BooleanLike, "With muted"), + Operation.parameter(:with_muted, :query, BooleanLike, "Include statuses from muted acccounts."), Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), Operation.parameter( From a794ba655f5a0a8b5512ad718601e5a03b9aebef Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 10:27:01 +0000 Subject: [PATCH 042/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 1c726a612..6ce2cfe25 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -118,7 +118,7 @@ def statuses_operation do %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, Operation.parameter(:pinned, :query, BooleanLike, "Pinned"), Operation.parameter(:tagged, :query, :string, "With tag"), - Operation.parameter(:only_media, :query, BooleanLike, "Only meadia"), + Operation.parameter(:only_media, :query, BooleanLike, "Include only statuses with media attached"), Operation.parameter(:with_muted, :query, BooleanLike, "Include statuses from muted acccounts."), Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), From bfa26b09370ee049f8d70c4112709f2666c590d1 Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 10:30:19 +0000 Subject: [PATCH 043/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 6ce2cfe25..7d4f7586d 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -129,7 +129,7 @@ def statuses_operation do "Exclude visibilities" ), Operation.parameter(:max_id, :query, :string, "Max ID"), - Operation.parameter(:min_id, :query, :string, "Mix ID"), + Operation.parameter(:min_id, :query, :string, "Return the oldest statuses newer than this id. "), Operation.parameter(:since_id, :query, :string, "Since ID"), Operation.parameter( :limit, From a45bd91d4e79ed354ab3903b195cf74e4327d4d0 Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 10:48:32 +0000 Subject: [PATCH 044/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 7d4f7586d..31dfbb098 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -116,7 +116,7 @@ def statuses_operation do "Statuses posted to the given account. Public (for public statuses only), or user token + `read:statuses` (for private statuses the user is authorized to see)", parameters: [ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, - Operation.parameter(:pinned, :query, BooleanLike, "Pinned"), + Operation.parameter(:pinned, :query, BooleanLike, "Include only pinned statuses"), Operation.parameter(:tagged, :query, :string, "With tag"), Operation.parameter(:only_media, :query, BooleanLike, "Include only statuses with media attached"), Operation.parameter(:with_muted, :query, BooleanLike, "Include statuses from muted acccounts."), From 81a4c15816bf4fbe3e70ba1d34adff5dfaee1cbc Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 10:48:52 +0000 Subject: [PATCH 045/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 31dfbb098..dee28d1aa 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -128,7 +128,7 @@ def statuses_operation do %Schema{type: :array, items: VisibilityScope}, "Exclude visibilities" ), - Operation.parameter(:max_id, :query, :string, "Max ID"), + Operation.parameter(:max_id, :query, :string, "Return statuses older than this id"), Operation.parameter(:min_id, :query, :string, "Return the oldest statuses newer than this id. "), Operation.parameter(:since_id, :query, :string, "Since ID"), Operation.parameter( From 5a2e45a2189514662f46a293f764682daba7b52d Mon Sep 17 00:00:00 2001 From: minibikini Date: Wed, 15 Apr 2020 11:29:10 +0000 Subject: [PATCH 046/137] Apply suggestion to lib/pleroma/web/api_spec/operations/account_operation.ex --- lib/pleroma/web/api_spec/operations/account_operation.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index dee28d1aa..92622e2ff 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -130,7 +130,7 @@ def statuses_operation do ), Operation.parameter(:max_id, :query, :string, "Return statuses older than this id"), Operation.parameter(:min_id, :query, :string, "Return the oldest statuses newer than this id. "), - Operation.parameter(:since_id, :query, :string, "Since ID"), + Operation.parameter(:since_id, :query, :string, "Return the newest statuses newer than this id. "), Operation.parameter( :limit, :query, From 8ed162b65538ee3cb5b125587fd65657b36ca143 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 15 Apr 2020 15:39:32 +0400 Subject: [PATCH 047/137] Fix formatting --- .../api_spec/operations/account_operation.ex | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 92622e2ff..6c9de51bb 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -118,19 +118,38 @@ def statuses_operation do %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, Operation.parameter(:pinned, :query, BooleanLike, "Include only pinned statuses"), Operation.parameter(:tagged, :query, :string, "With tag"), - Operation.parameter(:only_media, :query, BooleanLike, "Include only statuses with media attached"), - Operation.parameter(:with_muted, :query, BooleanLike, "Include statuses from muted acccounts."), + Operation.parameter( + :only_media, + :query, + BooleanLike, + "Include only statuses with media attached" + ), + Operation.parameter( + :with_muted, + :query, + BooleanLike, + "Include statuses from muted acccounts." + ), Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), - Operation.parameter( :exclude_visibilities, :query, %Schema{type: :array, items: VisibilityScope}, "Exclude visibilities" ), - Operation.parameter(:max_id, :query, :string, "Return statuses older than this id"), - Operation.parameter(:min_id, :query, :string, "Return the oldest statuses newer than this id. "), - Operation.parameter(:since_id, :query, :string, "Return the newest statuses newer than this id. "), + Operation.parameter(:max_id, :query, :string, "Return statuses older than this ID"), + Operation.parameter( + :min_id, + :query, + :string, + "Return the oldest statuses newer than this ID" + ), + Operation.parameter( + :since_id, + :query, + :string, + "Return the newest statuses newer than this ID" + ), Operation.parameter( :limit, :query, From 0e647ff55aa3128f45cd9df79b8af06da57c009e Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 15 Apr 2020 16:45:45 +0400 Subject: [PATCH 048/137] Abstract pagination params in OpenAPI spec --- lib/pleroma/web/api_spec/helpers.ex | 22 ++++ .../api_spec/operations/account_operation.ex | 108 ++++++------------ 2 files changed, 57 insertions(+), 73 deletions(-) diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex index 7348dcbee..ce40fb9e8 100644 --- a/lib/pleroma/web/api_spec/helpers.ex +++ b/lib/pleroma/web/api_spec/helpers.ex @@ -3,6 +3,9 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ApiSpec.Helpers do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + def request_body(description, schema_ref, opts \\ []) do media_types = ["application/json", "multipart/form-data", "application/x-www-form-urlencoded"] @@ -24,4 +27,23 @@ def request_body(description, schema_ref, opts \\ []) do required: opts[:required] || false } end + + def pagination_params do + [ + Operation.parameter(:max_id, :query, :string, "Return items older than this ID"), + Operation.parameter(:min_id, :query, :string, "Return the oldest items newer than this ID"), + Operation.parameter( + :since_id, + :query, + :string, + "Return the newest items newer than this ID" + ), + Operation.parameter( + :limit, + :query, + %Schema{type: :integer, default: 20, maximum: 40}, + "Limit" + ) + ] + end end diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 6c9de51bb..fe44a917a 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -6,7 +6,6 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias OpenApiSpex.Operation alias OpenApiSpex.Reference alias OpenApiSpex.Schema - alias Pleroma.Web.ApiSpec.Helpers alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse @@ -21,6 +20,8 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope + import Pleroma.Web.ApiSpec.Helpers + @spec open_api_operation(atom) :: Operation.t() def open_api_operation(action) do operation = String.to_existing_atom("#{action}_operation") @@ -35,7 +36,7 @@ def create_operation do description: "Creates a user and account records. Returns an account access token for the app that initiated the request. The app should save this token for later, and should wait for the user to confirm their account by clicking a link in their email inbox.", operationId: "AccountController.create", - requestBody: Helpers.request_body("Parameters", AccountCreateRequest, required: true), + requestBody: request_body("Parameters", AccountCreateRequest, required: true), responses: %{ 200 => Operation.response("Account", "application/json", AccountCreateResponse) } @@ -62,8 +63,7 @@ def update_credentials_operation do description: "Update the user's display and preferences.", operationId: "AccountController.update_credentials", security: [%{"oAuth" => ["write:accounts"]}], - requestBody: - Helpers.request_body("Parameters", AccountUpdateCredentialsRequest, required: true), + requestBody: request_body("Parameters", AccountUpdateCredentialsRequest, required: true), responses: %{ 200 => Operation.response("Account", "application/json", Account) } @@ -114,49 +114,31 @@ def statuses_operation do operationId: "AccountController.statuses", description: "Statuses posted to the given account. Public (for public statuses only), or user token + `read:statuses` (for private statuses the user is authorized to see)", - parameters: [ - %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, - Operation.parameter(:pinned, :query, BooleanLike, "Include only pinned statuses"), - Operation.parameter(:tagged, :query, :string, "With tag"), - Operation.parameter( - :only_media, - :query, - BooleanLike, - "Include only statuses with media attached" - ), - Operation.parameter( - :with_muted, - :query, - BooleanLike, - "Include statuses from muted acccounts." - ), - Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), - Operation.parameter( - :exclude_visibilities, - :query, - %Schema{type: :array, items: VisibilityScope}, - "Exclude visibilities" - ), - Operation.parameter(:max_id, :query, :string, "Return statuses older than this ID"), - Operation.parameter( - :min_id, - :query, - :string, - "Return the oldest statuses newer than this ID" - ), - Operation.parameter( - :since_id, - :query, - :string, - "Return the newest statuses newer than this ID" - ), - Operation.parameter( - :limit, - :query, - %Schema{type: :integer, default: 20, maximum: 40}, - "Limit" - ) - ], + parameters: + [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, + Operation.parameter(:pinned, :query, BooleanLike, "Include only pinned statuses"), + Operation.parameter(:tagged, :query, :string, "With tag"), + Operation.parameter( + :only_media, + :query, + BooleanLike, + "Include only statuses with media attached" + ), + Operation.parameter( + :with_muted, + :query, + BooleanLike, + "Include statuses from muted acccounts." + ), + Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), + Operation.parameter( + :exclude_visibilities, + :query, + %Schema{type: :array, items: VisibilityScope}, + "Exclude visibilities" + ) + ] ++ pagination_params(), responses: %{ 200 => Operation.response("Statuses", "application/json", StatusesResponse) } @@ -171,18 +153,8 @@ def followers_operation do security: [%{"oAuth" => ["read:accounts"]}], description: "Accounts which follow the given account, if network is not hidden by the account owner.", - parameters: [ - %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, - Operation.parameter(:max_id, :query, :string, "Max ID"), - Operation.parameter(:min_id, :query, :string, "Mix ID"), - Operation.parameter(:since_id, :query, :string, "Since ID"), - Operation.parameter( - :limit, - :query, - %Schema{type: :integer, default: 20, maximum: 40}, - "Limit" - ) - ], + parameters: + [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(), responses: %{ 200 => Operation.response("Accounts", "application/json", AccountsResponse) } @@ -197,18 +169,8 @@ def following_operation do security: [%{"oAuth" => ["read:accounts"]}], description: "Accounts which the given account is following, if network is not hidden by the account owner.", - parameters: [ - %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, - Operation.parameter(:max_id, :query, :string, "Max ID"), - Operation.parameter(:min_id, :query, :string, "Mix ID"), - Operation.parameter(:since_id, :query, :string, "Since ID"), - Operation.parameter( - :limit, - :query, - %Schema{type: :integer, default: 20, maximum: 40}, - "Limit" - ) - ], + parameters: + [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(), responses: %{200 => Operation.response("Accounts", "application/json", AccountsResponse)} } end @@ -267,7 +229,7 @@ def mute_operation do summary: "Mute", operationId: "AccountController.mute", security: [%{"oAuth" => ["follow", "write:mutes"]}], - requestBody: Helpers.request_body("Parameters", AccountMuteRequest), + requestBody: request_body("Parameters", AccountMuteRequest), description: "Mute the given account. Clients should filter statuses and notifications from this account, if received (e.g. due to a boost in the Home timeline).", parameters: [ @@ -334,7 +296,7 @@ def follows_operation do summary: "Follows", operationId: "AccountController.follows", security: [%{"oAuth" => ["follow", "write:follows"]}], - requestBody: Helpers.request_body("Parameters", AccountFollowsRequest, required: true), + requestBody: request_body("Parameters", AccountFollowsRequest, required: true), responses: %{ 200 => Operation.response("Account", "application/json", Account) } From 16f4787bf7e4849192d999eb2177ca7e1a34fbc9 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 15 Apr 2020 16:51:37 +0400 Subject: [PATCH 049/137] Add a TODO note --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 1909ce097..5926a6cad 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1157,6 +1157,8 @@ defp restrict_unlisted(query) do ) end + # TODO: when all endpoints migrated to OpenAPI compare `pinned` with `true` (boolean) only, + # the same for `restrict_media/2`, `restrict_replies/2`, 'restrict_reblogs/2' and `restrict_muted/2` defp restrict_pinned(query, %{"pinned" => pinned, "pinned_activity_ids" => ids}) when pinned in [true, "true", "1"] do from(activity in query, where: activity.id in ^ids) From 65f04b7806e342ed8967e5fa760e1509a776036e Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 15 Apr 2020 17:16:32 +0400 Subject: [PATCH 050/137] Fix credo warning --- lib/pleroma/web/activity_pub/activity_pub.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 5926a6cad..fa913a2aa 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1158,7 +1158,9 @@ defp restrict_unlisted(query) do end # TODO: when all endpoints migrated to OpenAPI compare `pinned` with `true` (boolean) only, - # the same for `restrict_media/2`, `restrict_replies/2`, 'restrict_reblogs/2' and `restrict_muted/2` + # the same for `restrict_media/2`, `restrict_replies/2`, 'restrict_reblogs/2' + # and `restrict_muted/2` + defp restrict_pinned(query, %{"pinned" => pinned, "pinned_activity_ids" => ids}) when pinned in [true, "true", "1"] do from(activity in query, where: activity.id in ^ids) From aa0a4a1e78655024e992f9c677efed45593ab7b8 Mon Sep 17 00:00:00 2001 From: Ilja Date: Wed, 15 Apr 2020 19:03:27 +0200 Subject: [PATCH 051/137] small fix in the rewrite_policy example --- docs/configuration/mrf.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/mrf.md b/docs/configuration/mrf.md index c3957c255..287416b2a 100644 --- a/docs/configuration/mrf.md +++ b/docs/configuration/mrf.md @@ -113,7 +113,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.RewritePolicy do @impl true def describe do - {:ok, %{mrf_sample: %{content: "new message content"}}}` + {:ok, %{mrf_sample: %{content: "new message content"}}} end end ``` From bde1189c349dc114aca2e9310dda840a1007825f Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 15 Apr 2020 21:19:16 +0300 Subject: [PATCH 052/137] [#2349] Made :skip_plug/2 prevent plug from being executed even if explicitly called. Refactoring. Tests. --- lib/pleroma/plugs/auth_expected_plug.ex | 4 ++ lib/pleroma/plugs/oauth_scopes_plug.ex | 6 +-- lib/pleroma/tests/oauth_test_controller.ex | 31 +++++++++++++ lib/pleroma/web/router.ex | 11 +++++ lib/pleroma/web/web.ex | 32 +++++++++++-- test/plugs/oauth_scopes_plug_test.exs | 13 ++++++ test/web/auth/oauth_test_controller_test.exs | 49 ++++++++++++++++++++ 7 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 lib/pleroma/tests/oauth_test_controller.ex create mode 100644 test/web/auth/oauth_test_controller_test.exs diff --git a/lib/pleroma/plugs/auth_expected_plug.ex b/lib/pleroma/plugs/auth_expected_plug.ex index 9e4a4bec8..f79597dc3 100644 --- a/lib/pleroma/plugs/auth_expected_plug.ex +++ b/lib/pleroma/plugs/auth_expected_plug.ex @@ -10,4 +10,8 @@ def init(options), do: options def call(conn, _) do put_private(conn, :auth_expected, true) end + + def auth_expected?(conn) do + conn.private[:auth_expected] + end end diff --git a/lib/pleroma/plugs/oauth_scopes_plug.ex b/lib/pleroma/plugs/oauth_scopes_plug.ex index b09e1bb4d..66f48c28c 100644 --- a/lib/pleroma/plugs/oauth_scopes_plug.ex +++ b/lib/pleroma/plugs/oauth_scopes_plug.ex @@ -10,13 +10,13 @@ defmodule Pleroma.Plugs.OAuthScopesPlug do alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.PlugHelper + use Pleroma.Web, :plug + @behaviour Plug def init(%{scopes: _} = options), do: options - def call(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do - conn = PlugHelper.append_to_called_plugs(conn, __MODULE__) - + def perform(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do op = options[:op] || :| token = assigns[:token] diff --git a/lib/pleroma/tests/oauth_test_controller.ex b/lib/pleroma/tests/oauth_test_controller.ex new file mode 100644 index 000000000..58d517f78 --- /dev/null +++ b/lib/pleroma/tests/oauth_test_controller.ex @@ -0,0 +1,31 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +# A test controller reachable only in :test env. +# Serves to test OAuth scopes check skipping / enforcement. +defmodule Pleroma.Tests.OAuthTestController do + @moduledoc false + + use Pleroma.Web, :controller + + alias Pleroma.Plugs.OAuthScopesPlug + + plug(:skip_plug, OAuthScopesPlug when action == :skipped_oauth) + + plug(OAuthScopesPlug, %{scopes: ["read"]} when action != :missed_oauth) + + def skipped_oauth(conn, _params) do + noop(conn) + end + + def performed_oauth(conn, _params) do + noop(conn) + end + + def missed_oauth(conn, _params) do + noop(conn) + end + + defp noop(conn), do: json(conn, %{}) +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 8d13cd6c9..c85ad9f8b 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -672,6 +672,17 @@ defmodule Pleroma.Web.Router do end end + # Test-only routes needed to test action dispatching and plug chain execution + if Pleroma.Config.get(:env) == :test do + scope "/test/authenticated_api", Pleroma.Tests do + pipe_through(:authenticated_api) + + for action <- [:skipped_oauth, :performed_oauth, :missed_oauth] do + get("/#{action}", OAuthTestController, action) + end + end + end + scope "/", Pleroma.Web.MongooseIM do get("/user_exists", MongooseIMController, :user_exists) get("/check_password", MongooseIMController, :check_password) diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web/web.ex index 1af29ce78..ae7c94640 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web/web.ex @@ -37,15 +37,21 @@ defp set_put_layout(conn, _) do put_layout(conn, Pleroma.Config.get(:app_layout, "app.html")) end - # Marks a plug as intentionally skipped - # (states that the plug is not called for a good reason, not by a mistake) + # Marks a plug intentionally skipped and blocks its execution if it's present in plugs chain defp skip_plug(conn, plug_module) do + try do + plug_module.ensure_skippable() + rescue + UndefinedFunctionError -> + raise "#{plug_module} is not skippable. Append `use Pleroma.Web, :plug` to its code." + end + PlugHelper.append_to_skipped_plugs(conn, plug_module) end # Here we can apply before-action hooks (e.g. verify whether auth checks were preformed) defp action(conn, params) do - if conn.private[:auth_expected] && + if Pleroma.Plugs.AuthExpectedPlug.auth_expected?(conn) && not PlugHelper.plug_called_or_skipped?(conn, Pleroma.Plugs.OAuthScopesPlug) do conn |> render_error( @@ -119,6 +125,26 @@ def channel do end end + def plug do + quote do + alias Pleroma.Plugs.PlugHelper + + def ensure_skippable, do: :noop + + @impl Plug + @doc "If marked as skipped, returns `conn`, and calls `perform/2` otherwise." + def call(%Plug.Conn{} = conn, options) do + if PlugHelper.plug_skipped?(conn, __MODULE__) do + conn + else + conn + |> PlugHelper.append_to_called_plugs(__MODULE__) + |> perform(options) + end + end + end + end + @doc """ When used, dispatch to the appropriate controller/view/etc. """ diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index e79ecf263..abab7abb0 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Plugs.OAuthScopesPlugTest do alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Plugs.PlugHelper alias Pleroma.Repo import Mock @@ -16,6 +17,18 @@ defmodule Pleroma.Plugs.OAuthScopesPlugTest do :ok end + test "is not performed if marked as skipped", %{conn: conn} do + with_mock OAuthScopesPlug, [:passthrough], perform: &passthrough([&1, &2]) do + conn = + conn + |> PlugHelper.append_to_skipped_plugs(OAuthScopesPlug) + |> OAuthScopesPlug.call(%{scopes: ["random_scope"]}) + + refute called(OAuthScopesPlug.perform(:_, :_)) + refute conn.halted + end + end + test "if `token.scopes` fulfills specified 'any of' conditions, " <> "proceeds with no op", %{conn: conn} do diff --git a/test/web/auth/oauth_test_controller_test.exs b/test/web/auth/oauth_test_controller_test.exs new file mode 100644 index 000000000..a2f6009ac --- /dev/null +++ b/test/web/auth/oauth_test_controller_test.exs @@ -0,0 +1,49 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Tests.OAuthTestControllerTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + + setup %{conn: conn} do + user = insert(:user) + conn = assign(conn, :user, user) + %{conn: conn, user: user} + end + + test "missed_oauth", %{conn: conn} do + res = + conn + |> get("/test/authenticated_api/missed_oauth") + |> json_response(403) + + assert res == + %{ + "error" => + "Security violation: OAuth scopes check was neither handled nor explicitly skipped." + } + end + + test "skipped_oauth", %{conn: conn} do + conn + |> assign(:token, nil) + |> get("/test/authenticated_api/skipped_oauth") + |> json_response(200) + end + + test "performed_oauth", %{user: user} do + %{conn: good_token_conn} = oauth_access(["read"], user: user) + + good_token_conn + |> get("/test/authenticated_api/performed_oauth") + |> json_response(200) + + %{conn: bad_token_conn} = oauth_access(["follow"], user: user) + + bad_token_conn + |> get("/test/authenticated_api/performed_oauth") + |> json_response(403) + end +end From cf4ebba77471f188ce7da45df0b9ea76dbe31916 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 15 Apr 2020 22:59:25 +0400 Subject: [PATCH 053/137] Cleanup SubscriptionController --- .../controllers/subscription_controller.ex | 34 ++++++++++--------- ...scription_view.ex => subscription_view.ex} | 4 +-- .../subscription_controller_test.exs | 13 ++++--- ...ew_test.exs => subscription_view_test.exs} | 6 ++-- 4 files changed, 31 insertions(+), 26 deletions(-) rename lib/pleroma/web/mastodon_api/views/{push_subscription_view.ex => subscription_view.ex} (77%) rename test/web/mastodon_api/views/{push_subscription_view_test.exs => subscription_view_test.exs} (72%) diff --git a/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex b/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex index 11df6fc4a..4647c1f96 100644 --- a/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex @@ -6,25 +6,22 @@ defmodule Pleroma.Web.MastodonAPI.SubscriptionController do @moduledoc "The module represents functions to manage user subscriptions." use Pleroma.Web, :controller - alias Pleroma.Web.MastodonAPI.PushSubscriptionView, as: View alias Pleroma.Web.Push alias Pleroma.Web.Push.Subscription action_fallback(:errors) plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["push"]}) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + plug(:restrict_push_enabled) # Creates PushSubscription # POST /api/v1/push/subscription # def create(%{assigns: %{user: user, token: token}} = conn, params) do - with true <- Push.enabled(), - {:ok, _} <- Subscription.delete_if_exists(user, token), + with {:ok, _} <- Subscription.delete_if_exists(user, token), {:ok, subscription} <- Subscription.create(user, token, params) do - view = View.render("push_subscription.json", subscription: subscription) - json(conn, view) + render(conn, "show.json", subscription: subscription) end end @@ -32,10 +29,8 @@ def create(%{assigns: %{user: user, token: token}} = conn, params) do # GET /api/v1/push/subscription # def get(%{assigns: %{user: user, token: token}} = conn, _params) do - with true <- Push.enabled(), - {:ok, subscription} <- Subscription.get(user, token) do - view = View.render("push_subscription.json", subscription: subscription) - json(conn, view) + with {:ok, subscription} <- Subscription.get(user, token) do + render(conn, "show.json", subscription: subscription) end end @@ -43,10 +38,8 @@ def get(%{assigns: %{user: user, token: token}} = conn, _params) do # PUT /api/v1/push/subscription # def update(%{assigns: %{user: user, token: token}} = conn, params) do - with true <- Push.enabled(), - {:ok, subscription} <- Subscription.update(user, token, params) do - view = View.render("push_subscription.json", subscription: subscription) - json(conn, view) + with {:ok, subscription} <- Subscription.update(user, token, params) do + render(conn, "show.json", subscription: subscription) end end @@ -54,11 +47,20 @@ def update(%{assigns: %{user: user, token: token}} = conn, params) do # DELETE /api/v1/push/subscription # def delete(%{assigns: %{user: user, token: token}} = conn, _params) do - with true <- Push.enabled(), - {:ok, _response} <- Subscription.delete(user, token), + with {:ok, _response} <- Subscription.delete(user, token), do: json(conn, %{}) end + defp restrict_push_enabled(conn, _) do + if Push.enabled() do + conn + else + conn + |> render_error(:forbidden, "Web push subscription is disabled on this Pleroma instance") + |> halt() + end + end + # fallback action # def errors(conn, {:error, :not_found}) do diff --git a/lib/pleroma/web/mastodon_api/views/push_subscription_view.ex b/lib/pleroma/web/mastodon_api/views/subscription_view.ex similarity index 77% rename from lib/pleroma/web/mastodon_api/views/push_subscription_view.ex rename to lib/pleroma/web/mastodon_api/views/subscription_view.ex index d32cef6e2..7c67cc924 100644 --- a/lib/pleroma/web/mastodon_api/views/push_subscription_view.ex +++ b/lib/pleroma/web/mastodon_api/views/subscription_view.ex @@ -2,11 +2,11 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.MastodonAPI.PushSubscriptionView do +defmodule Pleroma.Web.MastodonAPI.SubscriptionView do use Pleroma.Web, :view alias Pleroma.Web.Push - def render("push_subscription.json", %{subscription: subscription}) do + def render("show.json", %{subscription: subscription}) do %{ id: to_string(subscription.id), endpoint: subscription.endpoint, diff --git a/test/web/mastodon_api/controllers/subscription_controller_test.exs b/test/web/mastodon_api/controllers/subscription_controller_test.exs index 987158a74..5682498c0 100644 --- a/test/web/mastodon_api/controllers/subscription_controller_test.exs +++ b/test/web/mastodon_api/controllers/subscription_controller_test.exs @@ -35,7 +35,10 @@ defmacro assert_error_when_disable_push(do: yield) do quote do vapid_details = Application.get_env(:web_push_encryption, :vapid_details, []) Application.put_env(:web_push_encryption, :vapid_details, []) - assert "Something went wrong" == unquote(yield) + + assert %{"error" => "Web push subscription is disabled on this Pleroma instance"} == + unquote(yield) + Application.put_env(:web_push_encryption, :vapid_details, vapid_details) end end @@ -45,7 +48,7 @@ test "returns error when push disabled ", %{conn: conn} do assert_error_when_disable_push do conn |> post("/api/v1/push/subscription", %{}) - |> json_response(500) + |> json_response(403) end end @@ -74,7 +77,7 @@ test "returns error when push disabled ", %{conn: conn} do assert_error_when_disable_push do conn |> get("/api/v1/push/subscription", %{}) - |> json_response(500) + |> json_response(403) end end @@ -127,7 +130,7 @@ test "returns error when push disabled ", %{conn: conn} do assert_error_when_disable_push do conn |> put("/api/v1/push/subscription", %{data: %{"alerts" => %{"mention" => false}}}) - |> json_response(500) + |> json_response(403) end end @@ -155,7 +158,7 @@ test "returns error when push disabled ", %{conn: conn} do assert_error_when_disable_push do conn |> delete("/api/v1/push/subscription", %{}) - |> json_response(500) + |> json_response(403) end end diff --git a/test/web/mastodon_api/views/push_subscription_view_test.exs b/test/web/mastodon_api/views/subscription_view_test.exs similarity index 72% rename from test/web/mastodon_api/views/push_subscription_view_test.exs rename to test/web/mastodon_api/views/subscription_view_test.exs index 10c6082a5..981524c0e 100644 --- a/test/web/mastodon_api/views/push_subscription_view_test.exs +++ b/test/web/mastodon_api/views/subscription_view_test.exs @@ -2,10 +2,10 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.MastodonAPI.PushSubscriptionViewTest do +defmodule Pleroma.Web.MastodonAPI.SubscriptionViewTest do use Pleroma.DataCase import Pleroma.Factory - alias Pleroma.Web.MastodonAPI.PushSubscriptionView, as: View + alias Pleroma.Web.MastodonAPI.SubscriptionView, as: View alias Pleroma.Web.Push test "Represent a subscription" do @@ -18,6 +18,6 @@ test "Represent a subscription" do server_key: Keyword.get(Push.vapid_config(), :public_key) } - assert expected == View.render("push_subscription.json", %{subscription: subscription}) + assert expected == View.render("show.json", %{subscription: subscription}) end end From 72ef6cc4f2f601e26ba84c16ad2c91bd72867629 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 13 Apr 2020 14:07:23 +0300 Subject: [PATCH 054/137] added need_reboot endpoint to admin api --- CHANGELOG.md | 6 ++++ docs/API/admin_api.md | 21 ++++++++--- .../web/admin_api/admin_api_controller.ex | 35 +++++++------------ lib/pleroma/web/router.ex | 1 + .../admin_api/admin_api_controller_test.exs | 18 ++++++++-- 5 files changed, 52 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56b235f6d..804d3aa91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Logger configuration through AdminFE +### Added +
+ API Changes +- Admin API: `GET /api/pleroma/admin/need_reboot`. +
+ ## [2.0.2] - 2020-04-08 ### Added - Support for Funkwhale's `Audio` activity diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index 57fb6bc6a..0ba88470a 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -786,6 +786,8 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ### Restarts pleroma application +**Only works when configuration from database is enabled.** + - Params: none - Response: - On failure: @@ -795,11 +797,24 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret {} ``` +## `GET /api/pleroma/admin/need_reboot` + +### Returns the flag whether the pleroma should be restarted + +- Params: none +- Response: + - `need_reboot` - boolean +```json +{ + "need_reboot": false +} +``` + ## `GET /api/pleroma/admin/config` ### Get list of merged default settings with saved in database. -*If `need_reboot` flag exists in response, instance must be restarted, so reboot time settings can take effect.* +*If `need_reboot` is `true`, instance must be restarted, so reboot time settings can take effect.* **Only works when configuration from database is enabled.** @@ -821,13 +836,12 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret "need_reboot": true } ``` - need_reboot - *optional*, if were changed reboot time settings. ## `POST /api/pleroma/admin/config` ### Update config settings -*If `need_reboot` flag exists in response, instance must be restarted, so reboot time settings can take effect.* +*If `need_reboot` is `true`, instance must be restarted, so reboot time settings can take effect.* **Only works when configuration from database is enabled.** @@ -971,7 +985,6 @@ config :quack, "need_reboot": true } ``` -need_reboot - *optional*, if were changed reboot time settings. ## ` GET /api/pleroma/admin/config/descriptions` diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 831c3bd02..8de7d70a3 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -914,16 +914,7 @@ def config_show(conn, _params) do end) |> List.flatten() - response = %{configs: merged} - - response = - if Restarter.Pleroma.need_reboot?() do - Map.put(response, :need_reboot, true) - else - response - end - - json(conn, response) + json(conn, %{configs: merged, need_reboot: Restarter.Pleroma.need_reboot?()}) end end @@ -950,28 +941,22 @@ def config_update(conn, %{"configs" => configs}) do Config.TransferTask.load_and_update_env(deleted, false) - need_reboot? = - Restarter.Pleroma.need_reboot?() || - Enum.any?(updated, fn config -> + if !Restarter.Pleroma.need_reboot?() do + changed_reboot_settings? = + (updated ++ deleted) + |> Enum.any?(fn config -> group = ConfigDB.from_string(config.group) key = ConfigDB.from_string(config.key) value = ConfigDB.from_binary(config.value) Config.TransferTask.pleroma_need_restart?(group, key, value) end) - response = %{configs: updated} - - response = - if need_reboot? do - Restarter.Pleroma.need_reboot() - Map.put(response, :need_reboot, need_reboot?) - else - response - end + if changed_reboot_settings?, do: Restarter.Pleroma.need_reboot() + end conn |> put_view(ConfigView) - |> render("index.json", response) + |> render("index.json", %{configs: updated, need_reboot: Restarter.Pleroma.need_reboot?()}) end end @@ -983,6 +968,10 @@ def restart(conn, _params) do end end + def need_reboot(conn, _params) do + json(conn, %{need_reboot: Restarter.Pleroma.need_reboot?()}) + end + defp configurable_from_database(conn) do if Config.get(:configurable_from_database) do :ok diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 5f5ec1c81..fd94913a1 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -203,6 +203,7 @@ defmodule Pleroma.Web.Router do get("/config", AdminAPIController, :config_show) post("/config", AdminAPIController, :config_update) get("/config/descriptions", AdminAPIController, :config_descriptions) + get("/need_reboot", AdminAPIController, :need_reboot) get("/restart", AdminAPIController, :restart) get("/moderation_log", AdminAPIController, :list_log) diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 60ec895f5..158966365 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -2110,7 +2110,7 @@ test "saving config which need pleroma reboot", %{conn: conn} do |> get("/api/pleroma/admin/config") |> json_response(200) - refute Map.has_key?(configs, "need_reboot") + assert configs["need_reboot"] == false end test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do @@ -2166,7 +2166,7 @@ test "update setting which need reboot, don't change reboot flag until reboot", |> get("/api/pleroma/admin/config") |> json_response(200) - refute Map.has_key?(configs, "need_reboot") + assert configs["need_reboot"] == false end test "saving config with nested merge", %{conn: conn} do @@ -2861,6 +2861,20 @@ test "pleroma restarts", %{conn: conn} do end end + test "need_reboot flag", %{conn: conn} do + assert conn + |> get("/api/pleroma/admin/need_reboot") + |> json_response(200) == %{"need_reboot" => false} + + Restarter.Pleroma.need_reboot() + + assert conn + |> get("/api/pleroma/admin/need_reboot") + |> json_response(200) == %{"need_reboot" => true} + + on_exit(fn -> Restarter.Pleroma.refresh() end) + end + describe "GET /api/pleroma/admin/statuses" do test "returns all public and unlisted statuses", %{conn: conn, admin: admin} do blocked = insert(:user) From 77ee64b9930bf6b439f87112fa35e302f5125aa2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 16 Apr 2020 17:54:57 +0300 Subject: [PATCH 055/137] user: remove blank? --- lib/pleroma/user.ex | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index fab405233..753b0c686 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -343,9 +343,15 @@ def remote_user_changeset(struct \\ %User{local: false}, params) do bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) + name = + case params[:name] do + name when is_binary(name) and byte_size(name) > 0 -> name + _ -> params[:nickname] + end + params = params - |> Map.put(:name, blank?(params[:name]) || params[:nickname]) + |> Map.put(:name, name) |> Map.put_new(:last_refreshed_at, NaiveDateTime.utc_now()) |> truncate_if_exists(:name, name_limit) |> truncate_if_exists(:bio, bio_limit) @@ -1599,9 +1605,6 @@ def get_public_key_for_ap_id(ap_id) do end end - defp blank?(""), do: nil - defp blank?(n), do: n - def ap_enabled?(%User{local: true}), do: true def ap_enabled?(%User{ap_enabled: ap_enabled}), do: ap_enabled def ap_enabled?(_), do: false From 4d330d9df13b7ff5d24fdd8b4eec1e111fa51297 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 16 Apr 2020 18:05:36 +0300 Subject: [PATCH 056/137] fix for use of published from different entities --- lib/pleroma/web/feed/feed_view.ex | 9 +++------ .../web/templates/feed/feed/_activity.atom.eex | 8 ++++---- .../web/templates/feed/feed/_activity.rss.eex | 8 ++++---- .../templates/feed/feed/_tag_activity.atom.eex | 16 ++++++++-------- .../templates/feed/feed/_tag_activity.xml.eex | 15 +++++++-------- test/web/feed/tag_controller_test.exs | 4 ++-- 6 files changed, 28 insertions(+), 32 deletions(-) diff --git a/lib/pleroma/web/feed/feed_view.ex b/lib/pleroma/web/feed/feed_view.ex index e18adaea8..1ae03e7e2 100644 --- a/lib/pleroma/web/feed/feed_view.ex +++ b/lib/pleroma/web/feed/feed_view.ex @@ -23,7 +23,7 @@ def pub_date(date) when is_binary(date) do def pub_date(%DateTime{} = date), do: Timex.format!(date, "{RFC822}") def prepare_activity(activity, opts \\ []) do - object = activity_object(activity) + object = Object.normalize(activity) actor = if opts[:actor] do @@ -33,7 +33,6 @@ def prepare_activity(activity, opts \\ []) do %{ activity: activity, data: Map.get(object, :data), - object: object, actor: actor } end @@ -68,9 +67,7 @@ def logo(user) do def last_activity(activities), do: List.last(activities) - def activity_object(activity), do: Object.normalize(activity) - - def activity_title(%{data: %{"content" => content}}, opts \\ %{}) do + def activity_title(%{"content" => content}, opts \\ %{}) do content |> Pleroma.Web.Metadata.Utils.scrub_html() |> Pleroma.Emoji.Formatter.demojify() @@ -78,7 +75,7 @@ def activity_title(%{data: %{"content" => content}}, opts \\ %{}) do |> escape() end - def activity_content(%{data: %{"content" => content}}) do + def activity_content(%{"content" => content}) do content |> String.replace(~r/[\n\r]/, "") |> escape() diff --git a/lib/pleroma/web/templates/feed/feed/_activity.atom.eex b/lib/pleroma/web/templates/feed/feed/_activity.atom.eex index ac8a75009..78350f2aa 100644 --- a/lib/pleroma/web/templates/feed/feed/_activity.atom.eex +++ b/lib/pleroma/web/templates/feed/feed/_activity.atom.eex @@ -2,10 +2,10 @@ http://activitystrea.ms/schema/1.0/note http://activitystrea.ms/schema/1.0/post <%= @data["id"] %> - <%= activity_title(@object, Keyword.get(@feed_config, :post_title, %{})) %> - <%= activity_content(@object) %> - <%= @data["published"] %> - <%= @data["published"] %> + <%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %> + <%= activity_content(@data) %> + <%= @activity.data["published"] %> + <%= @activity.data["published"] %> <%= activity_context(@activity) %> diff --git a/lib/pleroma/web/templates/feed/feed/_activity.rss.eex b/lib/pleroma/web/templates/feed/feed/_activity.rss.eex index a4dbed638..a304a16af 100644 --- a/lib/pleroma/web/templates/feed/feed/_activity.rss.eex +++ b/lib/pleroma/web/templates/feed/feed/_activity.rss.eex @@ -2,10 +2,10 @@ http://activitystrea.ms/schema/1.0/note http://activitystrea.ms/schema/1.0/post <%= @data["id"] %> - <%= activity_title(@object, Keyword.get(@feed_config, :post_title, %{})) %> - <%= activity_content(@object) %> - <%= @data["published"] %> - <%= @data["published"] %> + <%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %> + <%= activity_content(@data) %> + <%= @activity.data["published"] %> + <%= @activity.data["published"] %> <%= activity_context(@activity) %> diff --git a/lib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex b/lib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex index da4fa6d6c..cf5874a91 100644 --- a/lib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex +++ b/lib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex @@ -1,12 +1,12 @@ http://activitystrea.ms/schema/1.0/note http://activitystrea.ms/schema/1.0/post - + <%= render @view_module, "_tag_author.atom", assigns %> - + <%= @data["id"] %> - <%= activity_title(@object, Keyword.get(@feed_config, :post_title, %{})) %> - <%= activity_content(@object) %> + <%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %> + <%= activity_content(@data) %> <%= if @activity.local do %> @@ -15,8 +15,8 @@ <% end %> - <%= @data["published"] %> - <%= @data["published"] %> + <%= @activity.data["published"] %> + <%= @activity.data["published"] %> <%= activity_context(@activity) %> @@ -26,7 +26,7 @@ <%= if @data["summary"] do %> <%= @data["summary"] %> <% end %> - + <%= for id <- @activity.recipients do %> <%= if id == Pleroma.Constants.as_public() do %> <% end %> <% end %> - + <%= for tag <- @data["tag"] || [] do %> <% end %> diff --git a/lib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex b/lib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex index 295574df1..2334e24a2 100644 --- a/lib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex +++ b/lib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex @@ -1,15 +1,14 @@ - <%= activity_title(@object, Keyword.get(@feed_config, :post_title, %{})) %> - - + <%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %> + + <%= activity_context(@activity) %> <%= activity_context(@activity) %> - <%= pub_date(@data["published"]) %> - - <%= activity_content(@object) %> + <%= pub_date(@activity.data["published"]) %> + + <%= activity_content(@data) %> <%= for attachment <- @data["attachment"] || [] do %> <% end %> - - + diff --git a/test/web/feed/tag_controller_test.exs b/test/web/feed/tag_controller_test.exs index e863df86b..d95aac108 100644 --- a/test/web/feed/tag_controller_test.exs +++ b/test/web/feed/tag_controller_test.exs @@ -150,8 +150,8 @@ test "gets a feed (RSS)", %{conn: conn} do obj2 = Object.normalize(activity2) assert xpath(xml, ~x"//channel/item/description/text()"sl) == [ - HtmlEntities.decode(FeedView.activity_content(obj2)), - HtmlEntities.decode(FeedView.activity_content(obj1)) + HtmlEntities.decode(FeedView.activity_content(obj2.data)), + HtmlEntities.decode(FeedView.activity_content(obj1.data)) ] response = From 304ea09f4c9902a1f96f30541e6c5d253527dd47 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 17 Apr 2020 08:42:48 +0300 Subject: [PATCH 057/137] fix for logger configuration --- lib/pleroma/config/transfer_task.ex | 9 ++++++-- test/config/transfer_task_test.exs | 32 +++++++++++------------------ 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex index 3871e1cbb..f4722f99d 100644 --- a/lib/pleroma/config/transfer_task.ex +++ b/lib/pleroma/config/transfer_task.ex @@ -122,7 +122,7 @@ defp configure({_, :backends, _, merged}) do :ok = update_env(:logger, :backends, merged) end - defp configure({group, key, _, merged}) do + defp configure({_, key, _, merged}) when key in [:console, :ex_syslogger] do merged = if key == :console do put_in(merged[:format], merged[:format] <> "\n") @@ -136,7 +136,12 @@ defp configure({group, key, _, merged}) do else: key Logger.configure_backend(backend, merged) - :ok = update_env(:logger, group, merged) + :ok = update_env(:logger, key, merged) + end + + defp configure({_, key, _, merged}) do + Logger.configure([{key, merged}]) + :ok = update_env(:logger, key, merged) end defp update({group, key, value, merged}) do diff --git a/test/config/transfer_task_test.exs b/test/config/transfer_task_test.exs index 0265a6156..00db0b686 100644 --- a/test/config/transfer_task_test.exs +++ b/test/config/transfer_task_test.exs @@ -16,6 +16,7 @@ test "transfer config values from db to env" do refute Application.get_env(:pleroma, :test_key) refute Application.get_env(:idna, :test_key) refute Application.get_env(:quack, :test_key) + initial = Application.get_env(:logger, :level) ConfigDB.create(%{ group: ":pleroma", @@ -35,16 +36,20 @@ test "transfer config values from db to env" do value: [:test_value1, :test_value2] }) + ConfigDB.create(%{group: ":logger", key: ":level", value: :debug}) + TransferTask.start_link([]) assert Application.get_env(:pleroma, :test_key) == [live: 2, com: 3] assert Application.get_env(:idna, :test_key) == [live: 15, com: 35] assert Application.get_env(:quack, :test_key) == [:test_value1, :test_value2] + assert Application.get_env(:logger, :level) == :debug on_exit(fn -> Application.delete_env(:pleroma, :test_key) Application.delete_env(:idna, :test_key) Application.delete_env(:quack, :test_key) + Application.put_env(:logger, :level, initial) end) end @@ -78,8 +83,8 @@ test "transfer config values for 1 group and some keys" do end test "transfer config values with full subkey update" do - emoji = Application.get_env(:pleroma, :emoji) - assets = Application.get_env(:pleroma, :assets) + clear_config(:emoji) + clear_config(:assets) ConfigDB.create(%{ group: ":pleroma", @@ -99,11 +104,6 @@ test "transfer config values with full subkey update" do assert emoji_env[:groups] == [a: 1, b: 2] assets_env = Application.get_env(:pleroma, :assets) assert assets_env[:mascots] == [a: 1, b: 2] - - on_exit(fn -> - Application.put_env(:pleroma, :emoji, emoji) - Application.put_env(:pleroma, :assets, assets) - end) end describe "pleroma restart" do @@ -112,8 +112,7 @@ test "transfer config values with full subkey update" do end test "don't restart if no reboot time settings were changed" do - emoji = Application.get_env(:pleroma, :emoji) - on_exit(fn -> Application.put_env(:pleroma, :emoji, emoji) end) + clear_config(:emoji) ConfigDB.create(%{ group: ":pleroma", @@ -128,8 +127,7 @@ test "don't restart if no reboot time settings were changed" do end test "on reboot time key" do - chat = Application.get_env(:pleroma, :chat) - on_exit(fn -> Application.put_env(:pleroma, :chat, chat) end) + clear_config(:chat) ConfigDB.create(%{ group: ":pleroma", @@ -141,8 +139,7 @@ test "on reboot time key" do end test "on reboot time subkey" do - captcha = Application.get_env(:pleroma, Pleroma.Captcha) - on_exit(fn -> Application.put_env(:pleroma, Pleroma.Captcha, captcha) end) + clear_config(Pleroma.Captcha) ConfigDB.create(%{ group: ":pleroma", @@ -154,13 +151,8 @@ test "on reboot time subkey" do end test "don't restart pleroma on reboot time key and subkey if there is false flag" do - chat = Application.get_env(:pleroma, :chat) - captcha = Application.get_env(:pleroma, Pleroma.Captcha) - - on_exit(fn -> - Application.put_env(:pleroma, :chat, chat) - Application.put_env(:pleroma, Pleroma.Captcha, captcha) - end) + clear_config(:chat) + clear_config(Pleroma.Captcha) ConfigDB.create(%{ group: ":pleroma", From 4d22b100b777b59e79180d5d3ea8615db940b1fc Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 17 Apr 2020 12:33:11 +0300 Subject: [PATCH 058/137] move changelogs entries to unreleased section --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce6737408..2239a5288 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,10 +12,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - NodeInfo: `pleroma_emoji_reactions` to the `features` list. - Configuration: `:restrict_unauthenticated` setting, restrict access for unauthenticated users to timelines (public and federate), user profiles and statuses. - New HTTP adapter [gun](https://github.com/ninenines/gun). Gun adapter requires minimum OTP version of 22.2 otherwise Pleroma won’t start. For hackney OTP update is not required. +- Mix task to create trusted OAuth App.
API Changes - Mastodon API: Support for `include_types` in `/api/v1/notifications`. - Mastodon API: Added `/api/v1/notifications/:id/dismiss` endpoint. +- Admin API: endpoints for create/update/delete OAuth Apps.
### Fixed @@ -155,7 +157,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Add an option `authorized_fetch_mode` to require HTTP signatures for AP fetches. - ActivityPub: support for `replies` collection (output for outgoing federation & fetching on incoming federation). - Mix task to refresh counter cache (`mix pleroma.refresh_counter_cache`) -- Mix task to create trusted OAuth App.
API Changes @@ -202,7 +203,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - ActivityPub: `[:activitypub, :note_replies_output_limit]` setting sets the number of note self-replies to output on outgoing federation. - Admin API: `GET /api/pleroma/admin/stats` to get status count by visibility scope - Admin API: `GET /api/pleroma/admin/statuses` - list all statuses (accepts `godmode` and `local_only`) -- Admin API: endpoints for create/update/delete OAuth Apps.
### Fixed From 6cda360fea8a42168b5835ef903cf3bf89c8151a Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 16 Apr 2020 10:36:37 +0300 Subject: [PATCH 059/137] don't restart postgrex --- lib/pleroma/config/loader.ex | 2 +- lib/pleroma/config/transfer_task.ex | 20 +++++++++++--------- test/config/transfer_task_test.exs | 9 +++++++++ test/fixtures/config/temp.secret.exs | 2 ++ test/tasks/config_test.exs | 3 ++- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/pleroma/config/loader.ex b/lib/pleroma/config/loader.ex index 6ca6550bd..0f3ecf1ed 100644 --- a/lib/pleroma/config/loader.ex +++ b/lib/pleroma/config/loader.ex @@ -47,7 +47,7 @@ defp filter(configs) do @spec filter_group(atom(), keyword()) :: keyword() def filter_group(group, configs) do Enum.reject(configs[group], fn {key, _v} -> - key in @reject_keys or (group == :phoenix and key == :serve_endpoints) + key in @reject_keys or (group == :phoenix and key == :serve_endpoints) or group == :postgrex end) end end diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex index f4722f99d..c02b70e96 100644 --- a/lib/pleroma/config/transfer_task.ex +++ b/lib/pleroma/config/transfer_task.ex @@ -46,14 +46,6 @@ def load_and_update_env(deleted_settings \\ [], restart_pleroma? \\ true) do with {_, true} <- {:configurable, Config.get(:configurable_from_database)} do # We need to restart applications for loaded settings take effect - # TODO: some problem with prometheus after restart! - reject_restart = - if restart_pleroma? do - [nil, :prometheus] - else - [:pleroma, nil, :prometheus] - end - {logger, other} = (Repo.all(ConfigDB) ++ deleted_settings) |> Enum.map(&transform_and_merge/1) @@ -65,10 +57,20 @@ def load_and_update_env(deleted_settings \\ [], restart_pleroma? \\ true) do started_applications = Application.started_applications() + # TODO: some problem with prometheus after restart! + reject = [nil, :prometheus, :postgrex] + + reject = + if restart_pleroma? do + reject + else + [:pleroma | reject] + end + other |> Enum.map(&update/1) |> Enum.uniq() - |> Enum.reject(&(&1 in reject_restart)) + |> Enum.reject(&(&1 in reject)) |> maybe_set_pleroma_last() |> Enum.each(&restart(started_applications, &1, Config.get(:env))) diff --git a/test/config/transfer_task_test.exs b/test/config/transfer_task_test.exs index 00db0b686..473899d1d 100644 --- a/test/config/transfer_task_test.exs +++ b/test/config/transfer_task_test.exs @@ -16,6 +16,7 @@ test "transfer config values from db to env" do refute Application.get_env(:pleroma, :test_key) refute Application.get_env(:idna, :test_key) refute Application.get_env(:quack, :test_key) + refute Application.get_env(:postgrex, :test_key) initial = Application.get_env(:logger, :level) ConfigDB.create(%{ @@ -36,6 +37,12 @@ test "transfer config values from db to env" do value: [:test_value1, :test_value2] }) + ConfigDB.create(%{ + group: ":postgrex", + key: ":test_key", + value: :value + }) + ConfigDB.create(%{group: ":logger", key: ":level", value: :debug}) TransferTask.start_link([]) @@ -44,11 +51,13 @@ test "transfer config values from db to env" do assert Application.get_env(:idna, :test_key) == [live: 15, com: 35] assert Application.get_env(:quack, :test_key) == [:test_value1, :test_value2] assert Application.get_env(:logger, :level) == :debug + assert Application.get_env(:postgrex, :test_key) == :value on_exit(fn -> Application.delete_env(:pleroma, :test_key) Application.delete_env(:idna, :test_key) Application.delete_env(:quack, :test_key) + Application.delete_env(:postgrex, :test_key) Application.put_env(:logger, :level, initial) end) end diff --git a/test/fixtures/config/temp.secret.exs b/test/fixtures/config/temp.secret.exs index f4686c101..dc950ca30 100644 --- a/test/fixtures/config/temp.secret.exs +++ b/test/fixtures/config/temp.secret.exs @@ -7,3 +7,5 @@ config :quack, level: :info config :pleroma, Pleroma.Repo, pool: Ecto.Adapters.SQL.Sandbox + +config :postgrex, :json_library, Poison diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index 3dee4f082..04bc947a9 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -38,7 +38,7 @@ test "error if file with custom settings doesn't exist" do on_exit(fn -> Application.put_env(:quack, :level, initial) end) end - test "settings are migrated to db" do + test "filtered settings are migrated to db" do assert Repo.all(ConfigDB) == [] Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs") @@ -47,6 +47,7 @@ test "settings are migrated to db" do config2 = ConfigDB.get_by_params(%{group: ":pleroma", key: ":second_setting"}) config3 = ConfigDB.get_by_params(%{group: ":quack", key: ":level"}) refute ConfigDB.get_by_params(%{group: ":pleroma", key: "Pleroma.Repo"}) + refute ConfigDB.get_by_params(%{group: ":postgrex", key: ":json_library"}) assert ConfigDB.from_binary(config1.value) == [key: "value", key2: [Repo]] assert ConfigDB.from_binary(config2.value) == [key: "value2", key2: ["Activity"]] From 46f051048fb1afb02fe81b872ae9f595f2c5f2c1 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 17 Apr 2020 14:32:15 +0200 Subject: [PATCH 060/137] migrations/20200406100225_users_add_emoji: Fix tag to Emoji filtering --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- priv/repo/migrations/20200406100225_users_add_emoji.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 35af0f7dc..d403405a0 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1430,7 +1430,7 @@ defp object_to_user_data(data) do emojis = data |> Map.get("tag", []) - |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end) + |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> Map.put(acc, String.trim(name, ":"), url) end) diff --git a/priv/repo/migrations/20200406100225_users_add_emoji.exs b/priv/repo/migrations/20200406100225_users_add_emoji.exs index d0254c170..9f57abb5c 100644 --- a/priv/repo/migrations/20200406100225_users_add_emoji.exs +++ b/priv/repo/migrations/20200406100225_users_add_emoji.exs @@ -17,7 +17,7 @@ def up do emoji = user.source_data |> Map.get("tag", []) - |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end) + |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> Map.put(acc, String.trim(name, ":"), url) end) From 26d9c83316fe5d8a3bf1f8fadae727788a92a725 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 17 Apr 2020 15:50:15 +0200 Subject: [PATCH 061/137] SideEffects: Test for notification creation. --- lib/pleroma/web/activity_pub/side_effects.ex | 2 ++ test/web/activity_pub/side_effects_test.exs | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 666a4e310..6a8f1af96 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -17,7 +17,9 @@ def handle(object, meta \\ []) def handle(%{data: %{"type" => "Like"}} = object, meta) do liked_object = Object.get_by_ap_id(object.data["object"]) Utils.add_like_to_object(object, liked_object) + Notification.create_notifications(object) + {:ok, object, meta} end diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs index b67bd14b3..0b6b55156 100644 --- a/test/web/activity_pub/side_effects_test.exs +++ b/test/web/activity_pub/side_effects_test.exs @@ -5,7 +5,9 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do use Pleroma.DataCase + alias Pleroma.Notification alias Pleroma.Object + alias Pleroma.Repo alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.SideEffects @@ -15,13 +17,14 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do describe "like objects" do setup do + poster = insert(:user) user = insert(:user) - {:ok, post} = CommonAPI.post(user, %{"status" => "hey"}) + {:ok, post} = CommonAPI.post(poster, %{"status" => "hey"}) {:ok, like_data, _meta} = Builder.like(user, post.object) {:ok, like, _meta} = ActivityPub.persist(like_data, local: true) - %{like: like, user: user} + %{like: like, user: user, poster: poster} end test "add the like to the original object", %{like: like, user: user} do @@ -30,5 +33,10 @@ test "add the like to the original object", %{like: like, user: user} do assert object.data["like_count"] == 1 assert user.ap_id in object.data["likes"] end + + test "creates a notification", %{like: like, poster: poster} do + {:ok, like, _} = SideEffects.handle(like) + assert Repo.get_by(Notification, user_id: poster.id, activity_id: like.id) + end end end From 163341857a726e8d74b6ddcd1230579e4c36a1b5 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Fri, 17 Apr 2020 19:27:22 +0400 Subject: [PATCH 062/137] Improve OpenAPI errors --- lib/pleroma/web/api_spec/render_error.ex | 220 +++++++++++++++++- .../controllers/account_controller_test.exs | 11 +- 2 files changed, 222 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/web/api_spec/render_error.ex b/lib/pleroma/web/api_spec/render_error.ex index 9184c43b6..b5877ca9c 100644 --- a/lib/pleroma/web/api_spec/render_error.ex +++ b/lib/pleroma/web/api_spec/render_error.ex @@ -5,23 +5,227 @@ defmodule Pleroma.Web.ApiSpec.RenderError do @behaviour Plug - alias OpenApiSpex.Plug.JsonRenderError - alias Plug.Conn + import Plug.Conn, only: [put_status: 2] + import Phoenix.Controller, only: [json: 2] + import Pleroma.Web.Gettext @impl Plug def init(opts), do: opts @impl Plug - def call(%{private: %{open_api_spex: %{operation_id: "AccountController.create"}}} = conn, _) do + def call(conn, errors) do + errors = + Enum.map(errors, fn + %{name: nil} = err -> + %OpenApiSpex.Cast.Error{err | name: List.last(err.path)} + + err -> + err + end) + conn - |> Conn.put_status(:bad_request) - |> Phoenix.Controller.json(%{"error" => "Missing parameters"}) + |> put_status(:bad_request) + |> json(%{ + error: errors |> Enum.map(&message/1) |> Enum.join(" "), + errors: errors |> Enum.map(&render_error/1) + }) end - def call(conn, reason) do - opts = JsonRenderError.init(reason) + defp render_error(error) do + pointer = OpenApiSpex.path_to_string(error) - JsonRenderError.call(conn, opts) + %{ + title: "Invalid value", + source: %{ + pointer: pointer + }, + message: OpenApiSpex.Cast.Error.message(error) + } + end + + defp message(%{reason: :invalid_schema_type, type: type, name: name}) do + gettext("%{name} - Invalid schema.type. Got: %{type}.", + name: name, + type: inspect(type) + ) + end + + defp message(%{reason: :null_value, name: name} = error) do + case error.type do + nil -> + gettext("%{name} - null value.", name: name) + + type -> + gettext("%{name} - null value where %{type} expected.", + name: name, + type: type + ) + end + end + + defp message(%{reason: :all_of, meta: %{invalid_schema: invalid_schema}}) do + gettext( + "Failed to cast value as %{invalid_schema}. Value must be castable using `allOf` schemas listed.", + invalid_schema: invalid_schema + ) + end + + defp message(%{reason: :any_of, meta: %{failed_schemas: failed_schemas}}) do + gettext("Failed to cast value using any of: %{failed_schemas}.", + failed_schemas: failed_schemas + ) + end + + defp message(%{reason: :one_of, meta: %{failed_schemas: failed_schemas}}) do + gettext("Failed to cast value to one of: %{failed_schemas}.", failed_schemas: failed_schemas) + end + + defp message(%{reason: :min_length, length: length, name: name}) do + gettext("%{name} - String length is smaller than minLength: %{length}.", + name: name, + length: length + ) + end + + defp message(%{reason: :max_length, length: length, name: name}) do + gettext("%{name} - String length is larger than maxLength: %{length}.", + name: name, + length: length + ) + end + + defp message(%{reason: :unique_items, name: name}) do + gettext("%{name} - Array items must be unique.", name: name) + end + + defp message(%{reason: :min_items, length: min, value: array, name: name}) do + gettext("%{name} - Array length %{length} is smaller than minItems: %{min}.", + name: name, + length: length(array), + min: min + ) + end + + defp message(%{reason: :max_items, length: max, value: array, name: name}) do + gettext("%{name} - Array length %{length} is larger than maxItems: %{}.", + name: name, + length: length(array), + max: max + ) + end + + defp message(%{reason: :multiple_of, length: multiple, value: count, name: name}) do + gettext("%{name} - %{count} is not a multiple of %{multiple}.", + name: name, + count: count, + multiple: multiple + ) + end + + defp message(%{reason: :exclusive_max, length: max, value: value, name: name}) + when value >= max do + gettext("%{name} - %{value} is larger than exclusive maximum %{max}.", + name: name, + value: value, + max: max + ) + end + + defp message(%{reason: :maximum, length: max, value: value, name: name}) + when value > max do + gettext("%{name} - %{value} is larger than inclusive maximum %{max}.", + name: name, + value: value, + max: max + ) + end + + defp message(%{reason: :exclusive_multiple, length: min, value: value, name: name}) + when value <= min do + gettext("%{name} - %{value} is smaller than exclusive minimum %{min}.", + name: name, + value: value, + min: min + ) + end + + defp message(%{reason: :minimum, length: min, value: value, name: name}) + when value < min do + gettext("%{name} - %{value} is smaller than inclusive minimum %{min}.", + name: name, + value: value, + min: min + ) + end + + defp message(%{reason: :invalid_type, type: type, value: value, name: name}) do + gettext("%{name} - Invalid %{type}. Got: %{value}.", + name: name, + value: OpenApiSpex.TermType.type(value), + type: type + ) + end + + defp message(%{reason: :invalid_format, format: format, name: name}) do + gettext("%{name} - Invalid format. Expected %{format}.", name: name, format: inspect(format)) + end + + defp message(%{reason: :invalid_enum, name: name}) do + gettext("%{name} - Invalid value for enum.", name: name) + end + + defp message(%{reason: :polymorphic_failed, type: polymorphic_type}) do + gettext("Failed to cast to any schema in %{polymorphic_type}", + polymorphic_type: polymorphic_type + ) + end + + defp message(%{reason: :unexpected_field, name: name}) do + gettext("Unexpected field: %{name}.", name: safe_string(name)) + end + + defp message(%{reason: :no_value_for_discriminator, name: field}) do + gettext("Value used as discriminator for `%{field}` matches no schemas.", name: field) + end + + defp message(%{reason: :invalid_discriminator_value, name: field}) do + gettext("No value provided for required discriminator `%{field}`.", name: field) + end + + defp message(%{reason: :unknown_schema, name: name}) do + gettext("Unknown schema: %{name}.", name: name) + end + + defp message(%{reason: :missing_field, name: name}) do + gettext("Missing field: %{name}.", name: name) + end + + defp message(%{reason: :missing_header, name: name}) do + gettext("Missing header: %{name}.", name: name) + end + + defp message(%{reason: :invalid_header, name: name}) do + gettext("Invalid value for header: %{name}.", name: name) + end + + defp message(%{reason: :max_properties, meta: meta}) do + gettext( + "Object property count %{property_count} is greater than maxProperties: %{max_properties}.", + property_count: meta.property_count, + max_properties: meta.max_properties + ) + end + + defp message(%{reason: :min_properties, meta: meta}) do + gettext( + "Object property count %{property_count} is less than minProperties: %{min_properties}", + property_count: meta.property_count, + min_properties: meta.min_properties + ) + end + + defp safe_string(string) do + to_string(string) |> String.slice(0..39) end end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 86136f7e4..133d7f642 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -952,7 +952,16 @@ test "returns bad_request if missing required params", %{ |> post("/api/v1/accounts", Map.delete(valid_params, attr)) |> json_response(400) - assert res == %{"error" => "Missing parameters"} + assert res == %{ + "error" => "Missing field: #{attr}.", + "errors" => [ + %{ + "message" => "Missing field: #{attr}", + "source" => %{"pointer" => "/#{attr}"}, + "title" => "Invalid value" + } + ] + } end) end From 66f55106bda23e0cfb01cb63f7397f4383518963 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 17 Apr 2020 21:21:10 +0300 Subject: [PATCH 063/137] [#1682] Fixed Basic Auth permissions issue by disabling OAuth scopes checks when password is provided. Refactored plugs skipping functionality. --- CHANGELOG.md | 1 + lib/pleroma/plugs/authentication_plug.ex | 6 ++- .../plugs/legacy_authentication_plug.ex | 3 ++ lib/pleroma/plugs/plug_helper.ex | 24 +++++----- lib/pleroma/web/web.ex | 28 ++++++++--- test/plugs/authentication_plug_test.exs | 7 ++- .../plugs/legacy_authentication_plug_test.exs | 6 ++- test/plugs/oauth_scopes_plug_test.exs | 3 +- test/web/auth/basic_auth_test.exs | 46 +++++++++++++++++++ 9 files changed, 101 insertions(+), 23 deletions(-) create mode 100644 test/web/auth/basic_auth_test.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 2239a5288..53a3d7fcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [unreleased-patch] ### Fixed - Logger configuration through AdminFE +- HTTP Basic Authentication permissions issue ### Added
diff --git a/lib/pleroma/plugs/authentication_plug.ex b/lib/pleroma/plugs/authentication_plug.ex index 089028d77..0061c69dc 100644 --- a/lib/pleroma/plugs/authentication_plug.ex +++ b/lib/pleroma/plugs/authentication_plug.ex @@ -4,8 +4,11 @@ defmodule Pleroma.Plugs.AuthenticationPlug do alias Comeonin.Pbkdf2 - import Plug.Conn + alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.User + + import Plug.Conn + require Logger def init(options), do: options @@ -37,6 +40,7 @@ def call( if Pbkdf2.checkpw(password, password_hash) do conn |> assign(:user, auth_user) + |> OAuthScopesPlug.skip_plug() else conn end diff --git a/lib/pleroma/plugs/legacy_authentication_plug.ex b/lib/pleroma/plugs/legacy_authentication_plug.ex index 5c5c36c56..d346e01a6 100644 --- a/lib/pleroma/plugs/legacy_authentication_plug.ex +++ b/lib/pleroma/plugs/legacy_authentication_plug.ex @@ -4,6 +4,8 @@ defmodule Pleroma.Plugs.LegacyAuthenticationPlug do import Plug.Conn + + alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.User def init(options) do @@ -27,6 +29,7 @@ def call( conn |> assign(:auth_user, user) |> assign(:user, user) + |> OAuthScopesPlug.skip_plug() else _ -> conn diff --git a/lib/pleroma/plugs/plug_helper.ex b/lib/pleroma/plugs/plug_helper.ex index 4f83e9414..9c67be8ef 100644 --- a/lib/pleroma/plugs/plug_helper.ex +++ b/lib/pleroma/plugs/plug_helper.ex @@ -5,30 +5,32 @@ defmodule Pleroma.Plugs.PlugHelper do @moduledoc "Pleroma Plug helper" - def append_to_called_plugs(conn, plug_module) do - append_to_private_list(conn, :called_plugs, plug_module) - end + @called_plugs_list_id :called_plugs + def called_plugs_list_id, do: @called_plugs_list_id - def append_to_skipped_plugs(conn, plug_module) do - append_to_private_list(conn, :skipped_plugs, plug_module) - end + @skipped_plugs_list_id :skipped_plugs + def skipped_plugs_list_id, do: @skipped_plugs_list_id + @doc "Returns `true` if specified plug was called." def plug_called?(conn, plug_module) do - contained_in_private_list?(conn, :called_plugs, plug_module) + contained_in_private_list?(conn, @called_plugs_list_id, plug_module) end + @doc "Returns `true` if specified plug was explicitly marked as skipped." def plug_skipped?(conn, plug_module) do - contained_in_private_list?(conn, :skipped_plugs, plug_module) + contained_in_private_list?(conn, @skipped_plugs_list_id, plug_module) end + @doc "Returns `true` if specified plug was either called or explicitly marked as skipped." def plug_called_or_skipped?(conn, plug_module) do plug_called?(conn, plug_module) || plug_skipped?(conn, plug_module) end - defp append_to_private_list(conn, private_variable, value) do - list = conn.private[private_variable] || [] + # Appends plug to known list (skipped, called). Intended to be used from within plug code only. + def append_to_private_list(conn, list_id, value) do + list = conn.private[list_id] || [] modified_list = Enum.uniq(list ++ [value]) - Plug.Conn.put_private(conn, private_variable, modified_list) + Plug.Conn.put_private(conn, list_id, modified_list) end defp contained_in_private_list?(conn, private_variable, value) do diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web/web.ex index ae7c94640..bf48ce26c 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web/web.ex @@ -40,17 +40,22 @@ defp set_put_layout(conn, _) do # Marks a plug intentionally skipped and blocks its execution if it's present in plugs chain defp skip_plug(conn, plug_module) do try do - plug_module.ensure_skippable() + plug_module.skip_plug(conn) rescue UndefinedFunctionError -> raise "#{plug_module} is not skippable. Append `use Pleroma.Web, :plug` to its code." end - - PlugHelper.append_to_skipped_plugs(conn, plug_module) end - # Here we can apply before-action hooks (e.g. verify whether auth checks were preformed) + # Executed just before actual controller action, invokes before-action hooks (callbacks) defp action(conn, params) do + with %Plug.Conn{halted: false} <- maybe_halt_on_missing_oauth_scopes_check(conn) do + super(conn, params) + end + end + + # Halts if authenticated API action neither performs nor explicitly skips OAuth scopes check + defp maybe_halt_on_missing_oauth_scopes_check(conn) do if Pleroma.Plugs.AuthExpectedPlug.auth_expected?(conn) && not PlugHelper.plug_called_or_skipped?(conn, Pleroma.Plugs.OAuthScopesPlug) do conn @@ -60,7 +65,7 @@ defp action(conn, params) do ) |> halt() else - super(conn, params) + conn end end end @@ -129,7 +134,16 @@ def plug do quote do alias Pleroma.Plugs.PlugHelper - def ensure_skippable, do: :noop + @doc """ + Marks a plug intentionally skipped and blocks its execution if it's present in plugs chain. + """ + def skip_plug(conn) do + PlugHelper.append_to_private_list( + conn, + PlugHelper.skipped_plugs_list_id(), + __MODULE__ + ) + end @impl Plug @doc "If marked as skipped, returns `conn`, and calls `perform/2` otherwise." @@ -138,7 +152,7 @@ def call(%Plug.Conn{} = conn, options) do conn else conn - |> PlugHelper.append_to_called_plugs(__MODULE__) + |> PlugHelper.append_to_private_list(PlugHelper.called_plugs_list_id(), __MODULE__) |> perform(options) end end diff --git a/test/plugs/authentication_plug_test.exs b/test/plugs/authentication_plug_test.exs index ae2f3f8ec..646bda9d3 100644 --- a/test/plugs/authentication_plug_test.exs +++ b/test/plugs/authentication_plug_test.exs @@ -6,6 +6,8 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do use Pleroma.Web.ConnCase, async: true alias Pleroma.Plugs.AuthenticationPlug + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Plugs.PlugHelper alias Pleroma.User import ExUnit.CaptureLog @@ -36,13 +38,16 @@ test "it does nothing if a user is assigned", %{conn: conn} do assert ret_conn == conn end - test "with a correct password in the credentials, it assigns the auth_user", %{conn: conn} do + test "with a correct password in the credentials, " <> + "it assigns the auth_user and marks OAuthScopesPlug as skipped", + %{conn: conn} do conn = conn |> assign(:auth_credentials, %{password: "guy"}) |> AuthenticationPlug.call(%{}) assert conn.assigns.user == conn.assigns.auth_user + assert PlugHelper.plug_skipped?(conn, OAuthScopesPlug) end test "with a wrong password in the credentials, it does nothing", %{conn: conn} do diff --git a/test/plugs/legacy_authentication_plug_test.exs b/test/plugs/legacy_authentication_plug_test.exs index 7559de7d3..3b8c07627 100644 --- a/test/plugs/legacy_authentication_plug_test.exs +++ b/test/plugs/legacy_authentication_plug_test.exs @@ -8,6 +8,8 @@ defmodule Pleroma.Plugs.LegacyAuthenticationPlugTest do import Pleroma.Factory alias Pleroma.Plugs.LegacyAuthenticationPlug + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Plugs.PlugHelper alias Pleroma.User setup do @@ -36,7 +38,8 @@ test "it does nothing if a user is assigned", %{conn: conn, user: user} do end @tag :skip_on_mac - test "it authenticates the auth_user if present and password is correct and resets the password", + test "if `auth_user` is present and password is correct, " <> + "it authenticates the user, resets the password, marks OAuthScopesPlug as skipped", %{ conn: conn, user: user @@ -49,6 +52,7 @@ test "it authenticates the auth_user if present and password is correct and rese conn = LegacyAuthenticationPlug.call(conn, %{}) assert conn.assigns.user.id == user.id + assert PlugHelper.plug_skipped?(conn, OAuthScopesPlug) end @tag :skip_on_mac diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index abab7abb0..edbc94227 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -7,7 +7,6 @@ defmodule Pleroma.Plugs.OAuthScopesPlugTest do alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug - alias Pleroma.Plugs.PlugHelper alias Pleroma.Repo import Mock @@ -21,7 +20,7 @@ test "is not performed if marked as skipped", %{conn: conn} do with_mock OAuthScopesPlug, [:passthrough], perform: &passthrough([&1, &2]) do conn = conn - |> PlugHelper.append_to_skipped_plugs(OAuthScopesPlug) + |> OAuthScopesPlug.skip_plug() |> OAuthScopesPlug.call(%{scopes: ["random_scope"]}) refute called(OAuthScopesPlug.perform(:_, :_)) diff --git a/test/web/auth/basic_auth_test.exs b/test/web/auth/basic_auth_test.exs new file mode 100644 index 000000000..64f8a6863 --- /dev/null +++ b/test/web/auth/basic_auth_test.exs @@ -0,0 +1,46 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Auth.BasicAuthTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + + test "with HTTP Basic Auth used, grants access to OAuth scope-restricted endpoints", %{ + conn: conn + } do + user = insert(:user) + assert Comeonin.Pbkdf2.checkpw("test", user.password_hash) + + basic_auth_contents = + (URI.encode_www_form(user.nickname) <> ":" <> URI.encode_www_form("test")) + |> Base.encode64() + + # Succeeds with HTTP Basic Auth + response = + conn + |> put_req_header("authorization", "Basic " <> basic_auth_contents) + |> get("/api/v1/accounts/verify_credentials") + |> json_response(200) + + user_nickname = user.nickname + assert %{"username" => ^user_nickname} = response + + # Succeeds with a properly scoped OAuth token + valid_token = insert(:oauth_token, scopes: ["read:accounts"]) + + conn + |> put_req_header("authorization", "Bearer #{valid_token.token}") + |> get("/api/v1/accounts/verify_credentials") + |> json_response(200) + + # Fails with a wrong-scoped OAuth token (proof of restriction) + invalid_token = insert(:oauth_token, scopes: ["read:something"]) + + conn + |> put_req_header("authorization", "Bearer #{invalid_token.token}") + |> get("/api/v1/accounts/verify_credentials") + |> json_response(403) + end +end From 24e0db6310851783375549e1e68c661c237261a5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 17 Apr 2020 13:22:25 -0500 Subject: [PATCH 064/137] pleroma-fe bundle: update to ac9985aedbc2ed53121eec06a95013186c4eefd4 --- priv/static/font/fontello.1575660578688.eot | Bin 24628 -> 0 bytes priv/static/font/fontello.1575660578688.svg | 126 ------------------ priv/static/font/fontello.1575660578688.ttf | Bin 24460 -> 0 bytes priv/static/font/fontello.1575660578688.woff | Bin 14832 -> 0 bytes priv/static/font/fontello.1575660578688.woff2 | Bin 12664 -> 0 bytes priv/static/font/fontello.1575662648966.eot | Bin 24628 -> 0 bytes priv/static/font/fontello.1575662648966.svg | 126 ------------------ priv/static/font/fontello.1575662648966.ttf | Bin 24460 -> 0 bytes priv/static/font/fontello.1575662648966.woff | Bin 14832 -> 0 bytes priv/static/font/fontello.1575662648966.woff2 | Bin 12628 -> 0 bytes priv/static/fontello.1575660578688.css | Bin 3491 -> 0 bytes priv/static/fontello.1575662648966.css | Bin 3491 -> 0 bytes priv/static/index.html | 2 +- .../static/font/fontello.1583594169021.woff2 | Bin 11564 -> 0 bytes ...4169021.eot => fontello.1587147224637.eot} | Bin 22444 -> 22444 bytes ...4169021.svg => fontello.1587147224637.svg} | 0 ...4169021.ttf => fontello.1587147224637.ttf} | Bin 22276 -> 22276 bytes ...69021.woff => fontello.1587147224637.woff} | Bin 13656 -> 13656 bytes .../static/font/fontello.1587147224637.woff2 | Bin 0 -> 11544 bytes ...4169021.css => fontello.1587147224637.css} | Bin 3296 -> 3296 bytes .../static/js/app.5c94bdec79a7d0f3cfcb.js | Bin 1033661 -> 0 bytes .../static/js/app.5c94bdec79a7d0f3cfcb.js.map | Bin 1658468 -> 0 bytes .../static/js/app.def6476e8bc9b214218b.js | Bin 0 -> 1045614 bytes .../static/js/app.def6476e8bc9b214218b.js.map | Bin 0 -> 1658859 bytes priv/static/sw-pleroma.js | Bin 31329 -> 31329 bytes 25 files changed, 1 insertion(+), 253 deletions(-) delete mode 100644 priv/static/font/fontello.1575660578688.eot delete mode 100644 priv/static/font/fontello.1575660578688.svg delete mode 100644 priv/static/font/fontello.1575660578688.ttf delete mode 100644 priv/static/font/fontello.1575660578688.woff delete mode 100644 priv/static/font/fontello.1575660578688.woff2 delete mode 100644 priv/static/font/fontello.1575662648966.eot delete mode 100644 priv/static/font/fontello.1575662648966.svg delete mode 100644 priv/static/font/fontello.1575662648966.ttf delete mode 100644 priv/static/font/fontello.1575662648966.woff delete mode 100644 priv/static/font/fontello.1575662648966.woff2 delete mode 100644 priv/static/fontello.1575660578688.css delete mode 100644 priv/static/fontello.1575662648966.css delete mode 100644 priv/static/static/font/fontello.1583594169021.woff2 rename priv/static/static/font/{fontello.1583594169021.eot => fontello.1587147224637.eot} (98%) rename priv/static/static/font/{fontello.1583594169021.svg => fontello.1587147224637.svg} (100%) rename priv/static/static/font/{fontello.1583594169021.ttf => fontello.1587147224637.ttf} (99%) rename priv/static/static/font/{fontello.1583594169021.woff => fontello.1587147224637.woff} (98%) create mode 100644 priv/static/static/font/fontello.1587147224637.woff2 rename priv/static/static/{fontello.1583594169021.css => fontello.1587147224637.css} (89%) delete mode 100644 priv/static/static/js/app.5c94bdec79a7d0f3cfcb.js delete mode 100644 priv/static/static/js/app.5c94bdec79a7d0f3cfcb.js.map create mode 100644 priv/static/static/js/app.def6476e8bc9b214218b.js create mode 100644 priv/static/static/js/app.def6476e8bc9b214218b.js.map diff --git a/priv/static/font/fontello.1575660578688.eot b/priv/static/font/fontello.1575660578688.eot deleted file mode 100644 index 31a66127f4af543f01bdfddb026350b4da88f620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24628 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 diff --git a/priv/static/font/fontello.1575660578688.svg b/priv/static/font/fontello.1575660578688.svg deleted file mode 100644 index 19fa56ba4..000000000 --- a/priv/static/font/fontello.1575660578688.svg +++ /dev/null @@ -1,126 +0,0 @@ - - - -Copyright (C) 2019 by original authors @ fontello.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/priv/static/font/fontello.1575660578688.ttf b/priv/static/font/fontello.1575660578688.ttf deleted file mode 100644 index 7e990495e49d0417a3d64fa9e02321b0d8e29a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24460 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 O`rCQwqYxBuwf`U8^R8$B diff --git a/priv/static/font/fontello.1575660578688.woff b/priv/static/font/fontello.1575660578688.woff deleted file mode 100644 index 239190cba188279cf239b56d11dd8efc50b065ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14832 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 - - -Copyright (C) 2019 by original authors @ fontello.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/priv/static/font/fontello.1575662648966.ttf b/priv/static/font/fontello.1575662648966.ttf deleted file mode 100644 index ec67a3d00aafa0a7181035459a528ccc5a30fe99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24460 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 N-MsX12nx8`{~yr1tZD!N diff --git a/priv/static/font/fontello.1575662648966.woff b/priv/static/font/fontello.1575662648966.woff deleted file mode 100644 index feee99308142ce9baac531d51fa91f6e182f0c65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14832 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 C)+MI^ diff --git a/priv/static/fontello.1575660578688.css b/priv/static/fontello.1575660578688.css deleted file mode 100644 index f232f56000450f5ea9af456fd4c9bbcf4da267a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3491 zcmb7G+iu%95PgonLeNvQC|%J>Y}ZABzV0{d1)!**#0@2?Bo)^!_TP7;x>-%C5gNcS zAn9=C%;n7Rlkr^=Mrp{tZEmg)t#y}EmjAAO7xNFBn;7&d8-jb2Z{LlO=?|RqTlsK! z*zb#n!*PE+Zo#Mg_Og%}b~J?nUPU}U)wAQ%6Q*yf!WnGcq*K<7*>OMK#&mJ;|I2?jn?JNuG5-BA zw^%Ka|8+W*fEk6i*Dt?)%(EAtRw_NYe&K}S6MImPBb5%2U1ekM6n2g6ob5oA&g(~f zpWsUp6=)w+vc4O?HxO*XPiI@D=9Ecj@u5|rww(yygWm3@m(yY8Y>nqM_5=h(P86S1 zu&SGw7}Ge6N=orVC*=8gJPXxx z=rkSHb5hOmqr}(YB+#K>2a_1JZ?W!aO$nx;{nsk%){+QhCX54=ON%5EVMI>MSB%R$ z5^C*y$<~KXhB6G1?JG&79zlhb9^B7sqpE*~$n+B&CBdd4E zeYD(cm-j?l6XAe&0sIMeOi7~LaeXl6F?D1@sj3PPqbR-S#ZLMTml&TwG*5<<>U+L2 z2a*=mRl!@X`Q?FByzwoF9hdJN$zY>mlN7Ug&F($9TznpUg6l1CQMg7HBppum$@j}l x5KBVTjS5MW{6$BSZS&RpR`6Z5BQ>wpP;(k6fNECt)Ad5(HF@P8Wn}f8{eMdWVc`G( diff --git a/priv/static/fontello.1575662648966.css b/priv/static/fontello.1575662648966.css deleted file mode 100644 index a47f73e3a25628ce8b10ab55b917d5d480528f7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3491 zcmb7G+iu%95PgonLeNuFlwQ+z9LGh0eeE}Nw*W;AC2lBDC8@Y>vH!j!)y-;BjnDvw z0ZE55XD(-ke;VH=VU&jK`|9TU&{%glW%)<#+nB#!-Nc|zSs&b+eEr7&8UMgJzm|9R zcZb9Fus=Q=4r}l!zkMw}Gd?sby~&{|pe&&jzJoShI>>L|t!{39!|&M}v(0axEnS~q zar(vK-}ao6nH)`_hgT7gPu1l3_=M>jt8fNe)#;SALw4NHw=rED{QvUb)#{UWD#p(r za*Ndx`QN8g0hm#Ecm4AAL!Q0(v{32M^$RBqpV)zV9H_K_>`EIur?6{m>ud|6a9%&+ z`vhN;C_($6lJ)KIy@p^DemdJS)u&8CgAa`gm2E}%5%hXHz8nuLXDd9Xu_quPa-{gA zf>rG_JtH;+)yAQpo_URA>T52ED+dP8UpJqhbmyt1D6xLsG+-&mq*)z89oL41_l~Zi& zY`f#2yX_PjphF>F8-g-0QW9uPD$FC1>n}(FO_vzUh~H5X=?suqqI87RvD_%=AQOb?O7mn@8fs6#QgM@GMkM zq2qK|&Ph4N4-#L7lR*1!8BAi-zQMYuB_)^*?Y~A@x0FO6GhrB@Tv{ZV2m^9tzF=JL zNT`+b1zR6F8H&(Hwyz|SdIS{~dhjr`tU6%4@8qF2dvJp zac0LKdLZyY>>_^YRRCrTn~fnE!g^?Yqk&Ma`C1239h%mS>YPFA?a|cOTL?D yf>;uwu2o2);4eCoY@2W1H-hh~Evb2>`ij%Q2B>CLH(oCkUXvH@QAUPleroma
\ No newline at end of file +Pleroma
\ No newline at end of file diff --git a/priv/static/static/font/fontello.1583594169021.woff2 b/priv/static/static/font/fontello.1583594169021.woff2 deleted file mode 100644 index b963e948916730f18ba7386213855cc8f10c6b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11564 zcmV+{Ez{C>Pew8T0RR9104*#44*&oF09OP604&r10RR9100000000000000000000 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 J^AVR9LI9nD79#)v delta 60 zcmZ3po^j23#tAko>D;a26CGZ#NX(a7v{{F-##u(Zl{-D2-{va=H}eYyAh^|;T?L~z JA8~mh1ORGH6lwqf diff --git a/priv/static/static/font/fontello.1583594169021.svg b/priv/static/static/font/fontello.1587147224637.svg similarity index 100% rename from priv/static/static/font/fontello.1583594169021.svg rename to priv/static/static/font/fontello.1587147224637.svg diff --git a/priv/static/static/font/fontello.1583594169021.ttf b/priv/static/static/font/fontello.1587147224637.ttf similarity index 99% rename from priv/static/static/font/fontello.1583594169021.ttf rename to priv/static/static/font/fontello.1587147224637.ttf index 5ed36e9aa80274d61f5859b1204103f88a826894..ec6f7f9b47ead3494c58b530b7582b99b1062fff 100644 GIT binary patch delta 51 zcmZo!$JnxtaY6%&BzH&F#+Djq8L>6`*W>wZzA|t#zhD4@Tl*Kq!RXC0E-!=t*o6{3 delta 51 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

#Q+1u7#+kOX?5ZfA%NRPB+(1qD&?5%2@# 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

Hn}@gtz!p)$p(0A?L9gXMn_0?; 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%0Ap893v_fHA38Nr+}?#T<~* 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%0AQ8_IJm{sM!=7O(VuJY!m%VV z#cJ^05hzBQtlN+9=s>{KQV~`Ok5eOAEQA4b?L1Q(m7I_o2%It^sVoqr%w$pkU>Clj zlQSfj*lXF;JKY`QDB0O=q2x2J;VuHH<&UT11uFNzBXG)s%4nD^7O;|$@$cR*p{Q({ z!SV3aU2DBJM@-$A2t9FEL5fJ?s7`)Fl>9k?l7({zhMY{l(&KBb?`Hd1m=0_+|Aa{h zQW3pC0zuxX7n}_Jbynz)30vLQw6yY6YbIrhB(enhy}R-mM@PbZHoAD6A~0_^i*;RSN(x6Zq{vh@_= z@LPpA{2|w07Xp|~Bp{*mFYteL_}@TALsEF0dkAM;crskJ{@#1{UE|Jn>kjUI{L!Ha z{Gj!VeY$O*cJTC1Ju~)pONQMm4ojC~^=a0jI+v|KA~A#bUcbY)9n8B^^{t(-o#unf z1LJ_)<+ogO<+!PDp=n;8$)`K`bVrBXEls)j>3s}qXrCR{O!?8;Zy&mE-ym1dQj$r? z>i;BZWodrYRLR8^?X2s%bLm+1zat-kl(6^{lM!~`{i*!M_>+e3egStR)ZS}ie`(nT z8n}AI*kC%i)Bjw+PrZXK%o6Ft7$p>e#la^7(cQ68zQ9erZbU{7L1y!b=;WbRz>Nh$ zF{KVyaxFo`gW@;AHvTvHG;QMfM6g-*At`p5HT;%(^glxJ40UXZOLX=LUbR!z`-|Ei zrg88RR1AZ+JR5^DHSWE8y7fN??LYkPUaJm`6%uB>n<2=|GmVhYm3%`%?34(LcjE(< zMV;)v?9CGls|&&RTS~JN*y4Axijm>7J+BGY^ZSO;mw0j7>4toyN-!BneH1V+TYb8X zKm>#l&vK+S8ONC)CatA0KN!~1a;#<>iX=JVM<7fmm@~(ArWl!bA>TP|)!%3hz<~RF z0cITHXuzJjW-m0`SI`(7WY(h4wJ7M?7OAULIX|GB5K)!ZjC=;v5?vYzd-2-P&kEYN zdplo7?S?H1b!_ReqXcD+ZO>bEWGcgiT?bWwdnuPj05<@cw?*^7d`mvx_7n2_cK0*h zY5x_`jF#x}6gCD~6m^ZJ8pjY4fGDl;C$z!#&#C?iTPfwmuK7rQ@a!6bz(0|+icRE1 z>z{PO{-0nPR@C_cN5{%U{{@@gk333$rU6F3!x5!)i=W6L*lhib*EkLT>3edDTa)%} zm^0~J{T}pL$XbVgpdO#Mf1OW37cctYo{{!uGDU(x)F7gU6%(CALYtK`WRfeearP{%8H*}z#R>%oN$dGxRsIRrN-ucrxR8*H78tQW0)dfjzuzCf=y zbD#xf!VGdvX~zxX#A)w*H)>@NV^_e4v%jX9HISS*#AWNRe%FiS)5$xuw_JI^`Nt8F z2G>kKgML(kCcizdcMU2Sf_vd&>AM-&UulZ#mcFK?rXbjL#4Ct1EdDi)-3RHp#lsl0 zvfSifFTSoz|K7&DZ+)qfU#T%#Y`B-L{|?~gSy^-8tcDn_IpXeA?t~F<+^jdHDq@0v zaO1)vn^?;Rm!tBi4VVpJOp>!*);z<}6?g^j9C_bbyn72Li_p+(Wq*)S%&7^zT&LNE z0Zhyxyf4N0CCc*^H)qy@FNguvUjk4$wExdW@$7pgI32{G8O#s5i+6P>pKw&OEtc&= zpk47Rr`L%c@^Frz-+6Lz3HC_HB^99=@gl#lHpO&sd>5I@_2;5YGnjkMdvvw7j! z9-hG_qsb&qfA;}1m+p&PQvCXXyf(?dXugSGKQyn|06f;R@cNOwHi^P$nN%7sDc`2d z=LQEh9GdP#bF0lY``E0dNy+*xlYMOLvW_h;jZXDK;M5&KPq&;w(#7R3e?S}!?Du*8 zzu15ew};O@fUr=c5~cg_o2493+XDHi zpPx>D9YJ9reLQuVzq#!;c=U4e4CYY2fSvyB30z$!*=RiPb{@#bKhB3A*%26Jc)ko? zvYt49BMsl#FPPvo`tb%CEGLUslkqtpv!w9%_=tbQ(w9TEglaHc86{x|y(~!1moTvZ zI{GO$X;NQJm`8TZ3hbs6LP8vG@I7-OeJk=bdpgUI75UZV=ZRE(N8qIlH9h;|Xef)N zXm|e0Xg)#_3(3xyF(RMoYi(-R;3ba6c#L$z?1YL^$=Qm($D{YTJVbABpwRbNg8UKB z9do*Dp%Tt(1V@C?B4`Q#V>ADZ`~;$B@Eie{UZ;TjKARjb31XYP80DHq#~C_rC0abB(j(VITvLpUnP8-@d9;I^Sqe|iRV=(Of+@oai_ZgB-yDSd z9Km%@(EJQlX7~{5g4|p^j++^6Vu*+o{5mQnQQWe)yEo$DV;jaL*dtI5iX3@&l(*m- z23;&t1tZqxI3HlW!_je&Dwshn-sy5gsa7)hT0sajp7NB4PkB5c$AP?CwA{>Ti-#iv z!W;M(7jbnS*szm!=(2Mo1h_aG_Ny}ea))=mTS(~(=|_1%xTv-negP(DaWWFGg$3<@1Tc!-nY6kH?AV_o9>UuH?6AHC zCZL4Ai*|F%Xz~nX{LLX;#1Rs3tC5$kH*O4#D-M%FuU?8+DU&&u-FFaBaolIfx6FU6 zRymxUE}pUwK(_+^b}&E=a~_x+&k&*|MKpNp1>A4AFGljwk6W+4UOr-%imZz*IQ z;;M){awFEee}Sf_QY!ulBT75SZ2LzbUGG&?3NFw(%DX|%3ZCfwS?~UYo}sY_n7PUS zLS~K}{@f7^1$X_m3K6vz&+DyOehfcAcvIkjy@FSt+=$sQ|LzC=MPfM~0hhY>bLiHY z-W5rYPZo=_?!9~CDavh~fP8lMw)eL0A*5AUmRLs7hmug;5M5t_v+Hyx*%B`2*&(v+ zZB<%5qYUc!>>=N^>VBWSFIBS29ZIguD- z0#5E(4sFa#nK-k1AF{L2;Pvtd7wv!LjxU%@J&OqD;JxrKgyRb^Kuc(q4E(?-m2P~D zKw_VyU9*3Lf85ak?c{N0T$ zq*#p|2p%GnRom;*akDYPaC696&Gz(t^TKr4*;Sy~xODUQQ83QPm_bZ$kGfOSkyAZt zrUS&$6a^=hC~PS*p~ZtfFAPl!eRma?AZ47ugSwZFk*#$e;JNG| z)GLq`wgC|}oxq&~qKKGEK4vqx-#^Rf8B3iDiayaERnw^y+OZP@;GJ#djd9mFqXNYo zM(_a{X?W59ynEMabsiiXKo$UoJ`3*L3Jh({TeB5dIxb@ASl2jShovKW1yJ&BnJ+r{ zgP6SvU%{_{#SyLfy=tVL_QnCynqE6*(=5`O$05>Ai%2^$9YJi2b?}p>%^HE&8^mN9 zUv0e#;Hu$0KxpMh-~fW2oig1i9p+`^7t#<~)Wwk#M3B}KhULgXI9$%gW>2DXGWF+V z@?-=Ukj4LcLdAJ@Jnv4PWNrSj>a={bfUgo<{=4t$%f%3hPQufM7!eB13@w3;o_`nlecG1=+vCh`(4v+rxUe% zi067jAEGCm(D4Q*RA-_mbPlsdbd=ePJ))iR5e1%B9MOkzL_wS6PDyG@9Kol9jVm5y zDl%1&G`+42Nm~G5e}UjVCiv7rc!n7dOJCy)+7hjK5H!ZwA|4UmoJwQlItlY`|wb zcy^}G26%QV?H;0*)KDLyNLTBG5BKowP@kRP*|9c6QNIuR@E8w|^dUZ0sZ^y0%nEmU?72%|AU9R9w_sDA4bvYEBBIuKW;NJ=> zMq&(6W>H>!py6jMl_+iN!Xy6?5+(5TF6W3!g8#3G&o2l3cQmp8imhmz%TID<#+;>Q zBWmrTcQ9Hf{)sVXXj{r!v{?>}?bdJ%D-x7p@1dik^y>+j>6O~jJZ&(CdO>{J-av) zwN_XD=4R+$zGHbIiXwfZ?VnBt&p*KkGl3yWTG%a>A7GyJ>ELuOe~`-m6oAF~7r}YZ z+=b!lyuGn4cE!7Q;WYFf663no)*^`y%%AJOF$PO~qJORb!k9quh5ohv3kFBSskhF5 z*SD5?^CxTS#b<_<@5+lqh)P;3vwl$R%vl4cfgtP<<}`~L_ZONdkV9)UZ~;>Y0Xqab z!2NN|e@1~TZQ$EPR01o4#1yQwJ7YvAm?P*8+CFp!Y%>y3z*RVYs7X%{Da#t(;Ix6T z&^3aAZqOfzVSfxU8}y*zoQA!@Pbuh|*))I!%&W&-G=}yY0~FSWC1H_f5coie?VOPK zA%=vtq&Y9w5xgI#HYgEAKk+l`-HBoh(eI@22=SN3u!r0%5GB5uGB*oyp22~80`~ll zJjNrq)(*hRj|TD{abe+fEXl6r?E>iqyHtdD%Rd?%11HC=1{mek7AYHK z#i-qLL*)pl)>G80*6)}AeG`pp?sNw`svxd+GB{6Ms<{}y#y z*>d>rc*%?1wd9YerL3iY_wEUro1S_o|9S_H4)qZ~=?&qxF7!fk8i6*$?oj8C&!5i( zplH^wvbE=g!$ygrUKp1kOoKdO9be0^**dV=tqzan0^yxTPP?|LKQYriWWX1~Z2U zyAFZ{dW_D_d}sbo*BMA5Fy@K0D^RG`S&?SBuc#@;08>sx(4(||h=7-<5^R{);QTf( zj&X=#y@s^7_=uD%(L19l?x78QGvs|fIMhu=7#JhL_7_BI*;T)u;Fb%BaIpubAR&J8 zc0q`CX$1dP=)7rp*?ht&>*!sbJzNBeo%cYwEVt#?1idwaFfDf{>B{6%f>a(pXL2>Y ztWuOt7CR8UWoQQ&2RM2iE~W-BAhU2G7-1uFIfJ?kVmNeSc5Gb8+wlFx&-`$*JOzp( zq@CGTA&ld~jyzP1b1nT-mNTgBdv*f&#bW9E^rnv|`j)3Grg}VPToW`U=55Ft&f6fb zS$f};Ez)IZ4?L@N7Z?1-g1>%Q5r5z`ulR0zo=M4=ue}LlLU#dUXmW<|~Ny z4woy?bvhov{RUPll{~{P-(oIE7RWo7in>3lqnFMeuFcDdFuwHSCV@2EH|VW8?pOvp zc!1#)E6fF8e&NC-Yhv-jA;{gkdQTX9(Pqp6qPp|~11{{Zxh|jv^m;ePyMKEQ3%BVE zcuA%$0tlXoFv$ZRB(K&p-Ncvh-IMc~{OTR?50Uz4gj4EMCKd;g>mF+a3z~fOgs(ul z;z8uA(u9Q}kiP!C^a1bsioW=&)E7^(vUiJ0$mkk-i&j0v6Brw7YNErQAES0QBnR$> zG24Yr+h_R1#2hTHh_O3pj9S9JMel51p9- z+suPxY^Wlw!j@NeWc2WSx~vCEbSrGKk;YG4f z2d)kus@z6 z%T5c@mSGDT^)Is zA`gkVNi$1wbx35*E40eU?|YfC)ZXpV6OkrM?~NRSZYW?dIi8u0|8U5Q$iL7p01Jv? zKU!|MQgXA)25(V>L4mpLZ9|Pv;7ohJad0bjV)@&x`$z^bjaMy8D}Bp}YD+9E{-QjP zGQ6ZRa_^Qp^EVj?M(M474b2#cdr#Cj%s?ex5)|QL{hJQCP*up23KfxS4;FQ}VM#Q78QZIj3Nt?as}?I~hbauI>Br z%N{g{Wbk8jVNVkT&Ur$+fVX+cn+8?{8|D8WfC zK4Sh2@P)5|RTBOpNHTHAn2-VJU-;8_=VMpmW=O$HjdD@j1ZAggd_n|(7PWX#a4dn9 z;pp)wJR(@zPgc}SuFPJ58{?Yg0|HdjMpp|9LPJdKl8R|6#OteU;#+D~D-jD~nRe*=Lo0AKS$xQN1ySJs1oFIGvA z)amcbe2I8K*hzw(DsOKn+zaRw*j0%Mkp6!%fqm(v8>|Y>CRu?wZZf1VT+U`tqVfSm z`@~^kKoJAp9kl?5mB{!7)!A}3p=Arf?VjdHti1cwu$ry~O-e}kA9Rkc!HN52ST2eT zmow+!Z(M*dZpqqTWFJEIBZQ+_xVt64J-_n8gKsxjI9ls1Kk-*H?p<3{z(16A2Yp{- z-Or<-({Il!aLK?Rwp(KBp~ndKKE3mnb445&=m#y3>QEZkIiX&YZGeizs#Z3bNeTC8 zC`(X&`0go#G*=1N4{SrVfN-=M6wI$kd<5&6gpN$%&88j^D09uf=;i<(wgQlo^flqs5y$1J~Ckgvufa43I2ji_$lIYvsN$#`t*C|u7GC2lJ=29-EMqS0tSTh;&dc5zyzj*oh3NM z^&Rq~icTXqq}j-o{inX)WT+I2x%oh=z!c3W&3^itnE!|s3evwGO(sDi4=-?d@uBiiRc;gGfa8vDcB-Iduv%Vq(UHBwy@tY=3<>w1 zQFN6JZbo7g5&mp6+3YA@iE5x%@SWjVT#b*_cfBJU%gHsTTD2F_;g_Bzb)7g+PJek7 z3Si{ps`(bX-UM-Q&I1K5Tvuh!my=>&UvQe`&aXdFK&0R+RDJd$GU_y`o~j`sjBqh4 z$*37{a~k6YDpOJDEDD}XWI0opkR_|;gR5+Y-WqNeiRG@Qs%FS9vfwq>Mx{zCprVEQ z-hYCHIYJi*7_g7h*g!(Ii6YMW%=jp>_%5&L10FfTVN|>}z?)lRX~dGNEj408RLF^> zks=!+7Z7-XIUMy@DeeN$1yb9-O^pg|Ndu;n3YLL)k>fXv-piiV%8OWL_LEojiMGss zb&%i<33Dw;nU_*i8v%$5#RhXT9qR;}gLI96(m-lUpPrU7o(531r$A+>Jt32#m;cf| z5s}1if2pT2L)pY?kyl_N#Fq*1EPk=oR8g1mdTTGz9foxj(o; zD((p#cBgUicVw0|19Ydz7|9e{SxY+ynRZ=w=OtPLk59A1mOfhjo{(mGSz4toT?zH1 z*d|sU2NAG$tn*IGF;@FuyQ9_aRbF{7GYWe?iF2ALSWbhW@P2 z{)lJ)#b+I~`yYMwUwHPP@@xkW|EdrF6A%Ae9&Y2|U-aRB<6*w=!49wwTmAyk?lUCw z;AP;|4{||UCI&mCE;g`IO`p_l9xuR^`a^ZGEvr^xB8-JP*fpG|j?u8HGx*B^LRQ=> zqg{oKFgr$AihDk|dv}1S6np{=$ru4Bp2^B0mSuE_0(0kHfPlh^^-s$Jh#~QrS9k%Ci;mdpY zO|P^TnuzAMx5S@VPwx!>(#KH*o!*@f;=^!+_HHU_TeBE1tenugw?=es3=@0{Je1*S zD3;`=;_e-U0NUE8-}H76;(F)U+U@V&J^BU@G}}YQbm{dp^O_+5wQJS_)b(106!zE^ z6j7&)2gDkM3y!$}9I3!-GWW?WLPpR#@*0a&W8Ut-dEa$(W5#qG|)))Al7azRzRU`YON zvFKe0dVu%VXs|AcCw*35kY#2>wCg%J^mh6<_wHz;=#e|x3+2!Qf*@7Dg;Ye_=Z>c_ zsOYgRpLF2JDHD5*TuottkS&9bk>BmENmmbo^n1<9z zNaOl&j}VfFm%Ten{IbZ`i=Dtx#K;h@8cM0siyy143Xz8-GBNbmG=_sI(7+y5gybPm z-B_4dud(pv_MMmnz+VsXVc(r_K82E%2E zI-ei1#R=yRt_NXN4gPG=o_^X~y=qwBkXd;h$`Mv_-qp}&rjfXM5IS9DPDv3N&soIC zMw6`$RiJT^{b|h&pp-rO0@N`Y2=rWrfm?b=#p5=Jr(%o{+b}NKt;3!7E6h>U)FwUA z%{zjrw@lq(=3YJYG7MT*hS9zNH_5+P0#vMHwC92EH$p z*g*sxRzAm$U3Y&b8|}{un6Bu+!qjH~LT(ls{zR%C$VJhME<_WG8=z5@|Luk|D z{LT64(R6GIpigbW_GBA&gKSa=@Gbk-c?l~y%6Iv^KO3Fl-j*pM%wP#loQYqd=Yc+n z85s;E#0hWOh~m+u#o5}J&aYp-vIbyg{BhvdfGD`KGdEVobnAd@YlJ9AD5h-Dwirl$ ziF2E^E-HL6%CQe7+uJnss2-SPTl z^&p1xqy{{4M9Y#BRuXE~nw2J?qsFYK^7Z7x9dmy5abo7)@;8ZrqV>eIZ~cPin=eSl z`56L^W?rrC+jF3mzdXeQiz_2zb94Q)`q6kh&RNwHo{D z%72pK6GYzO#)rgO=k!nz4(zr;eK=Jh`S`rS+o4=h!DoJ`sF7t6k2nsQ%hqiVLc={p zn>5%e!ajTg{WMk7EV6z92#kj3&jS3EORMylSh`#=n;VkL4e$rD)h!Xddba4*UCu`n zh00X%)F-u(q6rDvTlITWRC_tuLIU|Q{bXPjI*pI5RsZzI$jZKeu0k|G^5ad8>8k`d znqa@7(FlwMWbi@QN0wK&_8X&Z!`e-cU@-Jg?N9g&jyegZkCc`7m_YPH2mhQgRU^ug z`Cv!p52vhbH(*Y(k9?|)y7qi134~FcO=G5CJU=V~=J4>)#HJ2&B!1!jeux0*lUDr@ zsZ5L?Y=c8$90;U~>B~2-P^JZfa|0sK(o>mJJ}#V0BTh-$@HqMHVMhU@TIAy+vkngvcfolDNtY;mOxlGW5{L zIg*V)>V5#FGt-4uarH3vfQ@@5{ix0&N4gUwY&S$FkHW+O!Pa|=DH5{-N|RMM zAc8C1);EVEnhqwG)Jpa75o!S}juocVBt z-7|<5tVh&cjl?V-JXnCqiSu^3d|$!oMoOTbKV|uZGx_;MPlY7{soj>sa zMp4zf{yW5XBPxUiwzHsbMClu>A)y1=`wcy~6Agu8kuoB}ZrIBt#qwL?SrUv6GMiAt z0W+ZcS(ownYP8JYu_r2JJofJ*Jhl*!D*#ju`yCP|MSv`P6mI;NK<%55GQTA>WQX@+ z3em5yLuC4RL5P{+3|XN+qSzNMm{nVb`qS0d4}$&U>&I+a>3KkU{JUt&>~yeEzJ;AI zHDSSH*A|xU_y$2#ec}dz)qNw1Lb+lFc;n)GdUn=5h1Zd=Ca>PUe#TN^DewaT!YMd< zLuJnCFq0!?xP-#F02MGN747b!LdKXj4nfgX!1lOq&Vc~iUuq#b7fuQ!dA<5{AHtTH z0+LqnnqeNDU<@IW(HU_wwb#XBx;VpreX%!KwHwGX)e4NnRNarOZzI8jIud2yL6$CXG#z8uzFgvU8DrN}Ft zq1V$K`F?80Fsnl{WVNh(hH||H{hDWj!L$b@tm{8ZNub(dS_3_+O=mT*bD(Io40X9= zW;Kv~Os#D^O5Gwpijv51))DNSOhVrM9x6VmJ__;`if}oK``z>JpTB*M!cJiMVNvd0 z)Ztgj41QZoErq=NKq4e3l}q`aRxN*OSQUBJt$zzAiF{Ubj3v`&B}lhgcTwy^Yg+Jv z66JWK{;jD-foxp74Q>-vzf3#$f!na9_CU&o%pXj2WifxSa{KjdPUc)NrQS?uVSr>|dr2N{a> zuxe0GvO_5FAzUp{Rs;P|qLlK`xY#AdjL9kEik|vScq7^eR@E|PsTuwJEqC z5@k7AVfz8eo00TCT{IY>4?Th7iAB|E&X1JMhFn!Z(UL=Z{Ho=dO?F zDx7{fG-uR_h`Rsz=GBkT{!!S5Mg+>O;G{umH(+T0MF!cPHMdlphAX80F&FPk$l|Qi zsi~V0aS7KD)Uh1744IH{7_E&by2 z`7dNK2q*Oqu^2oHbw!#QoX5bDf0L3Jrhqt4_|)VHM+qI9W*eRlE|>TE)Z9qK17;wf zh?)={P|j|U@$(r4X}^DsS7{j}SofVT2IR+7+#*O+|2>t~ z6+X1Mj-j+M#z_swX6v8wu`m+zlhGL>?MDZ&V7q3pkAKT|l^_=zx3rd zmmY+=w}jSj*Pfk*K&_bHb%6Ei+S4JhzMHa|Y~x}e|1xN{z@7$2%bp6LyM9KvP#;XF zyuJ1`6e`!5h#s%-1aK>$i658Vq~{DezYo;r5T_+uJlxdEE@F&L0Z zb7K04%qh~6Y82SFvg4o8N1!pn4me|P*gaZ`mMHEVygM8O@ovtf8cvJ*ZhDZ&*urKg zB8*|-3H*fzUXck%6JnIX5KKoBW&DKFz9Lc3<_iYbU=0|)kT4{Eyfo05ZSC> zKV8$aIt7vx6}y$RX0Y4`X}yg={0yAG`nCdT0}Fo(s`cGOZ6_pGP$brkWJ4N58Ot;sYa7A4yhA z`@?(+XLtOC98_q3OeY()_vOI|VwR0})@TBsl-ZE|s1;>3ULec%a@NtDq) zq8DvhI~pOO8gu2CZwebGDM!=aK`t2NpI*Vq0YX7V6Y2%=-jZD2tyh4J?%~bB!C}`y zgJXGM=ojl@VZK@c3fsa#g8SpSo+312I1Yrd<7DhE`7hT`F8F%I1jANtl11jMFqox1 z!Hv`o`|+58JhtEmKQpgqKz%?c_zQQ)0WJ~vJO&9qu%CY6 zXu;qaeSi0^Aolc0`2&RkTO%G#TYvtntv`P*H#f;nr*`(7HN0_>EQL|GXS{r{)?nItY@wbG7w;zqX zsO{W{4lIIZADQtMaGZlJg<*0~y8`J8DC@*8*KyTl=SsefP{mCZy(q;*@0;ncwsA#%{6SK>Fd>@A;$ zDwr~y8RHbPw7)nro~lBr{n+kj~D0^q2>Yoi(}oVB-J030dH9LV_N0F9#sMDt5^C8zG0{ zs;d5MdMXV9jIK{haTJYNLw^wcj>j{X)Z?++Wdo^G_+=!s1BXtrqu{q5V z5rs3=BW&zZb0};|S}ov+2SC*^)}R8Gfg<}!e*GUiZG<=#lyM%luR43Xi6O{sWU)J9 zw|W>YqUd4#=g-IDqdSY9FOGqQB>6-`b|W z&v=RdNTO`#?eRcY`Olk?1&_mo)mj+GRe)Eu#}K+7o5W{H21fNVARusAFg10YX2$u7 ztV}6l=3q#f#M3fgYk?qm7X;0a;u$C;p}-?zm-Zyo-K0{o`mV0<2=D+Vk3b6)IRUws z)@h8c3j?o3+7Jrn1H=@n>T(kG{3Ry4 zfbw~qZ=|&kq=)#NtEjpU8%m&>hY}!dZl*{@Wxp^`RgHW{Y{u{^{KI@0<UuzT1)>jn54YPL{gkRr#bY6Q*m`u`}A4ITL%QbKJ4 zeJSFZP)+4*GNq6ySWbfaK!4G;QIOHX0glKXF0R3c6(S zH(Smf&tifJ63@I)pm-Ws>L8^Zf_*j*g0dxh&4CYaRb}P4T zeh|_<+N1Opyw4aZ6(v@7T;Mx!rjk6l&;VU4o*YViEb4)wRw@eSSxi~H>!8E|fGNJ6 z>bXSV*UW)Cqi0vG&&?aF+e7VRHlO_40u4kdGF*;ZwfCbjVor~1Z~k0Ep5u?%dAkiq zNT|X6E~FNX96|BO-e-zEqC4J2m(7D~I9(a{$E&(s0UxQ_uS9GdlWJ>6Ov{6IO33wr z>hem8YbB2o5DE=GGU-oyat*hTE-a`uT$89LJfnb0w$Y?hfB2oh6YdwUmnmm zsGqf#Eb>GuSLsRt&f!ot8qP2M74;BF->E?tNIthjG)Ka3#SuyPgjv;Bv^fZ46!nJcZwqq~ zq-nte&cZB%!+bVBpY%Pfk(vRP$j1JDbB>%l$m}(5pCL2>egqR#M*TnRy<2Y_S+*wj zSExKSDfzPFsjM#g}-fOSD_PQ^v7`t(A z{%3dh{$P81Zx8ewC;L%$hFuE_nmO%TVz;rO@ovMi!`(*VlEiK! zzT#kheun%ey8VcU2o8E0t^Je`4Q*D|To^A4T^Lq@9Y87C0C(-hAAF5>|CYr3ifzSm zWw==sO9~b-VyrfURprOPwi%(Os`&ByGyo@()h`HTgBN}q_i>4!47irN(O7dAG>#$e z5=aBraNcr)X;=23;R8Xy5DmZe@k7;}$X$V>ieRzFQ2YX~F+;$_V?+mN7KI4WrN5$j zjN1hAW0Td*X4gRQrV8Kh_7Cind@5+ z)Kb6T7ZSEpq0%PXiKZgUX^vwLJUrfgy;XuXH&D6cfQCqUk!Q$Jas2SCKnZ0(U@qZx-@;3^ z)VX7zL~NcFp9E9;JtIH4byFsjF%ZtR;l8!8fKw6JS(JJhOet8_wr-P-t6V*6n+K3` z?2Df!8b+&aCL}{DCVV4e7QDG@CF-DBNKsU(?vL&njY&uN79ANWXhAOSutq2fS$i|! z(E=3&5fV3%GoUUJjqviSxmz^chuL-pF_{3AX;y!t@tt6AzVeRAjfzSm+!&CJc;^6V z#O+viY$W{4DUpJ_mLi5eRQ09338XY3H2i@ha^rB-s60~i)Nd~1%Jo?1QEP8yDKksD zQ43RH{szw5`NNBu^+nYQ=z4>hP(QiTTqZV%R9YtrY<=)8$`zI_)aIOTy;gd`mGS;l zs5%rEBO??5^4PSAuh_}aE{UZ?<{!7N&G zust4t(6HzmV?O1LF0Mm&C(=gv$?h+fXNeD{CK4^u(2OMWAPJywnacG^1Bya|tc0Bw zq=0~bHCH;sVjDiQFn+v?2W1^xNPySCXbvzJrznMvP3#402jrF-ythC_zIp{Y=^MsI z&mdd(On_d`i@Q$B#+>sCo|id=1$OL#6kPY!htv%-lYiG%6yJsT{ z8XE3`%#o&sLDX0m#8>41+?WEZz(9`rc6?R7HdoC^ZgaiB2`>2d*2W_)QgBqhHuAxw za9Qyhu{Hz%U%N%m#TT91fEsFKMa zdMp1iB`D`p>kCFGW;I!K9W7H*TAFjKHLtCcv*u{E&nBmg`88;F4T{U4ZppdbrP^#z zc35@ur6+jB?MVxEVP9s=Gs1mgV75MKmlNUi|@&ZZ%$p#6E?2?bW zERhtbnAgg`LLU5uTw_+B?rvxV7YV_iT7ut3rY%71%!7QBHodsZFgcfG;xLNG+HV*Dxx3^BULDd1t&Aw^Wf8(_@VyU z=x#7sVXIZ48GS0a|5gE9bgkizu?wQ|GzMezm1sfsu*=DDd|SLE-l3}jwQEK?y=6&2 zL8~l$o9u!tFg-#5y4p!=Pw5SLr zrkB^eCLv%|&X$yc1=GnO?Wy@i!N5;}_qd;esG%rif8#}K!>~&vFF*tR?-XIVytGHX z9-787GA1o8>H?wZNr@0L!MB>FBUl2_4(ZtRIV>6)rUadbeS{U+pIZy0)XDq9?OzY> zBkv5+$qX2ZYVnA;dE;JzkQsx#HYqEln*~UouWDpc2Ot^HRyphUzyimOu)Nf!TAKFRO5y;NY=oEBv z^+s;mY~`&H!90m&z7WM<`4~K=$@N}vv>vHK+;*&yz+-# zgpT}!1F{>ztKi(D&OvcjuLfU)$pZ8)p5u5PU*OCTx1qI^KLK$-m?9SvPNCoTzzgc| z7iZZaBJ2^qqsN-MOKBx)Gt+t0b83De#&*!)c>pdqf?I|thU`V*=0V}+&*#WaJo(OK zxeNfT`Bt=#|2pU|Zzf%m@83iS=5;llbwk^FB5P#ZS0!;`OFx_Zu&uAl{}=bKAEzfu z@Ets3h=GlR!am$Z*hKvL$MmH)AWT3oLIw{)*QE}$xV=KnHU9ST!)U2``_Ue1cN^#1 z{*?1=cWI0hg#?stqy*&RFFVk=E-&Iuikq9!vx5?nZZyly%P(L#hS&VG(5_ zb_@?46b8swpfwT`M(cUqXgyb>^*m{`CJ&;rEm;u9not{OZfV9XhyDNq+$4aXYzi*^ z!6msB97`w$^b?W$0vr^bxiN0-ycDqZ!u*ji>a(PhwS5CXkEvJ3eLDEoUl*sy9G*cF zZYx_pVSw@Io&ZylE-)IT#sPdQePS%;-Hnk9?KT$X8Zv=88t=}DMiLsoNcpDHa|q=@ zC*nZRWjowtfH5_X*t^U&!lj(zYE{g7%;b)649b}r5l8V9MjeI$T94~qaf%#~qDn-h z;44Jql=6pU&Bqtgi)~EAG^1yOigf}o9DEzm{q`+c9Z^ik%6=^J*HJj`=4CvnH033B zHF)ZGRL-P{z)jh{ypDqtW6RxCXu9oSE)-Szptn7wtpbEseF@*m6-d0yzo1BH3hPt4tH z1q*dS3KDBobTr&Z0S+sZs>7le_UZ>YhQHh#e5u(>e}HGzpZ)%kccITdy>N&q_**#h z({hqcAKC*{KbFXiF0Mu2=Vu_1U;w^l^V&Qt z+Nh8K)WLi~Gu+I~#DNc+=s)3z0!$0BSAGIZp(C;he$@oL4BH$tnKGSAhnLy{}G;A8j$S`jAog`pJs7AYf`7vtUDX*PcunJ*qLo+Fv5)UAQTy5V(s?cosy zY&`hdrYzC-&m@G#v=yBZE~ZTX7A_M%y|$;f2Wz|3ocbetATyu)y@0op*v;~0#spNA z_BJ_}B;j6|G2z}G^&zwpA)7Z$-_FQ~^24vr^EbokUwU8($eW&_%qf$mxhCb#?w+YS z4ww6FZKrfBQ_SC7#*+SA;a2t!(N@DEp` zQ!BbJkYfBSaW@$>4#%SFOb|DQy#M6^6S-4_d&O|CO~n{)Dw#fHdAz)Wqm2Akwg#%S z2V|XTP%ur9SVLkuW)Ytm_1a~u%ifq?GiGFP(>#8Xwq16(|2s0UL^%}+At!BK@i^b} zJ_4a-8%g}nrxV7NaqDz1;T>q3sBZ|I@pK4g3G>Gsj%RQI05I|bGN%b=f#Q;a?uQ>v z0nqb4a@C`RTOF=YvblqUtWu)EFz1z#crpaQT07(pP1^8_&|XgNX+f^={v>N!c79>5K_%W>c>dj!R9WEb{s z!yrF4#{SSdOoPPKw+f@dYXOKbn992+Gf)Xc9T@1l*VyDZG*#3fAcYr1$1N(FK`}Ub zcs2M5X>)!EBLzzVGowR*#ss?_em52En)v#pt^X|W9P<&d%@JrQoWFfLMa<>fx94x) zPQ)BdMFC8Ma3Qnqgzl?x1aj^y6Sem?9o(No-l7ATmO%}1=V_$iKg zCcmIKI9$lDU(vTye*GFW2Bii1AAJn%US7&Clt+Q$fX~2Jz2_$TfDHist1f=brssJd_Jj#jI1eS0ulS)a*cj(ko`27r zbK?>&P^jg3*!OOHh{xTyyWvaTA+6Tgo6R2lGF=;a1ojsv#H}MU>nPgS0sGqi!SO!B z`!G=~DQjO6O2RjnWS2s<5tkx=kF&-aK-pJbgM&INhrs3uLl@m)Wj}jJD2%NiGG7=d zw_F~B{TR`(uWFlY-+i+2X8UmkyZgB0h3r0`+;p?f+LjG~3OdT>z>Su5j#dYK4S=`{ z-H2{RHGrt=7r1~JCb*SxC=sVyKQ1`y$Do0@F@cng6yX(aP@w6DAD)OKCHNpyyYUBc z{;g*eM^xW*B8W}>t?dhWT1MHCK}P!=N>oM%(9B2DoV*5pYia!5HTpl@mLpQMny7?ofnoe zT!@1)&wOkY$kd2?7pB}(<8xxq>->g74zN0U;ipA6H zDeDK#Yma8uNV0)Da=w#&Hrp9)kG4nn>&~1%@5uA*QSn(RZ%_^Z8!FXv9Cu`8fJ>K` zQnlYuS7xw|(3JsTKLcrkBAni?P#mzl0IG)~-NKo8^W(2#@g40nAT@D5Qf1=VfVJXj z=wTcEMF|x{!TcqKxq=M`vwTt@m|O<^@I(1SG-Qv;86sB}5;Z~xQeqv+sJhIY2L=|q zt_|t@0YxRXJm`NRN}$G{S6S;kccrmiFYPsa1EE?vP*HL;fp5|T>91c5i>^MYPP_rLmZ|86)YvOuGs6L+8hV73UV|A(tSTq z9Yir&g33q6X( zg~>Q9yRmHraw)niokIBfMaBXUYdBDTL3Z!6=>&# z{!p(macLR#{=xAQ;F+*@C6+kI@7{HqDvwAZ0_s-knXwcGGO9o9pf&C$fhp#>(3{Z( z?`R1Ry&AmE5OikGdw57>^Oa=FfX!oqslsQ9A8Wot6+>LWkTeRA`O+NRymG2C#rHaP zB4;v(OVTF0KEHlSs2$V{b|$I%jdeE$^n=*#=Z7E2*Oh+gl%oTgHrO`CR*Nmy;V4mE z4dE_B@Kq2_NllrS1YCH&I7IAWHmeq}Vw$gejRRQKr}=B$#W>~%>Hw%_*608XLkFGO0m+d zCGh)uN#zCqpf4`ykD%*M%%*KYira2}!l6KMCkfK*edX6=xCeXw#(L%1KLz%WS}t0E zLj_L(UW7z?Hj-RJ?y}W9lA96LSL*DZ_GUGPkVb>%_Q00%Hif2MXkDra00z4Fj6CZ- zjSqhjvZ|0r`yb!`C7}92VbbpOpFyDA?Ej_kw?IfYM9uzzvRy_}l~~LDMLs>++K2k3 zvUdTTNhZZBDhn~a;_wmWt5MGe;~+T!9F~VRb{{5szNYro@ew-^WYGp?Pfc4>^|J@| zDsGtml=fngNvhIA=nc(7c)sn@=LIdB^Q^#e%7^w}^?Mt=yZP4s0`~L|;F)a~5wRr* zc)N>s$mj)XqkZ@*;C6T1xA;}qNiMUhVh}V7$@69e+c+CtLLYJX(j%qUtZOb7s4%|N zD^1*sV_X)EyPb7<#=?A~R`w=ly0;10gAM`iM>O|+=suz~dZh5P;-Ulru^t#;R5*$D zTwf25V7EYwpl%CAOcW*8^@GQs7PEY4Pg+lsv^Xh&5i=ewjC)Ndn+ zZPM`s%;jS61hOAKC~}-deF$UrCj-yqPo5Y}=_Ya>%2?sg95U(z;vjw=qQWjBC+d_?f-X@W(+}RV94#o*_Yy2%KK9v-6XvTYsM7t0GOQ#qfZ- zO^ny2N%I=L*$r8lEDr-i#Vkl+6i>p=6#lA)<&oy~?r=p;OynN*BD}HPC`VIC(8vg~Ggw!61Sk^pmz-u-reX-M5Q6dPL{QFo9; zt@Vo*c9xC?FCEUegzg4pBOFA?$np`i8RR`U?!q}Un1w!BzNVpVh#M7DM=WvB!KzZj zdVB>~tBPIsAP_NBXofs$?fakK(;K#=du>Lq02_z;fR;bzUz{G4(=F5} zhNFEs-|KHaxP#i${l!>ak&$}|3ho))U^$!)JVnMJ(Uz&S?hT0;XR^6@042&x`rRgXwjg*TZG-A$;n^ZQyC`VC zfmu%^9+?G2IpMyc{ZcKJg*@r@-loC{1#>GnTQiE+#e}+uOD=o@wgdTw7Pxb5f0dW) zUmUHGdI9EXQPpWv{Vn0lGF@B{lxR*#8bk2}Sc}_zgM`hgq)|=*QwY`OkPvGrEChU# zB$q*9R4U46@Ov`Nz5S3;Snz$g1M8H$clSyCYt#?VCgtlywhS;jcmb|4_`>rO+?GiF zizPw0t>)!LyeKo6YSU{|Z{5bOPMwqR_JIZr-Gk&*t_ekRk>W@p$)0!&5D&q5gDtc; zlE4_DOT4*>2v&)qJ7(eO?>q=uAl*nrnBgP}+W;LdXm{utA?Zw6_>%|;e&?GK?)Z<8 z+YFQufdE^oj0fn9K81W@plOig0`VjN{mn~v*~WJ$@Y21pi`@#ZVWoLB7^!O%yfVrB zc7w^>I6vrVlF$>uyxNFJcXpmX=Jnq_9C&9&ugDN`=$|nOi={h&)F?UO8mv0MVTV_~ z4YwMF_vW`oFG*7bTz1a0oK0-ge7aR09Z}kmPkatXK|?FW=C4ohnn!0aG5ztGH2-{D z41f6vTDKzq)gXOic!(H1QR~G4*1{;8V>01K08DYK2k1?3HW!UsM04mtQnhSi<*zBb zAx0AePS7$6!Gh_@rQ7i)(8kjErF!wa_S-~1ED#ia;h=KNUtT|*cWQe8=RUgKXoV>oM8MnnymZ2 zF+99ra^l(?sn&|LSr*DQDVvl7x+DAcE6V)x#C?Q|JUEA*p`j&on_^!lcEW4QlKQ*) zv7pQBio3+F`=Bt~AEWDw=?xSHOP~@g{90h?LR2zp8%M|`3!P5_E;qx_^D`PC;gLX1 zW@6_fEv!3H^<&M8tm9A{&P=z1y3m>onNWw~cv(y`xS2ac_8t)_(i<9$>D`{yREl!b zkrmRI^Mz5IdTptBOiduz67NmHOaVr@Hgs(kL*qG3tzk-N7H#IribrK&pg6>EqBsVh zrxXRMZ~h{f90Y0tZ5m!J+7#8n!efS?ffHd8a&(-DDDes)W1l+IpwL|(1hCUldAb^^ zss0G4M3#(NbqKvJ)Dwr;?qBEuyTJoBgwYgyg3+SupyrURNHu2GZV$6+`p}&lM#nGM!O|SDUj8s76 zipD8GPKFDd>yJ>K1`+R7E`Rk{ScYdN1%MPW#wC@!otgrh@NHr?OVIx7EK8_|0b#_1 zaD(?nm;#<+J^H`cJ~35%l{8g6gsCFb>b)?c(de5()qU#oWs%4;HdTTlQ}6v5Fw~N4l_qr&C9r$)z{UC>Z$TQ)XhMRWSHOzoRe*u+ zva?2sUCNuJzJH(l42|elZ$NaR0Dl)-9t@9jdwaVdj!SL#;~FA-|9%jmdi@gB1lGiX zaPBLh!?*7T9ZX#eGU!ih!2I?-0n=&=R|lvq=CJ}8e;^pUDVo)-wdyW=H2YfRpP{4c zkU_B;<3EO0sEJ?|l8!Ec8qt`4lxWTo_73h>;*+Twh6j+n7uvcc-F|H^*jh1&Q}S@O z!8jqI{+od7Hb@B8#HfeCmo+^9;oagnKI`{J0BK>~ye&Az*qF5Z-uQEkP&93PHNWuC zPqfA(L|BEg4S?2TBCB?6NEWqGE6r9gbG8oPb zs}LSC9~XHrFJGhY^Yb&hpKKj27LO&b4;(*O*|`>25K2gl2(Zy4DIeeg?I%bf3SMmV zHT>M5uGWrewdI6%49hak@@JC>cQlA-ib<3%r_HeDnYcPC7&%qfD_EI4AJN4c9 zrkDj@UeJaZlBEF!{XdBx9{h?XkgB1-MV$UV*(5dEL=376O=Uvzd2t9BJ%tMyTQ9&* zKxNCxdlKcp6_P4tb~$aWw`kQCaDGBnseL0JV?KML>p;r>Q5!OA$2#KDELXqe>Fs&(h21&e+6hpa=R*%-|206qv% zPXxQNXJ!*lB)WoP?KxZ|CfpO{u3MJ~V4HE1IO9-8=HG&1`Uye`Ljmy{*bt9WGr@FB zRL9aO`f+bMQ9lxd6=mo)#Q9>6f8d^iUR#810O4p)-!JU9|93Utga@4FB z>nZ$mdLo(2%`_jvto+i?OuPdLv0#gEE^GFH4e#k1tv8|p0pdH|D>_m_AK+3DiJq>o zOr%T=1cBs~nz}Zp&AhqqD>20Sz2bun9f|7Zhg6kph`uDh$cL~UijqXtBq>z}6f1W7 zy>~LGN#}^ZxmKs*a$&JK{my^Ry^5L4XjQ0RzA;m{>SwC92tpu!GG@F97imSeIU-9=!s@ zM~yt%GKUMf>*=l<-u*(g>qjD78xBSjjgmX$>tmZ(XF+E|-QLtZL7Xiwc|TXSzzhs2 zgz7Ftbw;$qtW7@S9{dgGaEy@OJg>m)*s6r#Q{Lm@c<^y&@tlP@rm2PCq8?_m$xt&t zs$MZ1BD(h^W5fPQbvhOLlki>V@E+sW&ZNN?Op`LL5OCfbz692+2{V^aDqD zjv6-=#oUP2Eer{khh}o34-4{GAm%H3g=jD^Y5N!Dxm9g8Q466UjFaiQdzMcXwfqW8ApwtVz2sU6Ph8xY?43Kf^QlINf9mU^IhY*s>isEnnRb zRWewUUk{PU1$lFBFyGSxiC2g*RoQ_ssNo4tJsahx<db!~9wOd^s}Vx3NCKBmiU#b@EH#?xEJW-DTT7jX6bp z-Z1-I-5O>qD-X0YF*o85?QBD;*z3eV&Od=;+Gj``uEDc-3;j+h-?)TJ-`J4be946z zT zy884YCjAFhL<~uxgB&387|B5R zfzLUtNd;1*r<0e=Ms%8;d2e2?XhJ?c%~Vji&-RP)AL#pwj6Dk`p-f~tfcLAysb9T) z>y$-qR7hCdMF~-4{pCv zct;?&neap-8nAa(+IU0M4*go=cSm1;IB+)QvW$;+(7=neOZ>S3jb7*soPnUeYtbbksnopK>ETWDko$y{g$8T8EBn$!CtA>W=O7>t zc`inmAv{NaEbtQCF<9wv7D!_p?y|L=ZuWcPj04NKCdvxOVkvg(avn^}4~t_42Xghx zZW?8gK@QfV7j#mF?Z`)qqT~`{L*v94c0Ll~6Lu4Gp$p+*s$tD8>?dI?1dZ>vr6q=q zTWnX2Q#!^e4Pr?mNQ9sBrU0L($l!wpni$o8db2h9ZYXmIfXbm-=Ji>Hct>VKY0g+< zB2W^nrNQ0%*mjiYn=W!qVbvVtbLKE=>5h6s;!2Mo8BRb!45onj@_0j1Xhs$#pHOrQ zm}g`95c>%vwP9NkG{4dK3~*H@u7p7{SzC}y5e3PVwzM<))WTYzkX+-N2o4)auw+Ld z3va##)bAo>NOuv}3jar7G>b1Mq`>%?;RcH`PJxl3mg@OTsuQ{N)CBJ8=7Wv2Brpr9 zanI^)ZY#J_jOeA}gmqqacM|weN^Rzb3_N8M;)mQzj-geFF40Uhg-%9yQ38Qg zpsCM_*W+DE83G|b!NK8aQ&}ElljD3t{yPlE+t9wykTZ3FEEv%XMzt10s_Jys`>Zl2mLgp z-tWd4Iv~5j9t7wLQcp50E;FjGK(2tmTN>xDNv6XF!FknN}jsb4S2ukcI(&PPTU+GA{kw4)6<+!X*dFglR>TVzC9Inx_uqEQjq zoCHkJ?lk3;+JuamQpOQ&k;CNFVBtz>%v&%arew719@!j$e-6sPGp7DymY?!R)9FzH;is-1vAv*FJ>_W+&+H4sp)pDXsby+{z8lb$_XO1m2my^EadT`Wq~KWrSW^GWT?iTkwPm2=R*CQB*R z4MzbWUOe2W;LlE{p4Q=qqM7M+dF*g1-ff8Vp36@;=Pdh*OgNCh?Z9fZ4@6hXbMTsu z5jc`>>fcj?WesdhYse)8L?J}=y0q#Iqq6R_4K(4bh;hJF+l-_d+6zpHSGPh(YbfN!ZcfjVHKmA&Q>#qbkmS}LarsyLYe{CHCIS#qcNg%VIjESl%%DVbD!53=`Hk#J_5_8Cdx|2IR zfguLfFM|*Q=C{=)8BRI?BqTku)yRfOR+PCxTBff&Y}&$-Z;j$@*l=!@n#`2^?WP3@e#yp?m3fbtaOZiwSRAEs@P#V^&fiQg<14P{}R zdV!-2IffaM8VdfUngjtYYtu@;*-+fjgb4C+r{D+fFQ#R+*ve1Os*4sbK|UxA?9q)> zS@^!Z1gS@s26IN_>xQCVB(dR<&~cQ)`kCgFS^p7gsyvrxh=BS|pFPL3zwp_oC>`@m zpZx{TUc?(}XmO}QFpr*-*F_L_Nvr5co`3SFqB%c2yWo||nr46REgY9*?4=AAe^-VgeqHeW@Khz2hA#q0`RC90Z)%|)29KoP}z7wj{ukEv>GE7Gcvc(*pxO z$C`ViOe&wUsu-hWvZ-yqKuJQ)D2EPnW(JYC|HajtNKCQ`eKEtG7VnTVsBs-I*M*ROPon9VYo zOu~FLnE5xsP=?|J8 zZJL$I_()1Yc8t>lknYQ)8-d0tqJ`&CFIQx`E)s z{HV=%IWy>W0RZAYnmp%qZngIQ34FyY1u)obj*wjcO@Bh2*1nK!6t2Y8yL)esg^6~z zT`dh<{NOv_(}m<Sd#DBW`*&N~QF2_?-$)OYdnZ03FUWSJR@|?uO_QI@wb`&buHMVn#%Nr0a4)+B? zDZ&m+i4yZAe$^oo`q55ihHkfz#bfAzZV>%5#>D08NzGj#D@G>Vw78~_;ISNk1;i3a z1ZRtkj+J7A8pP7nu}E<&4761hKc##0D@mY0&LNXTModc?iI5rtW_fu`U^e?sGPXh{cX4PfoQ-?0+I)E z{CU72axr2~>%|#oH;g=1loett9S1$+b)H`!>Bxag?ZDJ%4)J0KLK&Z7o{z~1K-4A| zaC_zxA|Jf(Oc2|eg%iCM#tlHmVN$GFV#ALkok5}(KeSFokBhxR!=w{@6KSv@ott*r z3H+;o)A%g5Inz;f#txnWcoHW2*cJY-U&0=-gp8({YL3%G+=yhLQu6>VVaRC`oTl?r z3?n*WZ-huLUStR21&>%{$92ckBGBHxRT9rxY$3~jZtUd?I}RXpvym_WPKdLv6Z8Fq z94EzPKp=55%?I%QFId~e)_POm^S_v@FL$zl4c=S@*gD%7_%05Ot$B(do+9$O;fspl zyYsZ=mJk%A{IPUZnR%cL8kBB?D2tZyw_vIKfj|mC9n}Ki&uh<+dC{1RTzTIGNjq`s zF(BkyB9-Eeh{G|%EMAUTgt&=|>p`|t_A?-Sn}4r-{Rgv%8mH~HjruGr+d();aMz}3 zp=1p%#X?cl84i`8EB!U@JuNr5q78~}8;kS96Zw;c&Tt3|RKg`A#1=NXcHWEbIUq)mf&f#p6)gRXA?#lbYQ0Fp*6JtIiF?RGWeL195fW;NhFsNF zO8`AD!6tSWm;Z;3ns5U!HkW+<4KQl-O*wch42S&n5Pu1Um7cH5!J}HC7*+0mAJYc9 z8UGr~eQf0&Q)%yu+f(iu9eazml;~-b+-iVIBTR*+0t*sI4hi+Y?j3LqLb`I@;60** zzd5Y}hhS;vqHOM*w(aDWbhhTvCwd{a} z5-G9{%h~h-a+egiRA-Z#)6ffxo(^m^EUwg=dmDtvGA{_cXT${#ru9GZkZh(q<6I1tF-73`bwcfSFD4r^}w8Aa-7HfF<3v2~>8XRVr z#M;4^IDCdJ>V%ZJ=^{juXZ6ZqMh)712F1o|hxEnh^wzO#T5ukvsow1oE-pJt1PD>1 zPHy~#zXU%VZy4i;>wo>#yCHyj4G8#`Ayslu6U*j7WR3e+ z6HV}}v^im-yqTA3;66<%jA}6zt|R1cHk>0blzQ+2lxkR!iNL@Pwob}KE#TG_j+VQv zUI4VGx*!#KC*di0zn0(n9+YK(i#VTrpEOl|3$=wadVrmI+{Km*o{QuZl|&a^E)+`2 zL$&$_l4m3Z-yRs=nLihKHa|Rhk?U( zzRwru(+W3qO_}0cJ&7-oSnri8R_G93kL{p&ilfiH8j;py7%0VZ9qaEXuv`slWePky ztZMK)5~X69>)Eq#$doUHO6KT?k=n%bue$$8s zlnRU(1ixX1LlRS-%;3KZ76Ysr6;k>z`U*E!BQhW4J87Gc+2}D)%Sbq?4R8-ElDP*T zG^TJcJ)c`?s3CIO1zrAml*25tD5r=uV7;}b0F2l|oD0wsu~8Xud@=qLh#@q4*`aWR z3s6i1NI}(LQ31wP`x8&yd~^2`Piw~mw=)Fzhr$Hov~cqB?R)}b8H`kV0R3!e(Ba8? zB%G>OsVF)th^aL(^(BpZTg-}$g0ZGNY&mm>wM}NMPa2x2aMpgSV;=SlP4Y zx;`NW!RxcUMBW0_K%u~G;TXKPkB}AD0vwhd7+O%yp5)*H1}fPaC4$C%*zp|4a>(u;abR zr{HNP#T?EE5cP0L7z)EE0vN&P+3Tm!42*iOB#Z!0G$5H_zxEztHE?sI_z~6${TK_p^ak4>;gsXypa)AWHA|*c>jo_l5121W2{mYqUn{Us zU>SY1g2c?cuj(MN0L6mIJ?sVgVp_;ba39p=a_bQofvdo{{jk4FL= z!p|9UocfsJ$d+lrVr9{Hgs?9e-4XMS@m-t77yKIvsVb{jkH7%2(mSgnh~@VET>`Z< z{G=qMg4-*PCF<2!1EIN{$m?0=f#<)5Veug|2TUPW!>yB#VXzLR4V7|85aG3qxHNJB z49gX}yOGp_1*0n+KWnq}E};HK1ZbX%`~WIVl?(O$NgAr(bXZ->R1XS`M5j~;QG}rE z0<0EkLI#&~T(#6&+t@N}8eKSh27^|Ce8?^Qy}?`N)&gZO!?i+s3f@ESO{RJRfKnb3gU?^&!|OFbvZr&N$J;$ zGa$!*OEd6kDxkGm9l9}b77!3Oga}8AaA6)v@ZgLtBEXQ1HUt`KA3eAjw4VLcp?Jjc z#CL?L3K+6MdWXg30t5BZ)1-RoOM19(Gof-(-oQ;0u!%qOQujMV09R8-Jg?e<7 zAHF;&-;BPNP$ktd=>dU!_2+Z&_>x;&f-F#?6v#xejM3Wd@0G<4-oq`FK^ofMMO>)Y zG2K(9(}V2rWjJDY4`-)ne#54ov!Nhx2bS92&%|{rp4q@IV}TIuj`@S;r-WJM{sg=olG%j3l4|})jXTw=z|18J&+s< zHDp{9+TQ(W-i@fG>xOS@+-PL#RCvs*#ZR#8_j|)3Sv|Fp{?rhpKSkjgm`XqWC8qkj znmqlRcO_4QNh#+lnr=w)ei2aNeeJTwIP3u9W_FEkTlTTxz6FUv7^Aak9vUtmK?peI zdKbi0BcK;J3Whd_kEhZWCIoV50b8BHaPp5V1YAQ#Qh0k1>oY>giRaIFSaBZRvb>!o zSe}-QL|OFXz?Vqmx({-3voQj^bNUBQnN80b-Dc-G(sv?T8afvc-85N~Q8$9!86Fk+ z)W$`dZ^qCj(G%ok<|x)-fR)dHUXvU{iGXsu0DzDWI0_>luU~V^_6EVVvMww@{v{6B z1**v3l)j-lh+xz$Ys@x6!87cm)P8L*t$KPk+nDurnaTN*^}9% zfb)Jihf*LlqV;m@8qT)yV}VIz!H!E_7{}tDApP+Hx3}(dDm>!C7qiSy$$RrpHM(V- z=y#z%f^W;9C#Zve?dbSv2?>50deJ-0-rz5|PvF0Br9Zww}3=Xoi%ew3Ot~usz@geen!=7?Rgjsf44)J4!bL zWNaa!iMxS|N#03V%n+Ab<4yu)L>7F9>@k5(k|KFHM9kkopvrRaF(gP(Vkrq40OPSt z{Fh|aVEEg&2(D++U%n}3?hSv!1qtT@FZd4{hJb&^WV($quLKSYEqmzc8k1lu3_J`V z3=9kjc+V?`L}DnO%L-OY(ev9?gn*SO;EhPyA8Vxdx9^H&L;ut6fB9x~ zZ*YPCr?Uk9S>S#`*v36r7vV&ux_c@QdjD`w{s+9o^z0-X;SP4O_|6pn;fIblaW7#_ z52E((F=`*Eo@X}VbT`E%a}F2nDa@=x@)J(<@J9-uqjp^gBeFHr?+-{zpsEd$_ zY%QA#c2{FmIves!jE||!dpHIF`1vmbf8KZS`Mc@Q-^J&zP^}nb1pq))V4(7db|O%W z)zoZWPd2*DW*1uXIPzn&5v5erMZ5DkGTZwukF6Rrz=g1@l_1?wqhA&CIm8}gVHY_= zMmgs{v?F_8I?>+drlVh*Jz{qGkEvhwQqaOb9|n zpKEmfEC7Uo>JaGIE?Y}`GZ9DTf)17Q?ELs3(X^oo zwy*(12%?R{tqPAWsP0@sqiu?HKUNZ9w`}tY#M)|bt1JlFgMSNDw~TTrY+er&<&tOb zNZX(_MlBoOrLQ$Q+LY^t)G38ua{j8wQLWEaV+HR84l~i?0<}$xBlTkvHL;PT6B3>I ztO$ls#9q(CNssi_Ma{#>KBk9Lq;pP+p^3>E`P>MkDf!u<4vOl~w?{_yI0qfD(`Sk& zvU(TM;WkGK1$ZXu90$D%=t-7&86_b7dY&OnNd0zhcDV(mVR*eH@B6H#`*3@cumQy=*@e zg=U2WjjwC6>m-5EZNUw0$bM4$szfnTzxK>@YGs?XFX>}WT-S`bDUJI^Y) zd;(ir?P_UE)Bplp+O-zZW?G~~UyLOOBg1v7lJ+_iMu7xQ(L$?cn-t6 zt@#@W9{lOrguQ)H-N4eeL3^eC1*Nh)Mam#Q1f@0m%~Lqm6>vt`DMrjd1a^qZayru~ z6YVF1+-gp30Sc{?1t&lsr7|!T$oG(_2$!82e0}{DsiXt1NvZak(DUh@Akab>8HUW; zdQD}+{f5dvc=y(8kEA_tC*|we5ZRk%;)ENU1FXkyY^H z-bzKKYCQlC+1D~nb<4FRF*?jXu8eFz2OOLIP7+A1~g zZO`h2N6#$O5HGP^(1CQqho!okKHO12F-dIALqnzLeu0w?_KK+h z8VAk!V00WZ?Hzix)%59D+O2T=@}VSIMzIZ9L5(yk*RSuaZI5KxJPD7Wk!O+ZoiP=r zfqF!A+A)DA^)w_*t}E8N~G zk)~4IS6GuTo*I&EN(#FfTp=-~Lg(-*jKFXx6%GhWT<2ku2;w%8FLN)ln}YM=QSny&o%c zD&NC3re8`QElV4c7g_UgndTkG%eLq^U`w?!I>yR}%zg5`95emeHK4ifQR_TnA&9Ph z$T|R5KW5$@2Z^AASjc?{o;1O}K|6U0UkK5F!;{u3v(dO_)zBvJxr0+JID5@(ji?Us z@kWZFZ9~ab*n;XnB2-7Y7E6-C}Lv7VIPkrB*XR-Y&I5OJ3JIksQhUl7f9O|uNrC6k_tbY6mpFr45 zk2#`5`+LZ0VwPhcqUg=MU>F&pPyQSK3lpgKQ>rp8J3#Jja|;kH;eb9U1N*XZ#xyKc zPqq&}mKHJa)94lOYgP`6*$GnbR_)g3>5qZ{V%w3y2FQ94E|b^*3|afC?$olAJ~AJV0C0gwHmzJO7?p29!S zhrr6d#JH*J2#lMdHPgrq{!VqOjo9|3gMfx8P#o^N=CUwtRWqKxeGBUn&gW?{MPUtu zEhj!Ey>)E(=(6P%44*+utk_t=X0Sn229Wwa?lHS))(zAF>o5$tho?35t0(8}#jmj*e* zP3s-GA3JOFx`7;y40z{xE;6|hSmgR%$jOnc4m{XX2cdZ5QoN%<7CXqb6zO{QqpMpV zH5BNz`Isq(ds=H@_djqGUZOYoyU?2J@}0tFt6gJWzb6CTxw|ibLwXH@iIC{thUOfF zwc|4xXw3uS#*>|34+(Q-f|e^733Y-D8~n%Q5elC3F>(hTpujzXV&tw& zAdZtObYk!sdW9k#JftiCI7z?4z3x}l=J^0(Nsr@V2pd+xC?~E*SGAqyJU!R&bkwPWBE+!zNQ9Wp`@R!&^k3Z!?~EcmV&9YoS*9$h9JffqvZE+~B22v~$b~kMslegt z-WU1GH@C1kGSGhK7O66R>4q$F=E%}~4sqkZA<4B0Im;t6&5-5^Nr}lF^j!yn^jkYV zDa=G}N4PK=v`j7D`h1uswMo+Tz@W&!YdJ99F*uk==)7^kx(#(7pZeUadd)0e{G}QL zD-Y{)oOi&$O~&LPjCXmh+if+{oVedKqPG)n?~P6*+5fwF*@NoE6GB-Ax?~}rUMH^I~6_r0_H@LQ4=2rX!n=`XvNXt z*9;%GuJL~}&-2-JKY)27b7{xypNaMUy2Be6&#n)ApHF0TnEXVYbeNJ9Q1I6Wl&TR> z)kH9v6(|-wufAd4G5n=3?O*!tG0b=Q-s=^0VnX!&DMjA2Ke!CE;%4tO51Eh(Cd;gF8;5$jDO zMIri#A24#9$IY}ZAlWLcK><)$dB|SAQ7UM5S-7%!@U1^PE@l~k50`M_v zHhH+<*+{H`L@VCC>us{pw4F6YeWr&yt%>@Rn`_$A0*bDGsK-vEoeW$Ua!?6>2!gD^ z!ZKmYqvHlKmdFqs+$tfBryZdqPL_Gu1AWS0Mk zT)?>hk!QmQ2hSz+2sMbr{e^l_Swi^Wd*~*MpaE4D^4>UpJ(=1=1mXWxF0LMW3NN<-KO`fVn1RV-$qg+>2OTa4H)$}+IrHm<$N zIg)Rs)a5r}G+b1r*e(lYW4J9KwN4})gvWoY zoEM;yh*2u^17C$ib1>s$h!lebe#}bNbpj9dU5Uyya291OlZqN}M?>f+{=AQ0u;%q% z&&%2IK9o76y-dwKvo&Fm59n_1)%|^CnsD!Ia+vJ%kD>-g=M`jBJ3!F*E>sJ5^ZsH7 zqbz3G8GN6seV{cXn&B7`JOsIC%4#$IXYX!&4VEG-ro09Xws6r36F<*Ic|JePIo;C? z1@D`1aVx5~6d(z3BQTwx9nV?vW&a4cy8r5a3ou!D`t?kk_Q0Kb5S|uz%1zyOpDtet z920MjDHH2<)xnwX+o{}md`L3tW%c}^z zniP2i0J9=d%$%_RZJ@vtgag+OL=SFZ# zI(|7Dm$qDU#*8+1~h)J2F!As><(BfUqEY)&B@r`Uq)Xvusp+ zKK^*?6a12&zl4vU{P>7J>{|$T$}6kl6gn5$gGy+>Uqh_!_l$u6)eKINRuX&_e(4#8 zRZdE_9c6OtkH=uzKeGcIxA~@0{WdX|FbT3w*VB zOE}e*!B&X03P(u-TrghbrXSN89(A+LI7ahhQzz=hS$ilKr+FqZl)y1q?kjRqJxnL8y8Td`T4%*)psG)9V91zF*<*?&=OaPsN|INE@g zxVnG<%Y(HT$I?0rSiODATq?o@XQSQ}H|l)cFN9d7lq1t|zifN?_U(NzMIV8^nSv#9 zp=L#}R!p0$)*NgSeu6{0Q#?4tQo!C!$gXXZIRdHdnFLh}{*5{I&!JzbYZ@wL+hr>Z zXvUYS+d(Kr0!OFDzs8CEb&bQ-sMvuki2}W4+=fPIbf@h4SgaL7@ebM1)d#=VH8`q> zy2X^!i9M{eO2}ts<@^)`{4crCp64jA2%GZ&k=BC=?svEk9pX(kF>giV=MmndQ+7w8 zp&PuzOw=)MHhM=3HOgs)KxDr#=n~8+97zK^o7-YEd0^(i(8lzoZ&q&%>kDz&*Np2TM}qKH|n`}J^O9Wq`3evt-{oTRRd3p?IkB`Fyy@2pvG*2 zOWi0I8*uvGSe&2H%_g6~{R~>ewxzX#FSz zCO~_W?UbYJ3P!|G>j?p&hHi?g#;`{}ELh!V_!p`1l&aFi4~HF1!>1w!L*yU%Nrs>m zj5DJF@!*1bh*EuM|4dRBz<#fp!h$u~3he7#*OqFm_a%j%{a%tcuri23$?!%(bks1V z&pl`5G%m96m=iMAN9|%>DZ^uwGhrX$Y2fdI$P>vGZ#V&M|8O=jY+D1?hKtd5<8S+y zhBb@6YFM-O30ZiW(agujKlLvS2oms!K4dxy(%L#Psp~+N9GQMmNitAr={gki%x#}~ zk7ONyl%;Ks^X$W?9Jx^a1G1?g7=-#FW{T z9g!2z+hm}Ye`B!9yn}5I^coZ`VNkrYpMk0zPLYLx)=V}n=U+i1>)S%t63g3&AmTI! zl`-p~mszM25#Gsqc@T}c8Q09sW@;exPUhK!{tZCdMqSM5mn|MMor+)@rI<*wBv|E% zqO?pfbRG`&oSG{U*Pgp@?QPt4rv}wtw)fySk~O>D58B+{vkoT-;pU^{z5P*iZ-2D+ zz~Ai=)UzYWAGxj;lQ^1S?Y zj=zLQjWhx~@N*TR2!oCO2nB%qOH6?*-2(Xq&yBSgznT2f{1w>D&qbpg0OWk@=vZ2# zB8-DTd#n5O(2P+r^au?a*wW}$`0<#7)+ z&iPB!^5(brVcFl}gJu6v&n)|wam#}1YLm=a#2=sU=6k@DXl;0eP1}v#w)V!of5@Iv zx-54p3A3L=3>8Ro{e}#1iwR#jpXM2)Z$tX6p<{RTnn!wdVbal@4Ka*nY@T7h0_KP=((qsI{JsyNom-G%g*Hd# zrFOLHV%2Jy!6Nq)9f}YXVjImxp4gcLRQHhD-`C{0VG>mHI#(Xqcxl@UXDJQFPy3g1 zX{k6A^tFtkyf#Wv_`e&kZs3meh~LufF0fdLhBgEk@@ZtV38Dr3eIVW`JdFlnAsan= zJ%dXWOhDDeQzRFT4G}^_fGVn_+H|YxJ9;-k% zmZPpSZ$Fg;E?N)7(B{pl)iot@b?Kx{7vu4Qd!FrU1Wukc=$mW#+$!FEJM+jQWovUqHNrU2Ok+8MW{{f^tLTICgSgG`tMte;F&%Aj=83Oq zP>sY{c6tCBEtt{Ti@W6xL!?&>%5jQoT+NAO6%y;;RglB_iJmX=eO2tWM6+KjWGGSu z-^L7$PPt`{dx*CQcdqHPx(;Y#YQ5s@k8=cEWm8M)TPONA*kYckeF0C)tgf}i*Mbsg z0X<7V*Cg!H(hs@t_Or!)fk3V3$O#@JCVG$2QmNEUI5D9?6MA417;XY)how3@0YfxM z%~;%RK&`1zfY(usxVE)Wv$41>ja5_EXpAfbh|U!s7Gx`p$1gOLMEeAO&J5i}iV<2Q z*vBd&2NHN9YCs#j<`jcOP(XpY#VNGxjAWaZ6@0X$KxjKzG^AOn?S73Q1|%_pi|v%! zC59AEHCj0irqfHz<@5q^kX!&jhTsO#RoJH2N^xl~%P8}peb`8IsY~%Qu-Pq4rh<5O z|BQ-2QJVv$S6;1>&{6}kqM%>nK7`GT^I1x|Sp>WzUV3!NgyF|?1}zCQG@?XLwo%D2 zm`uyC7_||+G1W+bmLGMuB!k$@W06drsn>FF*HOQ~kJA>^pd*%+Kp47CaVbg9Kq|ya z#>zsNINAgk;FuYcpuH<`2Dx+7%$!#1l7X{a%iYel0`azV=&k{xU7~Z~UbN)kabc~| zc~8;lL#hR9bXpQ(H2{-J6SD4VjVRN#UehGCV)N?8YhI{~_1;!(lwVz|Hce8iHm`2H z>QcSF-`lF4`mSr;u2E{`?&XcwF2s!yneT1&kEyxoTDdexty*5(c*UarS!uNhmsgns zWDs_@n6;^q3{t{I)tI4vnS0kagjOm|7=0z?T$#Tvo;%p3x9T8liA#mz>1#U-p zpX?yG$0hx8PsSN8sh%mMED%mD4A66jf$U&knI0-hIhn+5fJQ@; zn^4eFpGhGa9MQR+JAz1y7p@vl7Xdf%emsK=T&Gd$Z2`eq@%Jr1ZMR)DYKN zLt33y1I43Dykx}z)QdFg;bPQq zJ^1z`Gf*8#J!1wVbG`CQsKIL^G+~=MtqI?O+|*8`xpi75ZSSP8u#GwOFX)kEjg{aO z6Z1B`MIG2a^RQKO?%~_!>>srP+-WRZK+g9GV7qRela5=}Cmp{{OWD+x`4MZ=YdpfNPGoJeRGa+OXK=Q6ZWw2_jqO&v<%yA+JtaOOx(o;gTK+Rf7r zbg%`UK-wb$X%3l=(?Eb=_)Zk4w`(qs1VW}MU)&qU0R518||!3W-qiEy^FmJ_5dDGelZ-8#V^ zx2gj_e%l1Sy{gu^(;mSTxW=6(iH^F^R5Kwp87SYe8vu1{Vyud(jdDvM;5Xj^rPb_E zoxn0)N=ZFFT=!9G(q*Zm{tCd=jRn=sLE6Cp2nD`uzRaq zj&&4}%>9Y$Q3zI26lD*0{oe-v-Z<;g7dj7nvt|9XH(T7sakry3sNZ$AK>RCGEK2(x zNEgk6nHG(d#j0<%blXQ{7wr$rcu4<^#s>LUGR4jeHt=@|${BB)76^ACopm2t z4eiW#(%?5QJuo|g-)Nl#eWTTNL329@Xr{x#I$;na%PMe)dvw7fZkd9|wGc5_+Ko{0 zX?_kJ9WuKoRRLY7I5Rz0Lq+qQ^fs86E23hfbrSrIRw>YTQbIEVH?Rdf6<@8jeh$_N zgBV>pQ8AdGhg=sd;;~ckxE3k~^XNuJqxnvAOnzrps zN0<5@bu>+(cH2>J48v2>0=#Oa^PU`WIdJ0BxiWy_ZcBj_H%|d-T^f*FZk-Ukzq2FR z7h$$GCHNYmso-Fe1W8YM-A;fGX@Eiu6tg|1ugp%%r~gDJvtMgg-_+Xc<|Z1-)xJv8 zpnaXCA+)+sIN4^%xQp6JwIqTt4GS;tH7DV){khc!C3;z)ioFLJvL8+a;lb?G%Vd$ zmcue`nuKNCcV`?qk6FPm7&1H+19tCZi-n>p)7ks31`|9oL zdsly-+PJpMUHiI2wBlmT=}5S>ROy3X`^*ZUr`&&{bHi%Q z>Ih$Z-P|T~?>`|Byn~T?qDg1dpdC9)!_i1<=1ObhXliq5+)Ux;majQvSdyy_8#LG5 zehtes9EoUO_n~sEu6cToTL_!$CG%LmS~s8MiA;=^TJgG6%?wf*Q}0uIsJ*J=))X`J58mSY!wVA&eoOp-^gF;Z%s>mE2W=o&l(dVEJg(M@(0 zu(=*-*rhdDB5pYGKZQGP*yS{>G3_=OC&s)bK)aFGgZ2yI@Ye#j@3IcO!L_OUkpi_J zawS-&nkSBJs@W|;+Yj9U_sJ(+j{7ahh_nL>78zQHX(Q5UKLOfGCq>(*_ifpY5q@kL zv1znTY)_+2YH!*EHoy3_aMyg3ebPXv(t=y!b1QX*1mZ1v+ldVItDRQ(+54Tp-F@+2Xl%@N2)h*@*QV@W8o6`j{k0v^+q#Ul+uk0m zZR&SW!e-;djx`&lHmZZX+W{P5T;+lbJEbAfPT<47Yr(w0btiL4dv_7OtT(0`Z^nt=+wR&iN?3P zCGG>)+Lsz7T4Q5;&vkaD>LS7x$r3DS2RGEwt9@Ji?ETK)?!NdhU}N5+nK?UH)Aod9 z69R*!dyj_ct?s1vcKA+0A2q7)TJ$otNo`ClIyz#w%IerSy}}k^9)4ii`rJ&UVPcJO zgVZ|LrQ2qDYY+zXVDau(xtq)?aPwW(g`V%}k73(UZ_cd^lBrQ|37&rF_j;-i%J~E( zde&s?q|<6=TR)KAKD}c#Rf(o&OGL@*0Lyo=-mZQS>hGKTW{g2;W=@uDTC}5XX{}q* zywkwtVJO(vRGx=l?4$v@GBdX%>NZ<&_3!WQKmy8HwXd{p9YwhGTMf^oX&TM+yA1&Q z!8@T_YgR|A+Uq7($@G&rC0(6&N;^^=s{P(IPp@*?;#A|hEk8nurpe{HISb&{S@Ibb z!H_9pI-E}xO6}0a*(9j)?t!r(*#NvbrHa?OkAXO8l6KT(01L0A4^h;MuYcD zERf1GpQD)fdUulRwGN`VPD?`_Y|94N?Th88)NENtq-Klt(8%^*8Ix>>u8YdH2~n#R z3Spx*{7Vhk28nRI_lt#RrDStk!_`iDq_HoQW0pk=bC?Ev`EWUg#jWZvjo&sgOU6%L zRP0H<{YEh{c97)SoK(^BvNaP$9lh5Qy`1Pn#?r2v;a1JyP0n+!y`6pz?u&| z^x95n+^P=a`0e|J?@4idGR6NR=5ifA(s#T0`E+A7fa~5Yhj5~49n6U)>zrBF{l*73 z8mWEJ@v&<|t!OY0r`E;Cqox3`uI?h5!5SJ2*N@z9%YijK__CuJ4b=|On9W`a(YSdl zMB`?+3Q-RIUggTO@~lLizx9ZL?R0ZeU`A@}pn2}myKV0p4ePtsXwcj*!y>g@+yWod zq+P-+ZLFWdvx^-xGYT2Aw)KZ?mOvnE+5&^HNfQbJ>n<4Fm<*bQbDXvX$HZ#MlH!v-3l!rNN*7dDSw@U40o6#m5f#<3Pkt@Dhst>3S)(M076t`h?eMk?v zE?C54r{J+Jg{aSC4IU}%%Cpe|;wfH1N?OJy)ko`uaeT&CfpOfU3&wHF+lDbm|Cw1kl#s}5gGYb%8a<8JMXcY$M@OnI8RC*aH#%X0NsMY{(bvZs8C1C!D;qp z)Z6~FH|U*Y^U3fO6+K41dnnRTE6n9a?Np`4t?GCizir}b`!k}12JT#Xy4ZS7(J~;|<||`>?VywBghirh9UO@!>p(<| zqn+RgTP%Zxv{gWSa&IX{1S5Asq28_zg8KV))}Ot~Pz13P08x`=5YWa7g8RQ(3W9L# zP8c*A)`8Gyus#$XPP<8ie!{m}4Hjs>COF&|R)9#{HVu@x&027&s_gLO6m@O7F{IvX zDP&xSl@AN5)kah4hE1w*130Nh>p-U}%V|}db%G{tvkWe#^~ykrM(>13vt=C|%@%~k zN={f>^l`oNaHde?+8o=4`Ixfd$Zy?ROio(_v${?RH7#ce??03pp5YuoAiWz^L}v}P zwF>&$`J2Mx0J2oW)7c_(%%qs-;)=Q$?OtmB7-6A$gL(G)DeAS3das7&3922R=O}-p zV?NKP=$TKVa;EXCMseTzY%HhE;=c8FSN|M}`^tt{NUT!gS68`s_zG31nQ>>O8oz@{ zdHUVFJX?$|bq`i6yPK{6S;w)(R_|`r#IqZh<&E>_CFCv|tLDW7>B0piCE+qKa#3Yf zarkJOEfynNxY`sCmlD;!TgwS+E0V1a1ZD%a+%V0hH|sYD7ktgra(F(U<0wBDxIZ&% zo<*l7-K24PWEMj=@$m5YhkAzn-_^w#&amZM0c(#-@(@`pAI|65#a6M9e^ECyJ)O-R z6j&@;Uk_&I)9L2t!)*|V^Z-i^bX&JU>CV+48{fH8Zkc&MD31E^)Qinc9FY0OY%EhP zbWRUkkDb|P_dfivbqV7Fly`QRRsCHqW^Z$IG{b_rdn~5KVcx$tm~Gn5#g;ys-Q9*? z##KID!Pej8*Yn{5EilU46s4mbiK4KNb5;@l|%{iYV zTkXZ@&Yc?69;2oxoyS5|d4y`VK|>7?wQAF3MUCqGO7ybEw)K=%?~TX6JEbr7N_hL$ zynGI-cD_h8*|EiGS*5nv{uTV6EF8|V>I4^KURA~Hc(D}|u%lvH<#Q=(hWy{Jvx~+4 z1b4)~PM|lavg1+j%wG71B?zr8>Z)Bw8*D$+_Wez%6<(`b(^+AtV>%+{?H4mlJ*88> z<|>2b?Jq7+py*BKDudNEDS8Bt#ThYfI9L5t;|xV@&7$@it**H!8E^lP*IjYgxgKaz z%x2xHAg%2Nkyucb^K^%JDa+N`)?6IMV;9sf2eH9rPr zdY|-=-)m4qz0uE$7R9L^LtV2I92Q%MD#+(Y*soQ{f zO`R$oMDp|Fw~^BiaQJc6`YwZ>`x5XRRs8ZdICnt%ayIJuW`5)vnFV=#+zubZqAf+c z2t>@D*)Ao^oG=}<>V^awtOW&rwi^O$(O?WZR?o^&>*0s=ShjXH>RLMAud#BSWyjV_ zgLT*aNUpYZHlCl6UaPF14VS@yZPtW?&Uy(fq><5!;KpgxElo&O+1c6jBA~}AT(z=+ z8;kRUQyh0owkI|bESN7TA^2l9EhdI_2dn#%@_$}EI$u=fsZq{^Mgg(~iX%*k)vM@TO3-4wy}_OB!K+N< z1{EH*K%~lfwHUn4#zp`Bz5APkm)ZD|ROB4WkJ0567O(T{IOkR^Mn~r}Xj95rfAeyl zSLgHD#3ZF`Nvr$`GGy#R><_ir|PSG)P%+qbW? zt&GqjjQfBx=6R8gbu0VNimhz3|1$Hc8R@>1$es%_t{sof; z_B!ey;-(w4Wm;I4?RG8oqFrpnAJ~UfiWnGCY1lcJe+CLfyDX>T*g8F@mVcV>6r*DI z-X2j8`#c3FW!nm+@yJ&VN=Iw}`qCarP@GW}XnQ&|hYoq{CxkZbmV1HrnFxbZe6J=U zf-8+Rb_|FaPRiG_VR@F%deG^!qam$St0ai)14}kH-emn8oRMg83UlC;cIKPZ_ZVu5 zqxtML(t_d>^XlUH#pyvgU1+b;_DZ(FVSZ3Sp;L~_EtP`%_S=1YHm2F}2w&!l!+CKA zLMl_-f@^6EkLFYfOEW`;5qn}a*|HoBD zTG>Fe1Sohb?rk9Hwq_}o>A%p7c$2s9{_lv zufB2+&aVj0pR@69PZ>K%KC|it^qw#XgT3MX3y+}ui~J;eRltU`H+YUKd;(LnzhpuZ zzGbdUQo zAR9cf;_Nr(Ds(R|vcV(cXfpa5eRX7E&T!x^&lmYT+-7quLzYJOnGF|Kb^QbWz(7WI zpS{YT6Bk%d?l50zG!(l%_Lw_+m?*Gfz zcQ=0lqPA1*ZtsnHz0C(CIH0D$;u0DTQN(&`3mR{b?B@*B<8XQo$$(tsCdNEVwA;<^ z_P)%IGTi)-wopIUU+!+G5DjoI2^(*>+w@g_9{lUo9zHeCC+9Fs*vm)mEOV{yQ@|KN zk}1bzF<@0GurSM&^3Z_i81Tlxk8+TK*bXjn_w%og<=$CixuQcV{*q6YEVvReL(h*e zFk-DFlGH?+Hdt)FLtq$EEuvkKx9{%YnxYxEGM2@_qJ)UhA&cck@~Uu8zB3SMae!i35=6pte^V}ydhJ1_}!BY2iFbU3|LHWkV8$-oKSKpsfJCBM9a+YZ0qiVsJ-U&N0(u(*B^^T zaZmtRE=HFp*=&OA%inNVUmD=ekEh49&zd4_SQ_JKx@{DypgYfrKiJRzD8IP<1L3r7&k< zv{Oc5ph~JER6-T2sJAZ1{N2uO+Z)AbXRwU{BsG{f1m{DArN4kTFHs(Jp1%S!W^U}h zXqNCfug9U=P3yuTzRZsI|3CKLguRX9*c$#T6s})g@*03d+0Fum(bXC&v6hIEokUk3 z9*`K4V}SsJ0VT_n{`+@MRqxY-jiBQA$-BfNrq}A~>e>ra1Y4Kp5V4KTF7UcpunWuz zO=Hh0p>mrEtD6Qo*v)Tg@;0-hH_i-sYdO`oBHO`a_`zV>TilZl^w;lb`o>0)+t6#! z}#{ zb(qho^Mv`?+`1Im1>+l$o_+h!IVT9>I#ItAn5=8yyu^8p2k*MG^0XL1d2s2Inh(<_ zlvkfa5Ul2b*0;(**neFg(Bz$leF~OL-1B8?%c%wv1Xek*Zy$g*L<@Be<$3v)#C$#! zW!CIs&yW8V6HLvvwHO%>k%?(=RuxZRM1}?ChjMnZuj-yAAU5|%0ovShE#TVW`bHnM zCUEUA^&MX+pexG&H^J34NWthntOYgSyBTp-A)YjLs(!p`wZ-KIPS1wB9QI)GbQ3~k zQm0fyXM@{o9*cap)M4Um01ouo_|^Dma)^Hon*f-$OW~M)UjRX}3-7 z)15c9TMG&@SRbknT_uS|zzxlN$ce=94Y~vuW(7};imCMa)FxPoYYwP+!rxYhFe%=j zoPB6I3D+P6z5B2htfhA!lQYrlI&7Dl{z@4E^)udwalkNIkLeuO1gm`O6ma=g>p@Yu zKR6y^Rej?WO;g62K+P|00}z($kdgcKDQS944DU$7RP+z5HM99GSuId3V<TGT0D~ zY|8<~HU9;|Weo3xO@T$mS`H-A^z(uvWigiXM2dPrAM0)J&hQgz!qy|y9JNms-g$*L zUEERnboOY(FBLqN_Q2!#u=YAPmrc;=WXy<0C*KnKT>JWOK%0{_&!x){qv?LfF2+s6 zn-9IuSV+8AaJ{oHzWr}VzyF(48a!ffAocDVkLS*vKQ`zC-O ze<#*eMw|_X4=JrT0l|Jxw`_l3YlGuqm2Oo@69`g zgywj4i+*_+ST@FpFz`n1wUDpv<;nT!!5DH(wbmLjLVxCmXkJ*nC=(XALLfpHe%%L1 zqi#c2;ItR4J>rX^FD>f+;dKcwQn-`I7~-SxrX3k`^-IUB%fN`C49Q@cx52IjPXY7W zVJLWhNMxo@<6tds(Eu8;C9`8z2?9y86bQ-ZHQ|6!pa?G%b^64j2E?H? zNliJC$hj0t3)RNipUR^~UjX|(-J<<{!QS$GD?9g(F>Awy>~>=My7+oCUP59Yn$FEN zNVnrYthFEZ?!Uv8n)iyun_2!^Z_;|~w)ycROwjx*2`{P91J^?vJ{yl3?G>4(jbQep zEdV(0dmf26odO*SKgP)5vW(QGks}v+NrFSj?w^T=nqAe-;ihAfX&L9Jye8;)G&z9d zpEXQfYuZ7HNCf!6m_fx2wBbew7~Caa$7*|q%6@V;s>fr9u7gq29jP@;53$x@!4c+< zkE7`ERb+y}&ifZIXzCzvUwOM+kmzW+r*4S0iMF z-n~~TW+5i*IU*CEB6JB6L6Gd>oZW=;u7bAl^lJujtz{N@7O?YgCNM7 zz(fg=EU1z)L{E_k4Q5hAhRUhqDEsg7Xk^KdcKZ(|c)f z+4e+Q!J?Ji)50x;0JEchCXgM$k$3WbU67gHOM}d|-z>=NsGkXB%o#B6DPM3WZTF>t z<~nQ^YHrxi1va=Au8U`=hE6ECiTqlmnRixGun;g_(+X%VhxORD}(P>i*H^@CpP!O*j1PeQhoDx?#k3BZPsw`UYX6GOpBvh ziYoY{zeS34n!{fz(m`s*E^+wbKdOhObU&-oSP_WJ^xyMo+) zfSCdcN%ej)x&6XLeU{vQkCCqLwEPK5>fY<02VFcSB^*vbyPojJH|;c)pQhi^)NdCO z?f{k?PP?O#rT}R%tIyQ_`wXe~-y@3=+rTPxR8CLH!9(IbLu!}-(kz0{_H)9!hrN4d zVC4Gx=Q)Zf4SUZ9NV=u}mb5`SLBn^qn1=6eQ4QbiLbIRS74p{Jt)APB85F_-^~26~ z%Z^XFkFA0cVK!rz*<(}-7*#rpyk;|5;xT^AaTnrzN zcdlR8q&9GLh`DW215YOtdM^7r z^kurBx{UVVu&>TcLuQzo;x+x=-Ij;b=>*Pc?vTU9h68B3Pi>sxY4z-AAHzgx55s=e zaD>x9p#&sCwfUTRm;u-hcD7%)bbZLmiC5PkKnr}!1;UeHboUE$N5?eGNb5X4^eL+h zmA!p?M{^<5GaoU!@L3y!qek+n0dhm%>>*dI;3D_c9m8{ow_Or63#{aS_>-okmR5pK z+C=^td@`h|6UXLLr?OvBt;`}OPJws*gJ^G4Ik8QcpI zPBJ@b_(OLP@;?zupn?ylEURv2%`{i(H_liT$n9(Y#=| z3}3v92~hV7`D9jTeWxi+y8KTv4iY>a6i7m0gc|&Y%21&9o%6E}H%VevlVBK(#ZFSBLl^ef{^t+iSI+ClxS!Zc};WFoX@lXfF~tY!VCnYW@HM0wsR=O z`)i-fcJR*g1X5POf-mL=a@vuGO{}6N!TexwG=YL(F zrTYc6O|uUTIqU?`imHm~6uDvONZ0BZ-M}@^%E9XBpw^Kvdzg)0>K59uuJ#t%SuS@A-6;0PY~U8!F+cAu6xsYTS1?J8&_r)+%7YqvvihZ~ zzj|g9%}-v~fXev#TnW3K6>fy-a=8m(2f2#-V8#}7s$GuY>GYS}t|m67Y=GBJaaGqO^=9VFzNpWO zOw`vzhbp$IF6rbvS>A}mfy%@vE{(2gEwz&!!h|m@x|*hW?MA+Cy+s{J*#}Gl^pruK z_BTPr9B7LDE_d!wgIAs&d&7P;J%oP1Haee<6y+tV8y~!t3G8Wb!WahXL7UFCiJ*)N z#D|;JZTL~OD|U8+un=huhn37BREfyn!YW*&VpjB8lOuTgW!~9z zL2J1qarnpHrw#2tKBC& zYO|VU1ww7^--gy~%34vuiRO+^daZJ1P)$moyz^H5SQawOdK`__eYXx~C>Uu9iCFb^ zR*kDWRn@*f#G038R$MZ@>b~>hMHx%4`5lQhv@<#CK$f6A6c=oA%EE|n2q?!Wa?Hwn z1P{wS#HLdqcRT}$Q_ePPa?mY{;u(8JScSw@4$V*2kj2ads!0yBh_s{VBJ5|(@8xoJ zsgf40#3|@uws7*@*ea%Fj=Xgo#c_=%1quc+%_VSkZ^(*GrC*>_uC(<%TP-F-gB1}i zT6-|uo4<-NOCG*@@%TPy8Xn5=3?)5xZmU_)cS6a<>%J2Tb+(a_5;f3#iQctW@M%Zyi}~S2>G!K-t}VoP%4^5o=2g_ zkL`g3ML}!!&$ui(F9xo8u`d!TZz}b+*ZTzuWzJr}3RNJ@5=y(9M@f(qe0J~N1Xaxj zV_>9pa$)g^)3T}_(zC|z*^~$qB;FGw2BN1fE~&?XyBB-cZi+j>Ox-|4&moi%q*Au% zfTDE$_FcHz*x!0(TiW*En2;2EgRPu%Vi0&p&{_F*U?bh*rBlna^anX?-@5rVvO|`4 z@Sd4_ilw2I-`7s>Yi;xK7Ne9A4KNE!O}sy zUbT+X1_w}wh26EzVU@7*-|~J0dnIItWt`GoayQBN*p27uSQ^OK)V zkhczAB)yh8YdW1L3_IVbZ}bVZhAFZ?VZI^Ew0#@II)xryI*jwtju9h_@i%>VL!TZM&mOTZQx# zmJ)JB;5`_jbUOdF4r6}juw>!?FKNq*owMy>t z+&SKaDnawQXDLn~QExF{#$nOHz~uT$)Z#TBff=VK;R)*5gcz6>?N7LsaSrAFVDK3inSlh$F_z+Hn)JC|ML}hqL_C|_-l$GM2GMwl4yF2Yy_(ylV z{dBO?e!$;;i#p=})ZZT9x9|De?(cuU)Bbj_w++5$7kw@aqYY2C<70+S2x`CH$KT`Q zwvnD6jtXXjAf+(@6{v7)_~vg-6<+Q5=zJ`sGj4eZX8x?0K0A}V7-kNY=-QT(cLJpK zFuxd7XGqrbf-3mlu4qK>W1PG2oW`H5{PYAm1^g4qA6R;svcS(16tg$~K0Zh2FU42# z6Q_vmhcZYuXZB_%hTyIcBCWLmWU{PC=CKOdZ)*`I$BoB)DVs84%OGI4)L zAJAw9{mRmZh`Hd>&j3EuIrVA9;2gqhl&3vLHnyGR8Q?c`0T6XIJ3X?qrLT$}J>q++-`w4&>P zQx`}j$RIdB1{!pa$}v(!e2AsxaMdhp-adms{g~t?1eC%vfWBDCB>YNZzwRsbtaUNx zxCe9C*7pb)(NK{ubfD8?-KJ?|NH3Ov=!us~>mNLO5{{|lq%}GC5mdJYasC|?y|Om* zHtZ-~+LvMo@t+6Ug;HkvVZUHzH9T`sk5709215i-M;neXBi;RNga=VCa}Bx>o>6uE zdh{nTM9aMMt8Ii|MYt~o8s^#Jye}|+F}+=Ok?a(R;-f(16fI^u9uqPwil$Tlq4|`fZ#hA4j(ek;yVNc7O;2lVgl97Ivmy+>S6X)h-ReSdOFc} zZ|ijMw%9VqyCtfiF4XE|#>w(CoX{W_Yq;g+l--+2?ZE?h2L)uJ;z6A_&D+)W>jhxW z#7;}?tiHZ{=ll{s?Fjb#sjeDgl+X`}YUtamQVq$w*)dm^>?`Py(q6B{u(El~sYX3J z<}Xd7>NE>#pci3L{%NeQYN|K$v}EDjP91)y4A zL#$Md15S3KxE!ziKzOOD!_YTyjE05RUu)d?3|Sk^CR8A^?W}YGg^VY`p`1#!%YA?c zSH_wJEw_X7=HAs)!ClsX<_jaA?8{CZ9}29e8(g60U!of>j@i`XNz|%!5%mVS+ zF7bnF;zF~BRh#<&*&PzVIRtPas?ko4}7`m)>vuHNDO5dz73%5Yo4 zf$M*q6tU3j!S@OX3A5fA(OzUCncd2lf6B_2f1%vSyb=H4Kfd|RPW#U=DXQG~TAqi; z!`7Q7@dWLVrdI5Td> zw7>XoZGPhpzt-Hg^uPS3WtiNSsY$a`?(bPD_qSgJO=AYIfai+IqEHQKu?i7mhgTb* zVRoEVDM;IPyc`j=qpUi;Az;PWi+=Ewp!V}?V8m>^XEU&r-NDZG-+loEj60o6zu4ev zsFwxunz#6T%mFTcjdh&dJ*N3#!!-Mnd)~~BIZAH7A>As*nl*!3f}JkRfs-kcY9ixF zx&75QaFZK*rVQ?nc<;cJk>9ec&U5pm+!GnAhxBrTh}+>B9!SUVriLt4hO_aV%*E8H zowvofe(!#Rdsij*ZZP&9g&~Ut)gg2-Dq0#V1YB+C$%*Wz-TomowARxPn2~Y1)a4-K zzqwOJqFkb7#{f~@aW5FSciU{V$({~m|;_MWt8e%5ZR=uAl z?fZ1FIGFs@`*uRy#1h4W7i+h+o4eEL;6t;`==B=_3u41xiVw!R^2i#bthvXD9L`^k z-fu%1iKqjqqy7a@4XRB%%QCu`V4&~CJVDZ?__aomuZJ} zD+&?cVzsE<%uLjWqN~?2JC#gl7fN(UykF6#LpQy>5~n;aj9Dr@*SI|sd>?F`CSz+EBa)_`m~ZT_ z6;h8M7An`ergm9KE4b@db9XfIxQX4#thUddna(0gCBxp_5tLQ8w^5xC{|;L{ObGGx zstBmA8$G(XRJm`dUj4krQb}*)Ar)F1*(!L6)myx;-xgiJ%>Ks z-I!QYp!na%5kc00fe4zeZF*so?b~7}3YP0p<2S zSqrtOemsG$fl+55#(2q%gvl|lft@lEp0X8&w0Nonr4&iIRjtJfAiefrlS9Pr<-d|Z zu7e1L7Jkt?h5OC|;KO~qI~9KIpKrguU<^ZxJ&^n{aAG$1Yy!IuKN>37AnB)@W)CR7 zDCfJ_*lZj9u^5`hT)V%%2s^;*mFFhX(bhn%cqY{eD*m{4z>#&lOo~$5vo@E-LxIl* zKxndf>7gnZ$riRR`0w7toZhETBK2Y~_%(k1@%QY5QF;O|^iMtWAck#~f9@mu>aq#d4gyIn>ZH9Xk7t;`rY zgVP6GFT}F}hDciWkfoGfEb>n&&LDmx7|K8E_SN##Hh$OjyOMYPx6*Gjsv+^_FO2-2 zNzBEQsa>MG2hjlItNwFkF4+sZA0 z1&7Tl_W+avMshXfVjYQlI#=u37Gx>Dxp@=+I~hNwGWtGkjed#dZ8BpUC__8S_R{p( z`K*F(&cYt_+!4FnY3=R0#p#cdx9es$~ZEn_!nGy zMD)!_kzb51k$OYXv70LTXX8kn#Go zepP+}&O)R=nbTIf%?VPn%g7fW-BWi&;&<6HiR-d1NM?2Z3L0|lCStfBGRBiBqxG&_jCJBToQW8%r5O<7ng+K+vL>SoQVHVSbf=i19NbDE_ck zF+szBMi+;SpLCj_$04lJSlp7jO7C%C&DOxw$kOA~PP)S2{^tXF9OgLsC$LKOP->r^ zPAXJS3m0Lq1ON)agZ((yZ%{Y}Q^#~e%M*b53G!U+%rb?cE^gkK>h`l#_noJ@kWZ`^ z$UOIDB9QpdX31hpHL=~p>K(95{|Js}Wm>8ufIRCzgp@)P##mh7)w=Z5jp~Qu$c;qR zHxmzP&z71GA^q@fT+SkHR_iF9hjcDyGY2U5oI_!x?%i$;T08LH0}Fe12In-~r~+~< zZaaL_L;#>O&kb-T<@h$P^%M>F&SyuR-?edPvT^6|=8H#Toh#m3rnI()4c`uU4}2KG zzXpbU6yM&{6fa0EVEi5rCc_V1x+#r^_fN{vkaZwRICd~-5^_=0Or6nOvphd8=3)oA z-B0aX#aBV#;z6AP(}eXtp}_C1iUL~{Qa;He$P)Lw?zOXJN9*{3Kr>@%lL_7Mt>e4D z9<4Q_H4tZ^ysl8Y>^Lxhtr#0+{{s0{_EBU3uU? zN#jrP#aHhw+`)Z+c^Ehj7e4j+qOX7`u5Fio9z3<%EiJBQ|;a1lk(mgL?7-IatjO zGPSuswknj7aHgQ`76Ui-&kw4@X(_=%;8$=*VFh~q#`Z=1fbGdn`!#BY96@qBVVQ~s zMUdgeC=m#|pifz#>LCP+;e)K*XRB1s{0mut@h=wFE(%PU90yhnB&+)P@%hC1&&xsS zG&{Bsi~Pok>E|EoeA49*+@Zsn*%hQ@Vbsl^?y0qmdmA}c$jE2bpQv{zN4Qbob!N&y zxFZkc3=rtBDM2yC0~oripF%?vEryT*J?_BIr$ElTX*yw(}B;8mq_kF z_GX-(XIAB#11C;KT_O|TP6Y)zH{=I^rW+sWb87kvXUuo&tJK@{jXH}XIgX+xXdlX{ zgs?us$>XPi{umuUxomApy+3{Rt4KYr-vWg>1Q&bN;L3)Y9+f#(nsKWgF)+H5GMBU5 z>th846uIbJLTm*gC|~csv6mS;O%=j$d>nw+2wJF#yy8|5dh&)! z52!&tweNd2o5kAB&+a2y&zf-;#{QLK&?M_O3gs-j()@~n8}2&qq;oC}x;xl7S|lJ2 z)&y&*olN6Zq5vw3uDnWNCs~uzGGSTDCB9_EzK}T%`}>K^onVl}2W(2ToIl27p8Nx& z5B3xO?*8WZJ4l$}vdPGud~LJunYdync&gb-YHz}S2$HqY-w*IOjgR{S#Qi7pWX)2H76C9N6(OY5*o3IWfW>S?G>=8=#Nz?H zIVaBTv2RE4*%P?im}zBQhIn>G8+f4tizy;@`_wVkkSV8Z1f*EJLCj^dL?sXy6=#uG zIC+mncT7O)pLWzTDc(*@UuBfKp<2bpPWV(|lsJXTL(hhdkNK;MQ28(HsY1 z8PN9O`4k+}?76J~2t(ztprIb|tP;fT38m*(tq-5QZ$FQN=gwWes}R9(dcQmoEL_x; zi(ts$Royk`)99OR5da4J*%_{tf!Rok5|Y$|Nq)>UKRD?yA6XzGL6=m@s}MB>H{~n$ zT?{97B~6snVv?u14?K1`OfgD-k9Z6>fzE19Ta_#1q6_5?`@*(sFf%_uD#D~=d6aiz zObuq_IUeZa^z7yH?F*YxMA_-&RzZlFofKm)ib5y}SrFz_n;A8=HKLfmdw83}y)ogK ziJ0|2gHV&p4bn$`@hhcrk3r=cSZ<5+y$i(Rm&j=$&J=Cv%E>@b>gHu25ktMp+4jx5X+MS?b_*f%U&j}qCt zlBKiBI-XBUP9v^H7(77{H5sD!ePvQ!GJ|nwM-)^SrtI4_?Lh;(L%_SFQY=V|oBirT(W6ZdPWN^tv zn^BWhTLwJjGs9^q2wBe01-S(a^eAr@Xt-^t`Sf3&+FJe^pM+iWU(y}q1v+pf3_(-g zq;F|!e>Q=1CoH~ft*5!BOyH{qq9V~IE&?;eLqs=O>K3}BBzH0LPD#GeQ6;kH+Qs2Y z!#f?KJDtR>`$^JS;kLBXNzyy#f0A>FObwo~0Fh{-ApW_eUG6O8K@1pdi#eeyJ^lOY ze0KYvQ_?~hn{UAiQq*3u~cbg*v;);^ZNg zm}z(ef--6SfyOpw0=(dJ=a8Y%h&g41bF9y$`?3=b(U{R60uB5-vu^V-J7maJIKDJL zjHPY4m8HWdFu1nNdfd{NSW)K0>mw>ef~JA~td2Q&51?BLw2@|G;GgaV%GZGX57m<4 zECJJnhvSN*7%QVBu(Ze#VZAkTq)4;JO69sa*}Mrq6J>j_XQ|Gb{uqKg5KWq3Qo1`E zNhe07t+1yHt*oEGj08A%!9&XrmiNigAX->XLSgTC+?kFK1}OX%E=lqPIAGitemOX4 zw<I*aYAB&lN#Ufrx2xTClnum?PpFP1Ro{GJ^wK2 zQKn3rS5c&}65O?CBMH`oSC%!eu)xNJnGee>2;S>7KHJ5FvkNX;LmcwDbqCdl@nNLO zV1w|X$;UfX7#wF)8vw7X0iMyGAgwfD{K0|>}(Ke@RE2h;O2=(Y6+IBv-(-?+ul zie~4LfJL3s-AN_=PMsk1wwnyvF3hmM>v8lJu4l_l0PbZ14*|Sg4h{In+>~nSwHBR6 z?PgPb2^uJY`o>PBs|s`o*pOG$ILX_>1;Us8r^=6BQGiboo*;zrI+`F>_n9Q>fGj9Q~61|gKe~Wke{LHGOqE|Rx(c(FlRH}rU zo|pwm)ef3y-U+-ld#~k^`bcM4H~DImy%{6bRpsGjF`FoETEMhd*8(Zfgl!6V>;{F) zJW@u|ZPAr1Dt-zcMg)?ZVLlNBBuIbvJ9Q7keDevp;(RM5e#+Pux zK$Q^uGeySeUWTAseCM#v^Rs?ljVRx6A+nc#BY5oPZeF1^&{mnzeQqL$vk}Hx9i{dO zw0)|jH1LgJ8z=_WT%d*F!quUnzMn)G>19sE-<~Gt3_C|~P9Q{H1n1J1a@jy)hyuwu zB8#U2Jzt<{M6br@>Yr1gdG?iXE-X#HB^3^(8@yM+fng14j6>}%N_WWH zhq-q})p4HESjA)@6)?wJWTj|p#c-%G-)kHe_H&Xq_kj=2HhRqLRO)h@S0C1uCC2D|4Ez=|`uz%S9!Vk*+(>KLC zrA0Th&USaldq2TrSi}e~_DhNxCq}~tXmW>2vwO^4it1=oxHA_~zT5qh4(F=AmmHZ@ z*W5Lx|7*7-IpX6XBK=;!p?W5a6wq88@J`&>J{<3~@2$SZCy2|s^b(o6YPl7@Sbc>L zB%9Vo)~Q*sbg0G9eAMhh0b%DMEAP-x0soeS0-_!>sn*0-qJEfNh9k1WJ=8{dg%|?s z6E1mkn>z80G;tL>?ED?D3Vs^P%tr()hO)%Ti}LV9%4jUpaXjfy(Z0|3kli0>HQ{|` zgjs546KLNTm-zMxQZGE3j7F39)l$9L9#svcL(mys_p5fNqkb^^edg$2b&Luu7`g@H zVAQonLO(NBbuxMX0>v+vS_>QZr)b^g|18x-T7w>mtBbh!EOYE(2j(A}yw_8MLg@*d z#+RB|x|zeHI}d9CNCl0%Qu*WFZ0s_)+=S=Q7*-ao27<&$6YKM3%IX1+vl=b6Hqh!*kF+4ZWT>jr1v#6nMz}a*`_7^vj zXuOJ-g9Aw?C~@{k4mT^0jQ(xk2&79Lci52RYGK6lwoRHjtPJ$Q81YdyW33mIdp*wa?hzeNmtT8x96-AxZo4zT!0h0(E&CJ990*M@qu>W7cjlB@TK&4BGNA zOZLLM<2KhP|GqbF`?p4Zc`dBlV^Je?5Pw~<_8tX`sgZ!@p8A<*<3rCV) zs&U%}tK9Q>Jh3oMK+rqJOp+NCn|hBm9SwTljnl-6gaa0fI=W0L?74|JL}vaIgg6H7 zh^)oFW~vF@T63ukjWKzM-6K3odM9Ch;UVfHW=kWX-Q!g<j$A#j^?6Ot`@Dn=N9-`w|2Z=^X@F z;|mflKDFvc6e;U1-;KtillXMNVz9ua0W@@A!#}OPH|m7v-`Nc1fqH^Izd? zhLNnTNchsQA=aQgXWA4Ww6S9^wS{F(aojmy7jv3;jHHwt!qJ}=?+s0TJrij^X#%d` zzFsCa6Uqx3r$^3PRpUDxHk){dr4cAM+BOJ1z zgT4S9X&+r5A(PTzX2yYBnEkrk@M1{kd;#;@dSkL_!J?&mRUZPlGqG~um#wYVmpXdd zfD42J@}z%I!ioJtc8>M-2Ho-bDbpwy-1#|u^9QJ#QO@)V6hr>p8%rxeef>omj-??^ zsTfs-K%>-r85?=vdE>3ca zYUU;tUINsJa|>I)4`9j`C?aav7T)t?f*9=!i_=?@a-&4eZ)Jg7S!K-c_Ph4CxJGsaR>9V za^A!HgYmmTMHh_;81RGbF+zD*;b^BfHW{xaFJ^#*0l4)h){&I%A~-n7?siXvN#7~r zW(8Rz!4c`6gCBKTNNdhnaOo4$dABcgbfq%-@7h^OJX1m**P@_MYDb%qDw_4fllin^ z09Uy1%sa%HJ;d7b=}r@lCg6f^AjqdVf~b~izzEpX5?;DD7f=sL6Qhc+q{{y4+~Zqc z=6H^IG)_IhvY)jeGw&hiTP_E%ApC4&=W5q#KqO~Nvtqh73x05An##`V*etPOb|0&q zmZTz!iB2>S^xdGa4KxQHX2s6zWIB1j<;g?qhy}@qPz2vPD1xcjgwCrwkj>0uyozizIYvrj@k#pv%2LRiU8z-IBDtoM3GCQA zv~or3kT)C*Q9<3O=X&kB^6)@4mo#iw6ri@3?1tPe)qeIzeFkFh1i+|D*<8AFQ-o6ei(ZItAb00T?bauF$9$SV4)O(#{mNJ*wl z8hP`w|C5Hq!l$9ZlG&)lH8=C&ZNZ>HMNYV4Yv*g_$B#^yIhdVSVYyBIS`HasWyff; zPV&|8%ce5@GcEd*Q?0sADRICTALi=lkTYD8C$^E^xR&qP^E3ZI_Hdj;t2F%20o7H) zUo1bD@1qD2)TUfv#bGZUhu~UqDXxoMiTh#s?Px_TnK&Fp4J|8eh?ARcen5P=$Jt}WQYU_jl3broIy(1FX245*=?k>;}B!?NxGpC}P5g;-?d5qdW-tT|& zTbjJh?C1>`P|5BMkE^5zPJYpfam>-Y1$SFYpPd5vP7R9A1_vFDo}wPvN5Poz0OT?$ zMwl^j{WZh%(HE~gjw(N~!Ot)e$Nbj%sXNlCY@p7MqO?n2ebM$L}*MfMz|VB?L0+i24IhD@8YCKJOt*UFauk zewI6i{gju;8DSTY9p2@LfQ%~Tlm$4N43z)uwfMgs<)Wuq&s;P9iXORc-}O=@D;;J7 z0$k=S`B*xGbnZN92x~r0e9fFDezk{5pDxe?rej^ly&90?0+QpD@!e@k`cXZ<15TWA zsMcXtKQ&C`75d_(PXe61fk52*rZgq?TE7>@de{s~ZIFScelRbP&kN#xQ1ir}>|lSO z-a!4ptuG;*_Bm)Em?U6A={%W0U}?|Rw&}n;?^l-dzcAd62vMsCxmxbK<3T{lfD-0W6=wzT z(XbAcgHcDuV`aKpi^*6&8VbQSN-JQ;BUT{ZA$Oe@VMbv7ZN?7YD1#yXqd$vU1V|oB zLWA^LSi;w5?hd_yx@saML6dZM!Kan?#=h2=zV6;)md(D~us=vaJ$>MVd!L35UMsr6 z4r=r@_@>tJ1_Vgk&4H4Pb2(5Q(gAf{fGvv*^j287TQq9kDn4FjpXk2s9yf^;SjHT* zz}F=a!?v6YuS+8bfp&%Hk?}%lz>#{(bmR3FD`Sfck+{n&_k6YnL-?{$v5ts*xKV%n z*dj}S6fbz9+^-Z27t&AbA=7kQ?Dus4_IKHJx*m$GIaZ=klB83(?5Te+7#@eU!vj8K z$4X#yFX2uDCL-?ToC{n`OW3^5DEU+*iE(9*RIaeQKI(U4IbV3^0NA` z?Xan4p|2-i=TN0N@wcRpQuki*6BG?JRn1OdT@1((_FdTXkz-!8!1oe z@kC8|d3ayzS(r{8)5$W<)%1|32T6}n#Z+_j;iP+9Ao=O2Kbe-tC|iwk)R{{nL?Xx4 z<3J<{L-X<+LT1E1lBTFQs{UZZps9Jdo5XKKB4DmTtyby53~Aa8zEgByCkGk20`+Xf zm=d$ayPE#neV%-8n=K$}=jGtbBqx9Vp%kQR=^CuP=6W*$W=7=ob_DuQ1=~dT|7Hp0G#zN-|^L6 zJiFH5hHUckWrqK(7tqd68xhH^yM*~`Xpl8)aYEh}mHxE zd@Pix%|qB{E5jm+0zKjp%`cWo#K7Xv6ETMN$6Bft-9?)f-5J;@4ty>BvB6#-gRgEe zkZ#M^43-0*V|+~HZ|)#214TV#S+sTKiU6AVUW4tKU0VWPD~-7CIY?(FSP|%%5tf1f z8l*3nX;aiMkQA&jK|{Jp?cBvmboqHfR9A-_F6P44#gaOYb8Q#7z3s$;1F6O`%$yTyJXZTABW(s#xB)WA^BjJL^2BA%b|IGW@i?>8 zC4*m=r+o3+QT{SR{c3GC0Px*6n*%tj6m1CL#_d#8JD(Nsx0V3>tv4G0JUqKaA{Nw% z1Y!q7G6<6j66?p0^D+I_GJs$Eov~>^^6TL5XGJRsg7iNX`&Cvt* z>SU(Hixunq?Gv~95@MRGuU6xXdG0+@Y^?l(NesUFcV`_a;AsXmPofBxP8|)|r#c(J zMikm$sJ8lP-FWWIz!}1VKt*09(--J z@M(~F!26m*pJBXgxgV-hS+;8i-*K}=?$7UM#vBB+ZPZ=nW@$@VvLq?UH;$Dsj0%{H zS*MkdUHOJPcgRvRhPy}rWM(Ued@u6`2y1D}^M7$9Kuw(0&SG%^>_18I*V-Wo6OpL zKl3+JmmHvf{D4r`OM2KSo<&<;^Yx6^u;Syn<^t;75~{>~*LPjNinuAp^L&k?Gd%4B z=0`(>M4q%p2e*W|0Ou8(;9-D^(kOXtz`L$Miv2j^t)r(FwA1iX=28mSf&0 zqzSDRtX7v!3ygpg8UCc|hD);%6gA2X8d)!8u8FEUOt)lK!1ClIqk*HGX!8Qc@l2kS zuFc8V;DBL-&~TyqHYHrk^cCfLMBZ}E?M!oAHN>?0<+6aXUWWi!de^OuIKdx4=TcCD zV^))c&=PP$@0B3M_DxsGFdD1EibH+|XpK?v<1%;^^j{KUVULZ$EFAQ+LTz0<^9x=c z*Wx}`0K3IFSC>|35_GU#t<4lqB2#Ajy5SmPmV&Vkhg+BIIq?0de>(}Aiq5?mjy3 zBa@KW<__qXTt{>WisW=d&CE8K4W->GsF7dL!vR;d_f*oxER7X_V%gUq>hhs$2FiMd zIVe9gxkv+`KzWR69g-!5`>mxbk<4Bi@^hq#N4fwzveW7;9laeL<#O@>vq)tw5_qpG z+P~c4OCp)lfemBWJw^ys?S%+tCRemv2EW1`TS?=J!Fx&UQc&Dij0=!Ux4r^y>DF~M z{RFjgvW~lB^P~h_#Uk=&Tx2AIwL@o5O(f7^IX^lcs%#OY6!!NG{v(wm8UeeY>;g!FtT5*S8W13jV) zWPpFOsbx*V3(7nhF)cc&gYyyGQoTZP;wtn~gnT}o9J8Lx zJ;~#Y4MfW1nwOlxB6ZkyYDT9vg^Ls+$(YXynIY#Y8l$&g&hiikpaV2A>U3GdVE{R1 zqLap1OWJSQ12GWi?h2c$pkV)Z-h3z+rC?~B7<`&9vk_=}t`?eM;)^xmX@+Rr*ybT> zW?T`byjE|(C+d|IKm6ztm^?5ucoXnrZ~^9C-WlHoxwvYiNO1>$&!jq34sjxs2^eT4 zIdyST)NFHd1I(kr!puh`c&YRNExBtVD=$F{c+Dh)jK<*?O8;O_cN!PvbSo_JU~_Q5l{8Uq!t)0bI>F z)Ih(l61+O`8US9Ol=EITUFu6w@){O})SRbOC*~pM)OkMTy5+=<7l&^50x6bOIU^(pYjZS%wrT2WHFL*dSO2yBIuC4d4emls2Fn5do zFP;J^&G;l+n(-A1^+6mxV>v9cSS=L83Q9)Z8&u^X88&XTcY-|sroMdd0%{o4^c8N- z)6_VJD5ZOrPAMgp2?>=SlX5~kFqzVs$#(Zymbn7@KY_jnDYp?pZc0N=k+AEXsfPEW zfCh(J5NXPuP|85#@qx=-XGON}=9cs6(`~9!9@O#|ezl9W{u7`NVXZ21vn_$QDWCML zWcjF98%b}7dIRO5=+iofkp_wYgz}01Y33eO`Q4c+=w$?}*p~keO4OM%T!c{o%Niux`j+IYApfdp z#{8tDqCe6Z?2z6g(`#ulR_!`MT?zJ&3ff^i(p%CsL=8wb4pT1^mAE@Xi7ghe;zry3 z&rVl0>s9;PfC?Xi=>!!%W!56p_i~J6l%Ca=gkWR+U=A_L@GWkqZ6-5@3Kb{)cqnys z^pAb1kbe7QMthWGZr;AI&3Yx$2(pJZ>P^7aV$0*hTp3II3F_i0N|OVpho%|-mCMvl zKXj?!0`y060LlL>D*!R?BF7sv#Ofl>vY zyC>#SDDniCWe1hsci|D_kg?nC5<3?h`fYo%TR)(zjW3C#M4yrde3*Aw^vL{zV|w;} z3?TsKkJ*R)52pu{QDv3&^V)Ej87j6+_9n(8;!84kC*cG-ps-a0gYa+~{$)a-$Dxvkl^cW=-BfN&ZNGoDq(IBie>Ed!bRm*l$+oKLAz)IfOjT!feeI;PXy;bn#(K; z3A#XLQrg2&&=l{3du(tf7iDFm2Vg@x3CWC^LC~2rvYZw!r$5BoN^a^hounb=)lF}Y zx&?}0PK#rZOJt6M%lWe??}w+pAhCwrpr};bobt7yL>9$@LM^_dq_>9`^6}%W6;2r) z;NRp}8$m;WXxab{;cDa)sCgUkbelQEy=Rw4sPv25-%3FR^S%Aa&^Gt?lSg+^nQX`L z(man~%z000$o*mFy{A%BC`f$@^mE8)?~nFc3#M}E+DvPdLE4t}y2f;`Qp zMv*iMMV+-DZAYtl(j{p{tOM`mHJA$l4VI4ntSnkF=Ky zi&QsleVOO(4iOi@`~5>XI{_%bi8AwNW%gUPFZ_bs#ga;~;&NhADUn|AZ(kh4=2$Wj ziy-**QXr=C#GMvGErdrSvCsl6vJdFU%q0N!hSdZ?jaxQA03E?nCfzkN{83p^&dkbkX^ib9_TJ1q5fcihKyghn{(P5F z{BvB<9taVEU_(C-;Gw1_cVDRVkAx@L7oFpfSJLINi8Go*|3i+GHF>cIeXlbfJG#HX zlt7a&RC46wP!CtGfzfcd<*X8|Ls3NH#JN??z|6f;3Rx~*Ires0>Od_qn{%M9$yFSv z9Xzt*$WhxbJW!A&PtAoawU#_&HwsJr)(=^&Jg!mWaoQG_I8Hmn#*R}3QN)dm-+E82 z*#w1|fixam=J_(Tpzcl-(KWkBeK9HX98YF0hS-rhD((4y)F=W~FwnjhLL9Pzd3syJ z(3}IY-nuv;J9W<)&*>#+$&h84q;oKtq13%0f6@vLSgC+OH?tV@5xLRk)EyXWsy~r% zB-}TM@8SER5EZC~ZV9@5H)=h2foEXAU$^TnshBiNopVL>P4QG>UU;c4S^hVVF+4u{ z6@^+<)XE?q!!yLCeZhZ|^j0}=Y8Q32i!JD*CSW>Z7$5f}helpk2ON=zuQscg4&@;`c%sR7MK z!T!msApiDjRzXsMha%#eRzU)0Mj7-AQbC4``YbBQS+#e;;3j`zt=$U7O^{Bpb_i8Z zl#n=;Q0WDA+6C2V`zGc!&}f0{oIIQIR5W=l`49SdJzFwm zgP!drs6MFN-~d5dE9>0+n-c;gQtVh=TG+s=(X2JjsFFh6lUF%~&kZt$gnus3rrD=R zHCZ9R`AX@NkXmqV|8?B0Q)pf~t4dA%Gek;7T?u-*U`ItkuOVtDex-8T|r3tRjcn%djCWLWc8}>y?w9aB{3M5us0(CV*tKLugN8%b}PdiODP)Gj*q-lgg zjq@0l-iEegY5xj)u~{}u0_(gW7>QJX{%Z1{YC~2L_3WaQdOJd5Wm(Y=h-4Hk?AIyl zIkyXOz;M17o(G=L&I>%}TU?swu*k*H0O{epHAf0z z{f9-am(ih(Vv#vyA&ZPW3%@!Rne6@u44j%}@6w}>p^z|YkC_d`Nx*^S0wxz5BLnfd zth_RfU8#?9u9jixRN8}12qy(E0%&}Y;O;mwB6!s z6Aor7u$Udef(k!Q_ydiK=L2rbT{Sb6+u`0dncDsRNt_?y7R0<}-@!k_clDRtT&#ac z?3KiPs6V8*H`TXdtq;)J!n?UVMCis-lrUuLijH0q2zFlWxkX~8a{HUFzM+p&!nq$_ zo^z*y-JI|B>u?b?*wSFW=Q(tQa}J#=VvD^&AC8o|KX-G zM4@9+wpcym|BapUEOY}AOx8g|&7W7W_44buV#udJ2Mv(Ysu!&Y`tVP&7_w0LdzB}l zseRS$CNKs>z)js!?81rK4JXOCr4bB))(s~f!W~SeY?nZ(Laoygd=saG_fN%j>s=@O zJ#}c5Z|WO?+k|b5py9V9(p#mxLftKZ(Pd1TAN$V9c&5L(p1Bmr(#+Ja)qAP6IgN6k zl>rf31@4Biw^EH(oMK}2c}Ad?ac%NK9e9p=m9!?&^BnmEV5i4mKyP6q)RllT=Dn

{U@W0WZ+^|!R!&D&((!9B2r`|#uX?RrU|8K{Hl9&Q1dugJrUBdUHD}UbE{z>N zJ_ULm(8vb_sk{NphuW@1v{^DfthDuxk8>zgF+=Z`#pl; z8(1%*I|Az8kRhsvaSHQ*V7?ztCNC#CAOmbX>x6RB!MBJxp|GNno`BL(8uC`a#|zm; zA|5LreJ@U1udqxBc1Mi<;o&Ujt7S|+foxU=UmrOQly^OhA|(jwQ5#G=5kPzzF^HVYRV*zhGsj z<+wZ@jP?%^5MDijvVO%e)9#R_!I+FnMq4^Dbs3nsZdT5HSEHj}GvUcWaz&0CuE?dG zw2lxCdJaL{Uk%4&M{esGg1dzTDaFm*j<2C@cIo+M6b@9v8jEU|^axy{qD(R0w#wIvUo+EEOF(M+zst7gt zmyEmSyrt*zH8miIKVuA7Pj9AD26T8uG46}<-Y7gMr@+1dywDs?o;|&vyAs|{aQ|0o z1brUTUB>_dywEdjHhB*q_{+0fhKu?PcFQ2&3*%UhpxMx*IL{}e@-UDOJbvFVC7+Rt zbm^v@81Q~NJ(3ZSw#dJkD~!>_0R1zr0V99`Nv)Lsl;NmNkb{UCE3*(s`Op6~;N^o<7>v(4HquJ;M6H^XGo14HKZ87Xy>W!Fh znZryf{NU5-=>6vAR2FlLF~d1FzBQdD-VLbq`^j`zJ#wI2A9>AK_I5Ob&`$b7kmK?b zMo8fYmy8sf7+nU^qrsbXaWbgv**mq1xwn3{Sbq2S&-Sz_*gk%gw>-IoCTooOm|UXx zW9AaX4eAJ+`JN)1Y4WL!&HhDkq)y%9JzBtfREp=Z-}Tg+z6q@D?BEeZmiW2OIZ{9T zEMb-{Y~87ddqTfzKQelW=kmir)qYt_PpfA~`$(Kv9vU}>4^?}g{F65N5l$g59=!zl zg&hn29ETtDck_N~wA=FrR&@nM3akmq3q(0Jqx1lU?I3-dTaM>s^X-@BWao5Wk(14j zhv8&Zy4orOi%kab$Z@hd$O?&s8bFEQeA+IIPUz$ouD1*w2-|*1(bJp>hs)*X z$oH07;@B4i@<0s(z)|Ugxy5GfIf->|6x-WAy z37Ou|@#Hmgd8)q#bjowZUbjl*>WP zjIuP)(p_9B-0GY)p|#rcYj|o#%TkP6^#Qgl`6DO&8P0o^bF*s*u5^xy1`JMp+A9UL zo$iH*o0r&O^Fx~1oX+-{HWo@v>zv)RP#HIK-LhMg)(iL6;A7})mvAM9P8jKL6GuNW zu7zH{p5L^{R#td|WEI2yL28&Y7C{|h2G4M5NU!4BMAVN9i|lwX^-gntVh>Wq<>#Dk zI*2#9pnp>=XF64GEGOsvA8Or^tp+1n_8=B%R~|V#%=PQ)pPyKEkZ1n57($XbDv!G- zNC*6Q|M~UnqNT_$y)?SXXpKe^v9_O=H3|N!-$R1`BC-8EySzXR8k!OLD(vH6ASF`N z6)g)9ULCue)XyhlJx6P?jTlipk?4Tfr&VWi)PcQ&T84b9oRT3*uA$3~FpJBy=43mn zk+0|7Ax#RX zbp1!C021#=9d8BIj}zRSCS&n3v~Df}yx^{hEH`*Cwt%3bPqC+-qA=PtHL+Oi-koG4 zLB^ML7AqLzfD|cOLKo|YSwe6(MlSVmb}tKxcc88auo4swo&q(W;5!qPESSKzMZa6B ziDOg(@nSNWJ)KA(-N%ou8>gsHbpr`DVJR~{39rqSnW7sIZZP^&`+HjAoDke( z^~KCxhAaZ~aq&ubqNT#Q)aDF6KY(4X<8HS#4Y_r@?MXb}WDHiL_oz(!=ewQB;D`{i zp{>1pzNgJ?Zvi9|xgUL(r)B$~0LB&%nbZkB*mmi&!EvWHFMhny!~cYnKJb&mX9YL1 zl87(2#qk7Q62*-kvz_{Rzc1-OKj>Wy;V!f<0XvfM-%hW$IwFUtQh(@AJZMne*#6%; zJ3XE*DgXBC|L?~CzWH+Je^LHU-vawfxPb4fhK&aUcLG8zXcl~{Zn)uZxT%+#z+nRy zT$@60G=cy zzP)Y%>Cb+KKaJBFoEwFvHZ8h1sObmEWeHZv;(|WiZUXzKANbXzd0-h4kA#ja{~HVq z&r@I*N>7ZW=#V+p)TLDsF%{N?+7;m<(uD5YE5N+5Rb^fc7Z_XK5m^QnEW z+GA|QC)48!7@`2Rh8V?eQ~$s;Cdsb*{;A+4-F;z?EvdBvM7b;P2Yo3bMlOUg|f z4OH+8vKJq|Erzjb%9kw0o~E-$1*B{Ua~kdW!anf83zAL=Rf~`|7=BsYWphWiXp%}+t~M%30C#y{cpDiJ|m#4$(Vj7|(QEitR{E*T%^XLCJ# zLux2Q+wq`&rRcEz&*VzIYPeD>c){eAb|^z@5ovD1i`ZY=Xeg++h6*A$QL4=(ssjIw zL+Q;`@+C>EghdvBZV0sm2empFCzI2nbBmeMt(w9q4RA?VP}fOeb>|4VOXvqLeb=4; zT5s{O)L_fAkvfoT0FM(4+YKDFvDsyJdr*uYDCk37^WISHR3p1QEnQiRWk-3AL0h>7oVs3SL)-(YX$1WIg+{p z*i~oa6)UTOeJ;p#=>80uk#?w>wMpA zdr@iiC2U4LR%+O~*#;wrqzmNYtX-y!Y*MUHpanhN(}K{uP)kJgxVMbxySIn3N2K|v zL9HAq5)mGra1wk7BwZLBd>RZ!c16QUS8MQ)91})|WhHDGsdu6OVPucS8)?-{ZSJkC^^p#xBH4qvNpt5)%k$13UW|DEktrzyibX`V{xA(ZLLo3n(6paf}G zjY*MwTGd%O{(6gt3VP39wgwDepA|50mg7!Eg~q2WsZ>yL(F2CLrAf((ZirEuf{d?$tc0kyX38I3BQH#p?#KV^sxazLg62sLM*SjZ zCrNZ%h9(xdB%VzS>{uEE0Z92E+o+{_oy!24KVX%n96rI9V+Uc3nz^4uM(2?F&Du#UbtOV(B< ziQe*Ptu+GeOY?2^rTKxHz*{$WciMl!zq;e?AF4nr_z!3WH4Ttd6AnXy$re@-Pa5R* zVe%gwxU{j!IY88>4+o(w8$;`}vxfwpT2iOm<+Hj*-k@s^ctQT#zu*nQ9lyPBB{P~Z z`KAo^%GZ-OC<8b!IoN3E0~JIDqZ@;FW%mpTJy9DFUtycN4IBUI@!lADmH2q>RY1nb z^JN(agsPSW2`QpVwecgXlN%9wh>X8M3B04H0gkR5GEvgbCrJPdMcF6r=g-ZIM07Yk zr1jjoJDmR!6E(>_jzqmrBZHY*}hlr@E;35BV8R{ydv=lto8O0wSXYGFeC4Gs9(sH^WVr z&otUL{8$VW!CK|LYMZ=%9ruvmg#Drn1Wld8cau!DzPGTOsA>LQ=Thh;^4Ek*`Sa$u zlvwo{nL*Z2*yIE3L2NUAT#=JWJ-4YOk-37@FHz=^h74ZfwMZc?c``D)h#+PJUq=4O zJ+Xwf!MzfGA{zQrOIR6=+9_uRv=W9HJ7r>Dqvg_!l(_9=)UDvZ(+0eolw!KD;0_@v z9kOLAc@&0Ehw&K-oY-#Kg!%Ht1qQP*VzsHbqXg3v#qA}8u29R*Hl>8 z`}Tm3MUNm+o6OW8>`9s4H@Ic$9s2j|Bm6fp$9)4RPw^W6{`a8iQ=3T|*~_1uLA<*V zhVI^Ef+X?d_E6L6iwlM7V9RNmy7)K0!L*ZUQg?6a(IrXnho?sM>kmf-ePE6M4bZJ$ z6{DkW{}5rOJNC9^5@XU2HOj)OKUkJiHxlv3`V&scoCLEYisa=0&aSg03+5LpT+&=Ugu}so`2N7q0M{k* zi~t)j#T*nd_?E+ha+*u&GKf!59~=xbo17n>6xHjSZ;TT5Z@7)MAOHU5Q+u2nVe1K8 zrn=QXr?c$>WBd>Q=gZ>tF8{Sl%&fv*!BZ!#XRh@Otv|J=X=8F39=~{a|K;OnPy63JeDt#Sy0hCx6aVXr$A9`3KPSJwdft0| zv)$PZTRwR9!&Cl>AFKD}S@9>R9+6edKaKLJDjaPhR~&kQliz3i9$#-f(iEb4INx(( zy)~lz@z(Y0s$c;cxR0-Iy}1+q(fjIV`>dGaf)2~W^U+}X6896qw}(Z2z^}3ceiaV* z)tlZf5*5-S1ydUL2GI1mIj7AzDBzu;%Xch*G7q?>rX$u1z8!SecBQju`}_>Wmkp1`( zNHM@-48@p?cm8m5M`sy>m!76yQC0i(_81fU4j8}P8DqXT?U8nv?%c*q)z1GwLdwGb z5BNNSpB|ndbKH`X-0pJk8Xgqh(?g)7bB};Yd4C4x_c1yC-rs0K{vKx1$=%ruk_*wJ z2M^Ri8-}&Ps5hC0OfHEXPsyE%;~7;i7P5#EdG$T05Jy9NF^zRYlYMaI0c0?&L^JU| zhW_TKmB$D>yP=*i8Di5=GOOk^4LjqKL$G}cSqX{YgR2+=LpqxPn?LSC&Bv-R4S+MF z%VO?4Lc(c^C&f$jP+evCy?crz_8e?SYADF@BBVdVF3Sq!E*PruqC7sC?Tw~g-Zo20 zw()mDnUvu_o;;rx@7muWWLi$QHr#i`(Sp%P{p?^*p{C(rfp%3!d`Z&3&s*)G13?U{ z@??O7mrBjr5@bg^pt;L5=6Yp%9J$Q;Wb!UJ5}h=lAWO`;OlvbOG>E}uaU}|GsXrV| zs^STeQm+oP>F7at=xBvw!XrRK%jn#MqFZ1UV(c9cJ%f>*T~kvoxKW+mD8Rrk3eI}> zwVhEe%Q-OJGO+J>!joNcb+wh*)yjx&ZFg?gSNG*wtAoSAa8&$-dBPvQBW-gx5XUX6 zF*NP^^;^Fc8v*=M?jw(>ai!p?QAzK{8BX4h7mc+2)$hZh6#5D$IEsIjn@7)h8!8Rl zkGl9fgt366xr=kzHW(9sU`S9DlWzf5lJICPY2Yt?Lb&{CUT(>-Sa7&X~^UY zuPnTg$8fLF$?H>P>7M-3QUGHVs4wE*-T`koKqo- z5B`vrZF%~we5YdB9Of=;J)foXOqkjQAE1UzF*Qt`;Syd!FMJhVg%bS(iG$;NC)Gf0 z9?b74PRvNp*PeqHk9-bo-`0;47>0)=G4eD8pHNLOHoscXI4<(jZ?+6moimi%)Lb9ZWd`tGN#yVflt3EdUW7L?JS90~x#B}x zI8NvU&D`G!MX9w`LPG@rC4+Eabuw9A$_hz~WeJuPmEx|(8~wD-uKf<<9wqGB+2z?a zyyF=Q1LNI0L!o+s$B3&!mi^pO;J5HF>c85pd^^6Ta4)yb$l@(t#c(ivi*DH^=(pPZ zH3P-`jpoNrH&x>ujnY-b@qiaJKNAU-+n_B86RIYOBirR&z#jDYIKOLMwjn-rZqW2K!USxn#uH90>JIW(*KK16L`um-j z4)8yg&Y2YRu;s+|q>Kx;A5U`Fc}}nnD$KdSz=PE@Fv1*9&Hbt7nqk`eRfaCw@{s_+ zka?p|u({}Xc#Ip^&A+J&^M-aGd5a_V@CrP+H|w;Xnt3zGz8Spu<;5b*_gcSL^HR5N zr17>(Uu=@h|M;>;e%_bFJ(ID)1P6oRqt$;FQ8%X0?mMoJ$=;cr^Lj!x>{ykty9?HucJ z>V{4=0goJhX7un8M3%jTwLSkAgsPCy zu{w&SHwPF|N!mbioHW8V8BDeNTFTuplncd7(ZQ(vu}NZvCBrtU3+2JKosMk2*(IyK z4<%#OQ^Rx8>X=WnI_49)(S37kr`^Xt;M0BrjqWk@&JF48pp=sUs@=A_p23Ub0gQi$ zp3*3VyY$c~_$M5N_QgAm-Z?kh1F=TxFVIuN?-}kSd4B^$zfY+AdxSU~)M+_pr2IVz zMlh;n>jqM9fFuXf73wRkTAndrG5i2A;HJ5`OfVt}clA(1J1<^W)G z=TOV2)5Ytx70{wQna#rid5mXxa~nS;EcAui&X+kP^%z+0K(P*|f?YheU(wD*BX;Vw zim+2Jjp)+mpmk%%hhs!L0J+y%U=~#yr;69OT3=lz)u6oZl9$Ah!X_^l+ZyvCm&p@a zc4-TBmpX*FhCv#*OJTtu%Hizf4_|$AlSvh>Uk^WhThNI2hp)c=1{VEm$w%$?^*1-O zeZKk4O?7_>?#AA=?Q010xmLQx1!vmpPZ4?(?A0tpq5Sth3Iz(Osp7KULwGAH!rDJ~ zm9B;D_u>IRwRdmcY+t}PTH{`^{VC${jo0Lkfu1f9hf-Uf(oLZv@C;meI`nYUNm@>c zw|H06?f;f8UI&S8|F}W7pSWY&^r+qwqp+SBvU*QQT^<=Gf>CBEbr?XnPlxpMyfU_X z_rfd875iq^(gPzeHw^j^Kmp5D)9HQG6YD601>1%ao!Hy zBAX1cmXtYjezk!jR3T=G`*qXtFYa!m@-yQaQgsTOS%gz}t9=;k=`t7Nx%X)D(>6Jj zM$?5DpB;2bBj~(A^>KJPc{w@rt8;9H{kjdOc&tFhqOhGgM2IYsC0OF4w`2XJF#wzE zwUNDKEbaB{<(HE`?hS0xD@kDxul9&3ubzz%KK?ZH>j0uVMl?+s zVOW+XOlDVgLVR0)`5683A$j@UH@tjnB!r@28Op}mJBQ3rxa(VVdDCPF)?tuA_3Xgs z3w<*d<5MBkNT~)_(vFPn<#@;0K%j+v(;OiVQDD$CB17$rjg@)=KEN)UnwbsrxEI;D zHX@MXsMm`12;uxW2gW&)bVLOGa%=B*P0Iow+jDu#Bdt+L=L0KnY>|z2N^3CSc?xmW z?9k`ak|fWc+AZPh3+NOERn_XXm^4dHO0}+;_`$%)oW>B+H7!_j{;+v8TjJ%$1FETh z{uRg7@Z79&WI0PFVbSE6MJ-q6CJdmUn{|fBzwO*b!Oy9Qo~&J@zpueAGoVHGknk8U z6vv1Pm4WjgQUrv}_?{|1x{h0KG?ae~#W8mc_ul$&*3EYzS&6zzHhkxQk;{h_7e@r> zk(ohLs)WFaK?Qwad^9-SWe_<}=9VTibDxJLHM%A_hDr_#FK-T=G`>?QGf>sO#^zj} zhEM}377`mBi6c&}@x&D?ka$}OMt1lgFOIyW3M+O{s!#1NhTIv}MZIdyXYi|$@MaSt z{5B^Q`9!@xX{4oa5~YdlWmzX?>R<$(CMf8FJ9zefj8JU2^~^r(e>gpW!?*Gu6Wc4> zhQly>$7FB9Kr8T4UX1tJ+w3e43V^#jo1q#xBNDrKFQEGx9E=L)ZAJ2o^XjAvN2Ae) zZPpCtfTkSq<#OSIDC6B`KkBqBnriA5CkDuN#GuG zQy>G$`@s}61)5$N{_(JSIeAf>O%Py(0BxjEJ}jzAwFYgQO$#XFg)=W@d%n)PIL7Kf z&d{K)Bn_)~S07kEf#u!8z(JG|!CDdQMYYgfA2~=F@NtwBqETG5LuePsis;(37{e%A zR+HIrUZJ@vO?3dUb<~N?T;=ilSgOTk^DfFUA+CEcGJBKXfHaU*`s4_@)%gLeG=BUr z?PM3T7e75a+C~+PoiACwMh`Kpqi&BvVHt_ZcHg!Wjy1@{0pPWutu7>mF!KgD9jN~` z+?fa)2DSEpTJpESFQ-AOA=w^~Oj>$ObB#?^7eqrE0?H6m$LBR^3#Bd3M6npC>okVC zVSWpTQI#PVq0&US5@^k+FSjcZCDv?D(zgIU@{K3Cc+ zAo&ytHT;ZvugGl6C?P~uKQ`qLCM^6y+~)D&$1=jNaZruTeHCbNDo%Xex`Lx+bP;Y|BwaeEi`2((K0YR+p zmy)u%K)?+TX)NJjdbO3{ERGI?skxlC%f^Q;(jZl)t9-;qX*d35S zsaPx<0PtIh+~oX8m(@hHx(g ze$8LhYzH!mP*R%l{B^Bq43LlT_H4^~-cOFUj2hge?4YIyd;c(kcdlsr_n3Bj0`ipn z+Coi)F^Wd8xd^XD@FWFrei?g~?W=v^bW)1=!M!|($s2gz=rvkAfSv^8; z`{o&tBC2EqSv5T)fiNZE09JA^$eA26U~CE`yn3Mp5{ddW%+Czl$=2iGRNqgdBN@5Zfmu8f+gxO^LY=&rNUD(KR4)c=HCvxWYRKR zk(lF*E{MynmDlUV79vl-F}6q&IaP)%?AI z=S60}#CZo@(xaEBa-N1}OIq;uuDXO{hRc_SeH|dAHx`_MwkMW&Gh{MLSe$MR2S7;< zSY^avs@^J$ua9Se(l*s0#Ma^dXfosP{qybDS}{WOr|qLab^^YU_oL>VAB{n@L7}S? zbdCnYq8x8!S4rKZRnhJXf8f`Nik~DVzTz3>NXb;p7*#7$A}4b%36;T)gS%vQeMl)* zu*!296G`Hzep9gbBLz)JMT|se17LJ{NVlZDj1~bTgZwBJ3UB29nu7yUNO{^HbJ~UW z^F;Wjw}OuU$kkGjCs%UbGzi+l3-U3QKG$|PEjNP*1v0M(jphC_G9QSo*+)%cE~QM& z_hnV$ayJbY3garpMw>KJY`id3-_W2GcXrDyP{C?7&t>(fy*JMu7j(Y~%aI2(@D&*tHzDK%qyIf=e0@8zkykz3>cWhczpowDqVh z2rbFlM9}@Y&d4%>-m`>}eZCn+);hhxfyPKt_U44_Eh(1cW{AvEKqtzmVaQ3VLBR5#A!IhBI9GlA=#sgyU4B#VMT~w00*RR@99qHad)&AiGcKJtAnn=g~YXwd0V5Wbd*q`JU zkvr8JPTO7)POlxcIr@`R&)438{elJeK1`)t*9$8V=}`OAps<(z^bBd&8lE6E1c+X= z(1o>J8H%>XZeZiz8h_uLNGfn9`qU?b>TS=Q*!}%|=L3g-LnWzgKsbF1_v?1+6n#7D zeG5TE%*-w1oy)fEye|&kmb1=EeNHDouh^klt^Fk5oOHIy8|sU4_jh9i!9oHkq8t)d zRUA3JO3dcb;IQ}(OwIq_-L*EgjV#gc_g8qmTUk?A7(XBZaj6s`Bw-gw76_@`+!Q5j z8MLt_N3xSpCjb4O?wOWm^e|#?Qk&XOU}@AE&7-Fur@QA!tydGstTKqH#Y5r<*=|Y! z&3dp)!I?PdGH7%eMcPJO;cM{~kXOWKui*SPOJk%wfsZBQC2ZtWtuHuvk47L{c55;A z7>%JS^(jLuy40nw`)h--f1>EupmTJZ;*~( zju}1fB6>hu-_xmmy!eY>g>6CuQ=G;U5!qS?0H;CW-49c-q;xoQroaygzM zBH%weo1M$iQ+S z8ae9=;}vbKh@pkcv5*xZd-p&%reMj+L7Y3`Qgnf0-}MZ&|=Ot4Ef9 zHQEHE|8i)ynri*MVtKb0tDGIi4$`&)KWXfUbxUm!WVgzcEKywZ6-mI5B%|cWQmZ3PP)6TK z`>X89O8Jx4kjRdxQs@tYQ7{k^#q~#t=&}V!NmB}ug^F z1NB}o@cQzm@xFkmA%s&=+mzl$njVT&Mr|^Hp@vS#1t?KCCxpX@a%Q7UPS_^j={Nwk z#2Mh%d#S{g3fbUdW4i=1WK#ck7eP?6p;7 zb1m*enrsNwWYfDKi5eb+8>lm`_8OOQ7-DWFZSOLkPm#kw@dHE-@xE&7yi_AZ#PEjh zQCbSBa1iLmYMS>h!3S!WDb7w5!aw+c;_=9MVntYDsW>}8x)MVbPCRmxe_FaTVl_-WtZZ`x-k{FJ^t z7?d*7zG9?sG#ZRlQ{1%qD2l-3=F-ozQ8k6WnyM{V)9F4mXRzCq(bJ#TMW8)RBm%T~ zB2o8ACIJyeVXOHJ*+%?fV-{ueXn&2vF~~tU2S5s_ZR9wg1IRsV8`H^@=rzPL^WU-f zqUX5#usFvA?=G2Rl*XgNY+syb#vDU%DIBRwj#4i_;hvgPuYAIBl;SYiQ;U}h$EbPL z7ozl}4JCog#l=Os&wxn%c!50HaSYWqAt)5iHoZ=)b`VJY_VLT7`xpDi=Q#Gz5J#2* z%kZmTrIr|2T0qqwM^g$|p`#>u+_LBH<@x@}$-&cuhLOGgPmhkkwRR=3N*rG^l8rr z~J3)Q}@onQWmz9>=*gWZd!H~Oc#cZm3* zC;l}m?7_p$UoZtpY%n?}s4Skk=#4*lH_0h{XPV|g2$X}m7a9c(LGHcoPr(|ZT2t3g zA!o8!w?Z5|$6|9cdv=ZTu{6>MADZ|gzxK9@Y|Bg87I@TA1&><7o5DPA3KegHIJ{KM z*Uh?M8h45Lim9x@`8NT;ZnR2*Ap&~Z*Ru&uV$G6MNuQ)@k@Pj~ZqGiU^krMpCz;id z^dlC}LzE}2!!DY$D3Q$)VJFCo`__rpvt^fV-<5V-R=W*cXW6B@0ZKUXpi<;z7j@+A zdEw7mY&m;*inU^KReDxVtdglGc3pB}b)D`8pIFD=DLv>_wfQS_vHkXkeQ1!7JoK?3n?JeDK@cy&xMsL={?7fmzsNnS); zGLmtABx5y_am7epFkl_2S%F~Z`oZ{v;=Zc+PNjYj{ksYD)O&jrSuY47anKk-QiK%v zL&#PZO-^$*8A*NB9LX@R9iSdDlN0qok1Wdc<_^6D^~VhW_Mct55rvC;E{q-Oxo)R; z*nzI*c%-;W!>)^ZL>)s$gwVLqF9p^FR8?f4##-(Hs|e^C!Zx#8I6Ff<@oh+mvldaT zYju(JDJ+6SDOre?QVX@iQhvLS&~rXLd-g%Ih3o17*#f0m7hSvi07<)%V-7?>4^^*U z98(JPEk8xJ_!N0s$sC+y$)di$&Vz2mzDnl>nHm+wNmFEb6mt`_Ba%t6LIZ>$L!y9# zxI~Pa%v!K3lPcpZq#4Fi+vyZFgccRzvawtBf*A<~zk~wCY~(|_@o0pKJ^l<3y|akR zE`dP|C<(^JjDACG=lf6c(fB~0Q}D1rzVMfy2T!8at#-kBal$N#??cJ#qzWSGj_3)M zdquj79Cu1L2!&Tey9w5PlfkOQTvwJA)o)qyl4MibTFEZ%6et2-q-CV-0OoR@sc z_h+*Xp^gOMC|c{aJ2op#CD;;Mbzk!VVWV|y)s~T(SQP>G*-$Os)ta&`JLPb6eZJZK z2onpTo@L+@Y^K3@4od+*_*5180`Zxjp)7%gnRCr*pxSjgLp6EkmXf6g_n>zbO|SiU zDMi)f9yF&=5|gDQxy3yx9+F!i)fyo2<1Ol1?ZJbC8EL_^XF%p8#O5rBYrWA|o#S3Q#9BTq)X#UT_z zKqXZ~e`>rN%F;!!n*0m8>=2w8XP@%{f(pw#?#z)>+9gMqJ{~D(W zWPRNZ)Cm0^5cujV||JA_}7(77N<=e z$kf^1KFP)$1APKG^*fQY`r@t#L<5X=0#dIae3E)qqC-B*s5z;{9*T@Icqx0m3r?Yu z06ooGL%h@S-DXj~%LH-=MbAq{Z^^g?c~ue_s$6H80Na(4xDV(w2*i?A2OpP^Do#qzxh~p;uf9*@IXKZ%S5z7LPTYW68Rh=GVnk zt&8bh>jD}Cg(*TAqu7HycT~VC6~_UWFNY?8)u}1kFbpRzthKL(YC|?$NKQ#o`6!_h zIcy1dfjIS9G+{e9pNq!t(`X(;`({yY zE9FR;2Nee{wj&HE2%m%gfn>gbc|}Jh9hs#pbPUra@q0|5*E9s$o#TI{jk*c2TiONdegIRT&vt);L^TcE zeW12@JY3ILv5JRC^+I+ecNZY|43RC_XPs%rsFv{3}ygx83vFRSQVpk7%Sl1!Ur(R{K5Dhy}CDwT%Un-3^qxt z`V<`ZI{j>GAr5@E3B`Rl$6|x7f_IjA{0$vor`g|J-`MDFt^XIxsjRUDBiK>W?U#2e x+y7cy`>~NQ2R_0^1`^}-$>9$EYi|s;)-Q+t;L(=%XxJI`2cy9yEF@$~`X6E02T1?` diff --git a/priv/static/static/js/app.5c94bdec79a7d0f3cfcb.js.map b/priv/static/static/js/app.5c94bdec79a7d0f3cfcb.js.map deleted file mode 100644 index 163f78149e64bc29951b4b210d14da70f608af20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1658468 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

o&~Y&3nA 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쫍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⁡c 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

Jc?)Jr7vY0>qSrdZr|DJ!+$(Le~i+ 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 Sf3(%Tz16*U1PuvQN&f@3L{&im literal 0 HcmV?d00001 diff --git a/priv/static/static/js/app.def6476e8bc9b214218b.js.map b/priv/static/static/js/app.def6476e8bc9b214218b.js.map new file mode 100644 index 0000000000000000000000000000000000000000..a03cad2581e5778e348727271bf6ac11c0e30edd GIT binary patch literal 1658859 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�TW{d&zMieVk|?+s$97Mm^~$Jx!9~A47C8mZ=$R$ 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�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�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 Date: Fri, 17 Apr 2020 23:55:56 +0200 Subject: [PATCH 065/137] migrations/20200406100225_users_add_emoji: Fix tag to Emoji filtering, electric bongaloo --- lib/pleroma/web/activity_pub/activity_pub.ex | 5 ++++- priv/repo/migrations/20200406100225_users_add_emoji.exs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index d403405a0..cb942c211 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1430,7 +1430,10 @@ defp object_to_user_data(data) do emojis = data |> Map.get("tag", []) - |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) + |> Enum.filter(fn + %{"type" => t} -> t == "Emoji" + _ -> false + end) |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> Map.put(acc, String.trim(name, ":"), url) end) diff --git a/priv/repo/migrations/20200406100225_users_add_emoji.exs b/priv/repo/migrations/20200406100225_users_add_emoji.exs index 9f57abb5c..f754502ae 100644 --- a/priv/repo/migrations/20200406100225_users_add_emoji.exs +++ b/priv/repo/migrations/20200406100225_users_add_emoji.exs @@ -17,7 +17,10 @@ def up do emoji = user.source_data |> Map.get("tag", []) - |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) + |> Enum.filter(fn + %{"type" => t} -> t == "Emoji" + _ -> false + end) |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> Map.put(acc, String.trim(name, ":"), url) end) From 24f760c2f732465151655fd4cd69cc149546b29f Mon Sep 17 00:00:00 2001 From: Haelwenn Date: Fri, 17 Apr 2020 22:48:37 +0000 Subject: [PATCH 066/137] Apply suggestion to lib/pleroma/web/activity_pub/activity_pub.ex --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index cb942c211..eedea08a2 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1431,7 +1431,7 @@ defp object_to_user_data(data) do data |> Map.get("tag", []) |> Enum.filter(fn - %{"type" => t} -> t == "Emoji" + %{"type" => "Emoji"} -> true _ -> false end) |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> From d698ecef9b5ede19474f1a45b776f8ad9f8b7678 Mon Sep 17 00:00:00 2001 From: Haelwenn Date: Fri, 17 Apr 2020 22:48:40 +0000 Subject: [PATCH 067/137] Apply suggestion to priv/repo/migrations/20200406100225_users_add_emoji.exs --- priv/repo/migrations/20200406100225_users_add_emoji.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/repo/migrations/20200406100225_users_add_emoji.exs b/priv/repo/migrations/20200406100225_users_add_emoji.exs index f754502ae..f248108de 100644 --- a/priv/repo/migrations/20200406100225_users_add_emoji.exs +++ b/priv/repo/migrations/20200406100225_users_add_emoji.exs @@ -18,7 +18,7 @@ def up do user.source_data |> Map.get("tag", []) |> Enum.filter(fn - %{"type" => t} -> t == "Emoji" + %{"type" => "Emoji"} -> true _ -> false end) |> Enum.reduce(%{}, fn %{"icon" => %{"url" => url}, "name" => name}, acc -> From c906ffc51a3c36213f2c10d6d20046beb32e5d10 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sun, 19 Apr 2020 20:23:48 +0200 Subject: [PATCH 068/137] =?UTF-8?q?mix.exs:=20Do=20not=20bail=20out=20when?= =?UTF-8?q?=20.git=20doesn=E2=80=99t=20exists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mix.exs | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/mix.exs b/mix.exs index c5e5fd432..b76aef180 100644 --- a/mix.exs +++ b/mix.exs @@ -221,19 +221,26 @@ defp version(version) do identifier_filter = ~r/[^0-9a-z\-]+/i # Pre-release version, denoted from patch version with a hyphen + {tag, tag_err} = + System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true) + + {describe, describe_err} = System.cmd("git", ["describe", "--tags", "--abbrev=8"]) + {commit_hash, commit_hash_err} = System.cmd("git", ["rev-parse", "--short", "HEAD"]) + git_pre_release = - with {tag, 0} <- - System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true), - {describe, 0} <- System.cmd("git", ["describe", "--tags", "--abbrev=8"]) do - describe - |> String.trim() - |> String.replace(String.trim(tag), "") - |> String.trim_leading("-") - |> String.trim() - else - _ -> - {commit_hash, 0} = System.cmd("git", ["rev-parse", "--short", "HEAD"]) + cond do + tag_err == 0 and describe_err == 0 -> + describe + |> String.trim() + |> String.replace(String.trim(tag), "") + |> String.trim_leading("-") + |> String.trim() + + commit_hash_err == 0 -> "0-g" <> String.trim(commit_hash) + + true -> + "" end # Branch name as pre-release version component, denoted with a dot @@ -251,6 +258,8 @@ defp version(version) do |> String.replace(identifier_filter, "-") branch_name + else + _ -> "stable" end build_name = From 258d8975797298b9eadddb48a8a2fcf3a9dbf211 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 20 Apr 2020 16:38:00 +0400 Subject: [PATCH 069/137] Cleanup and DRY the Router --- lib/pleroma/web/router.ex | 113 ++++++++++++++------------------------ 1 file changed, 40 insertions(+), 73 deletions(-) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 7e5960949..153802a43 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -16,79 +16,60 @@ defmodule Pleroma.Web.Router do plug(Pleroma.Plugs.UserEnabledPlug) end - pipeline :api do - plug(:accepts, ["json"]) - plug(:fetch_session) + 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) + end + + pipeline :after_auth do plug(Pleroma.Plugs.UserEnabledPlug) plug(Pleroma.Plugs.SetUserSessionIdPlug) plug(Pleroma.Plugs.EnsureUserKeyPlug) - plug(Pleroma.Plugs.IdempotencyPlug) + end + + pipeline :base_api do + plug(:accepts, ["json"]) + plug(:fetch_session) + plug(:authenticate) plug(OpenApiSpex.Plug.PutApiSpec, module: Pleroma.Web.ApiSpec) end + pipeline :api do + plug(:base_api) + plug(:after_auth) + plug(Pleroma.Plugs.IdempotencyPlug) + end + pipeline :authenticated_api do - plug(:accepts, ["json"]) - plug(:fetch_session) + plug(:base_api) plug(Pleroma.Plugs.AuthExpectedPlug) - 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.Plugs.UserEnabledPlug) - plug(Pleroma.Plugs.SetUserSessionIdPlug) + plug(:after_auth) plug(Pleroma.Plugs.EnsureAuthenticatedPlug) plug(Pleroma.Plugs.IdempotencyPlug) - plug(OpenApiSpex.Plug.PutApiSpec, module: Pleroma.Web.ApiSpec) end pipeline :admin_api do - plug(:accepts, ["json"]) - plug(:fetch_session) - 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(:base_api) plug(Pleroma.Plugs.AdminSecretAuthenticationPlug) - plug(Pleroma.Plugs.UserEnabledPlug) - plug(Pleroma.Plugs.SetUserSessionIdPlug) + plug(:after_auth) plug(Pleroma.Plugs.EnsureAuthenticatedPlug) plug(Pleroma.Plugs.UserIsAdminPlug) plug(Pleroma.Plugs.IdempotencyPlug) - plug(OpenApiSpex.Plug.PutApiSpec, module: Pleroma.Web.ApiSpec) end pipeline :mastodon_html do - plug(:accepts, ["html"]) - plug(:fetch_session) - 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.Plugs.UserEnabledPlug) - plug(Pleroma.Plugs.SetUserSessionIdPlug) - plug(Pleroma.Plugs.EnsureUserKeyPlug) + plug(:browser) + plug(:authenticate) + plug(:after_auth) end pipeline :pleroma_html do - plug(:accepts, ["html"]) - plug(:fetch_session) - plug(Pleroma.Plugs.OAuthPlug) - plug(Pleroma.Plugs.BasicAuthDecoderPlug) - plug(Pleroma.Plugs.UserFetcherPlug) - plug(Pleroma.Plugs.SessionAuthenticationPlug) - plug(Pleroma.Plugs.AuthenticationPlug) + plug(:browser) + plug(:authenticate) plug(Pleroma.Plugs.EnsureUserKeyPlug) end @@ -515,7 +496,7 @@ defmodule Pleroma.Web.Router do end scope "/api" do - pipe_through(:api) + pipe_through(:base_api) get("/openapi", OpenApiSpex.Plug.RenderSpec, []) end @@ -529,10 +510,6 @@ defmodule Pleroma.Web.Router do post("/qvitter/statuses/notifications/read", TwitterAPI.Controller, :notifications_read) end - pipeline :ap_service_actor do - plug(:accepts, ["activity+json", "json"]) - end - pipeline :ostatus do plug(:accepts, ["html", "xml", "rss", "atom", "activity+json", "json"]) plug(Pleroma.Plugs.StaticFEPlug) @@ -543,8 +520,7 @@ defmodule Pleroma.Web.Router do end scope "/", Pleroma.Web do - pipe_through(:ostatus) - pipe_through(:http_signature) + pipe_through([:ostatus, :http_signature]) get("/objects/:uuid", OStatus.OStatusController, :object) get("/activities/:uuid", OStatus.OStatusController, :activity) @@ -562,13 +538,6 @@ defmodule Pleroma.Web.Router do get("/mailer/unsubscribe/:token", Mailer.SubscriptionController, :unsubscribe) end - # Server to Server (S2S) AP interactions - pipeline :activitypub do - plug(:accepts, ["activity+json", "json"]) - plug(Pleroma.Web.Plugs.HTTPSignaturePlug) - plug(Pleroma.Web.Plugs.MappedSignatureToIdentityPlug) - end - scope "/", Pleroma.Web.ActivityPub do # XXX: not really ostatus pipe_through(:ostatus) @@ -576,19 +545,22 @@ defmodule Pleroma.Web.Router do get("/users/:nickname/outbox", ActivityPubController, :outbox) end + pipeline :ap_service_actor do + plug(:accepts, ["activity+json", "json"]) + end + + # Server to Server (S2S) AP interactions + pipeline :activitypub do + plug(:ap_service_actor) + plug(:http_signature) + end + # Client to Server (C2S) AP interactions pipeline :activitypub_client do - plug(:accepts, ["activity+json", "json"]) + plug(:ap_service_actor) plug(:fetch_session) - 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.Plugs.UserEnabledPlug) - plug(Pleroma.Plugs.SetUserSessionIdPlug) - plug(Pleroma.Plugs.EnsureUserKeyPlug) + plug(:authenticate) + plug(:after_auth) end scope "/", Pleroma.Web.ActivityPub do @@ -660,12 +632,7 @@ defmodule Pleroma.Web.Router do get("/web/*path", MastoFEController, :index) end - pipeline :remote_media do - end - scope "/proxy/", Pleroma.Web.MediaProxy do - pipe_through(:remote_media) - get("/:sig/:url", MediaProxyController, :remote) get("/:sig/:url/:filename", MediaProxyController, :remote) end From 8b4de61d6449f70e0a5e84be3082724c7f50ffee Mon Sep 17 00:00:00 2001 From: Ilja Date: Mon, 20 Apr 2020 12:59:16 +0000 Subject: [PATCH 070/137] Fix ObjectAgePolicyTest The policy didn't block old posts as it should. * I fixed it and tested on a test server * I added the settings to description so that this information is shown in nodeinfo * TODO: I didn't work TTD and still need to fix the tests --- CHANGELOG.md | 2 + .../web/activity_pub/mrf/object_age_policy.ex | 10 +++- .../mrf/object_age_policy_test.exs | 52 ++++++++++--------- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9270e801f..e454bd9d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,8 +28,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Logger configuration through AdminFE - HTTP Basic Authentication permissions issue +- ObjectAgePolicy didn't filter out old messages ### Added +- NodeInfo: ObjectAgePolicy settings to the `federation` list.

API Changes - Admin API: `GET /api/pleroma/admin/need_reboot`. diff --git a/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex b/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex index 4a8bc91ae..b0ccb63c8 100644 --- a/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy do @moduledoc "Filter activities depending on their age" @behaviour Pleroma.Web.ActivityPub.MRF - defp check_date(%{"published" => published} = message) do + defp check_date(%{"object" => %{"published" => published}} = message) do with %DateTime{} = now <- DateTime.utc_now(), {:ok, %DateTime{} = then, _} <- DateTime.from_iso8601(published), max_ttl <- Config.get([:mrf_object_age, :threshold]), @@ -96,5 +96,11 @@ def filter(%{"type" => "Create", "published" => _} = message) do def filter(message), do: {:ok, message} @impl true - def describe, do: {:ok, %{}} + def describe do + mrf_object_age = + Pleroma.Config.get(:mrf_object_age) + |> Enum.into(%{}) + + {:ok, %{mrf_object_age: mrf_object_age}} + end end diff --git a/test/web/activity_pub/mrf/object_age_policy_test.exs b/test/web/activity_pub/mrf/object_age_policy_test.exs index 7ee195eeb..b0fb753bd 100644 --- a/test/web/activity_pub/mrf/object_age_policy_test.exs +++ b/test/web/activity_pub/mrf/object_age_policy_test.exs @@ -20,26 +20,38 @@ defmodule Pleroma.Web.ActivityPub.MRF.ObjectAgePolicyTest do :ok end + defp get_old_message do + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() + end + + defp get_new_message do + old_message = get_old_message() + + new_object = + old_message + |> Map.get("object") + |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601()) + + old_message + |> Map.put("object", new_object) + end + describe "with reject action" do test "it rejects an old post" do Config.put([:mrf_object_age, :actions], [:reject]) - data = - File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode!() + data = get_old_message() - {:reject, _} = ObjectAgePolicy.filter(data) + assert match?({:reject, _}, ObjectAgePolicy.filter(data)) end test "it allows a new post" do Config.put([:mrf_object_age, :actions], [:reject]) - data = - File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode!() - |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601()) + data = get_new_message() - {:ok, _} = ObjectAgePolicy.filter(data) + assert match?({:ok, _}, ObjectAgePolicy.filter(data)) end end @@ -47,9 +59,7 @@ test "it allows a new post" do test "it delists an old post" do Config.put([:mrf_object_age, :actions], [:delist]) - data = - File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode!() + data = get_old_message() {:ok, _u} = User.get_or_fetch_by_ap_id(data["actor"]) @@ -61,14 +71,11 @@ test "it delists an old post" do test "it allows a new post" do Config.put([:mrf_object_age, :actions], [:delist]) - data = - File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode!() - |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601()) + data = get_new_message() {:ok, _user} = User.get_or_fetch_by_ap_id(data["actor"]) - {:ok, ^data} = ObjectAgePolicy.filter(data) + assert match?({:ok, ^data}, ObjectAgePolicy.filter(data)) end end @@ -76,9 +83,7 @@ test "it allows a new post" do test "it strips followers collections from an old post" do Config.put([:mrf_object_age, :actions], [:strip_followers]) - data = - File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode!() + data = get_old_message() {:ok, user} = User.get_or_fetch_by_ap_id(data["actor"]) @@ -91,14 +96,11 @@ test "it strips followers collections from an old post" do test "it allows a new post" do Config.put([:mrf_object_age, :actions], [:strip_followers]) - data = - File.read!("test/fixtures/mastodon-post-activity.json") - |> Poison.decode!() - |> Map.put("published", DateTime.utc_now() |> DateTime.to_iso8601()) + data = get_new_message() {:ok, _u} = User.get_or_fetch_by_ap_id(data["actor"]) - {:ok, ^data} = ObjectAgePolicy.filter(data) + assert match?({:ok, ^data}, ObjectAgePolicy.filter(data)) end end end From ed3974af248a1b201d2008f1a128ee53550ef78b Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 20 Apr 2020 18:39:05 +0400 Subject: [PATCH 071/137] Add OpenAPI spec for `AccountController.identity_proofs` operation --- .../web/api_spec/operations/account_operation.ex | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index fe44a917a..d3cebaf05 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -341,4 +341,16 @@ def endorsements_operation do } } end + + def identity_proofs_operation do + %Operation{ + tags: ["accounts"], + summary: "Identity proofs", + operationId: "AccountController.identity_proofs", + description: "Not implemented", + responses: %{ + 200 => Operation.response("Empry array", "application/json", %Schema{type: :array}) + } + } + end end From b54c8813d632cb44c7deb207e91bd32f01f33794 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 13 Apr 2020 13:48:32 -0500 Subject: [PATCH 072/137] Add :reject_deletes option to SimplePolicy --- CHANGELOG.md | 2 + config/config.exs | 3 +- config/description.exs | 10 ++- docs/configuration/mrf.md | 3 +- .../web/activity_pub/mrf/simple_policy.ex | 14 +++- .../activity_pub/mrf/simple_policy_test.exs | 79 +++++++++++++++---- 6 files changed, 89 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36897503a..cd2536f9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - NodeInfo: `pleroma_emoji_reactions` to the `features` list. - Configuration: `:restrict_unauthenticated` setting, restrict access for unauthenticated users to timelines (public and federate), user profiles and statuses. - New HTTP adapter [gun](https://github.com/ninenines/gun). Gun adapter requires minimum OTP version of 22.2 otherwise Pleroma won’t start. For hackney OTP update is not required. +- Added `:reject_deletes` group to SimplePolicy
API Changes - Mastodon API: Support for `include_types` in `/api/v1/notifications`. @@ -20,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Support pagination in conversations API +- **Breaking**: SimplePolicy `:reject` and `:accept` allow deletions again ## [unreleased-patch] diff --git a/config/config.exs b/config/config.exs index 232a91bf1..9a6b93a37 100644 --- a/config/config.exs +++ b/config/config.exs @@ -334,7 +334,8 @@ reject: [], accept: [], avatar_removal: [], - banner_removal: [] + banner_removal: [], + reject_deletes: [] config :pleroma, :mrf_keyword, reject: [], diff --git a/config/description.exs b/config/description.exs index 642f1a3ce..9d8e3b93c 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1317,13 +1317,13 @@ %{ key: :reject, type: {:list, :string}, - description: "List of instances to reject any activities from", + description: "List of instances to reject activities from (except deletes)", suggestions: ["example.com", "*.example.com"] }, %{ key: :accept, type: {:list, :string}, - description: "List of instances to accept any activities from", + description: "List of instances to only accept activities from (except deletes)", suggestions: ["example.com", "*.example.com"] }, %{ @@ -1343,6 +1343,12 @@ type: {:list, :string}, description: "List of instances to strip banners from", suggestions: ["example.com", "*.example.com"] + }, + %{ + key: :reject_deletes, + type: {:list, :string}, + description: "List of instances to reject deletions from", + suggestions: ["example.com", "*.example.com"] } ] }, diff --git a/docs/configuration/mrf.md b/docs/configuration/mrf.md index c3957c255..2eb9631bd 100644 --- a/docs/configuration/mrf.md +++ b/docs/configuration/mrf.md @@ -43,9 +43,10 @@ Once `SimplePolicy` is enabled, you can configure various groups in the `:mrf_si * `media_removal`: Servers in this group will have media stripped from incoming messages. * `media_nsfw`: Servers in this group will have the #nsfw tag and sensitive setting injected into incoming messages which contain media. -* `reject`: Servers in this group will have their messages rejected. +* `reject`: Servers in this group will have their messages (except deletions) rejected. * `federated_timeline_removal`: Servers in this group will have their messages unlisted from the public timelines by flipping the `to` and `cc` fields. * `report_removal`: Servers in this group will have their reports (flags) rejected. +* `reject_deletes`: Deletion requests will be rejected from these servers. Servers should be configured as lists. diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index b23f263f5..b7dcb1b86 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -149,7 +149,19 @@ defp check_banner_removal(%{host: actor_host} = _actor_info, %{"image" => _image defp check_banner_removal(_actor_info, object), do: {:ok, object} @impl true - def filter(%{"type" => "Delete"} = object), do: {:ok, object} + def filter(%{"type" => "Delete", "actor" => actor} = object) do + %{host: actor_host} = URI.parse(actor) + + reject_deletes = + Pleroma.Config.get([:mrf_simple, :reject_deletes]) + |> MRF.subdomains_regex() + + if MRF.subdomain_match?(reject_deletes, actor_host) do + {:reject, nil} + else + {:ok, object} + end + end @impl true def filter(%{"actor" => actor} = object) do diff --git a/test/web/activity_pub/mrf/simple_policy_test.exs b/test/web/activity_pub/mrf/simple_policy_test.exs index eaa595706..b7b9bc6a2 100644 --- a/test/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/web/activity_pub/mrf/simple_policy_test.exs @@ -17,7 +17,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do reject: [], accept: [], avatar_removal: [], - banner_removal: [] + banner_removal: [], + reject_deletes: [] ) describe "when :media_removal" do @@ -258,14 +259,6 @@ test "actor has a matching host" do assert SimplePolicy.filter(remote_user) == {:reject, nil} end - - test "always accept deletions" do - Config.put([:mrf_simple, :reject], ["remote.instance"]) - - deletion_message = build_remote_deletion_message() - - assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} - end end describe "when :accept" do @@ -316,14 +309,6 @@ test "actor has a matching host" do assert SimplePolicy.filter(remote_user) == {:ok, remote_user} end - - test "always accept deletions" do - Config.put([:mrf_simple, :accept], ["non.matching.remote"]) - - deletion_message = build_remote_deletion_message() - - assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} - end end describe "when :avatar_removal" do @@ -398,6 +383,66 @@ test "match with wildcard domain" do end end + describe "when :reject_deletes is empty" do + setup do: Config.put([:mrf_simple, :reject_deletes], []) + + test "it accepts deletions even from rejected servers" do + Config.put([:mrf_simple, :reject], ["remote.instance"]) + + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} + end + + test "it accepts deletions even from non-whitelisted servers" do + Config.put([:mrf_simple, :accept], ["non.matching.remote"]) + + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} + end + end + + describe "when :reject_deletes is not empty but it doesn't have a matching host" do + setup do: Config.put([:mrf_simple, :reject_deletes], ["non.matching.remote"]) + + test "it accepts deletions even from rejected servers" do + Config.put([:mrf_simple, :reject], ["remote.instance"]) + + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} + end + + test "it accepts deletions even from non-whitelisted servers" do + Config.put([:mrf_simple, :accept], ["non.matching.remote"]) + + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} + end + end + + describe "when :reject_deletes has a matching host" do + setup do: Config.put([:mrf_simple, :reject_deletes], ["remote.instance"]) + + test "it rejects the deletion" do + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:reject, nil} + end + end + + describe "when :reject_deletes match with wildcard domain" do + setup do: Config.put([:mrf_simple, :reject_deletes], ["*.remote.instance"]) + + test "it rejects the deletion" do + deletion_message = build_remote_deletion_message() + + assert SimplePolicy.filter(deletion_message) == {:reject, nil} + end + end + defp build_local_message do %{ "actor" => "#{Pleroma.Web.base_url()}/users/alice", From f685cbd30940b3fd92a2f6c8a161729bc2ceaab6 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 21 Apr 2020 16:29:19 +0300 Subject: [PATCH 073/137] Automatic checks of authentication / instance publicity. Definition of missing OAuth scopes in AdminAPIController. Refactoring. --- docs/dev.md | 33 ++++ lib/pleroma/plugs/auth_expected_plug.ex | 17 -- .../plugs/ensure_authenticated_plug.ex | 8 +- .../ensure_public_or_authenticated_plug.ex | 6 +- .../plugs/expect_authenticated_check_plug.ex | 20 +++ ...pect_public_or_authenticated_check_plug.ex | 21 +++ lib/pleroma/plugs/oauth_scopes_plug.ex | 14 +- .../web/admin_api/admin_api_controller.ex | 36 ++++- .../web/fallback_redirect_controller.ex | 2 + lib/pleroma/web/masto_fe_controller.ex | 7 +- .../controllers/account_controller.ex | 26 +-- .../controllers/auth_controller.ex | 4 +- .../controllers/conversation_controller.ex | 6 +- .../controllers/domain_block_controller.ex | 2 - .../controllers/filter_controller.ex | 2 - .../controllers/follow_request_controller.ex | 2 - .../controllers/list_controller.ex | 8 +- .../controllers/marker_controller.ex | 2 +- .../controllers/mastodon_api_controller.ex | 2 - .../controllers/media_controller.ex | 2 - .../controllers/notification_controller.ex | 2 - .../controllers/poll_controller.ex | 2 - .../controllers/report_controller.ex | 2 - .../scheduled_activity_controller.ex | 2 - .../controllers/search_controller.ex | 2 - .../controllers/status_controller.ex | 2 +- .../controllers/subscription_controller.ex | 2 +- .../controllers/timeline_controller.ex | 2 +- .../web/media_proxy/media_proxy_controller.ex | 1 + .../controllers/account_controller.ex | 14 +- .../controllers/emoji_api_controller.ex | 16 +- .../controllers/mascot_controller.ex | 2 - .../controllers/pleroma_api_controller.ex | 16 +- .../controllers/scrobble_controller.ex | 2 - lib/pleroma/web/router.ex | 152 ++++++++++-------- .../controllers/util_controller.ex | 7 - .../web/twitter_api/twitter_api_controller.ex | 14 +- lib/pleroma/web/web.ex | 85 +++++++--- test/plugs/ensure_authenticated_plug_test.exs | 16 +- ...sure_public_or_authenticated_plug_test.exs | 4 +- test/plugs/oauth_scopes_plug_test.exs | 36 +---- .../activity_pub_controller_test.exs | 2 +- .../controllers/emoji_api_controller_test.exs | 11 +- .../twitter_api_controller_test.exs | 8 +- 44 files changed, 355 insertions(+), 267 deletions(-) create mode 100644 docs/dev.md delete mode 100644 lib/pleroma/plugs/auth_expected_plug.ex create mode 100644 lib/pleroma/plugs/expect_authenticated_check_plug.ex create mode 100644 lib/pleroma/plugs/expect_public_or_authenticated_check_plug.ex diff --git a/docs/dev.md b/docs/dev.md new file mode 100644 index 000000000..0ecf43a9e --- /dev/null +++ b/docs/dev.md @@ -0,0 +1,33 @@ +This document contains notes and guidelines for Pleroma developers. + +# Authentication & Authorization + +## OAuth token-based authentication & authorization + +* Pleroma supports hierarchical OAuth scopes, just like Mastodon but with added granularity of admin scopes. + For a reference, see [Mastodon OAuth scopes](https://docs.joinmastodon.org/api/oauth-scopes/). + +* It is important to either define OAuth scope restrictions or explicitly mark OAuth scope check as skipped, for every + controller action. To define scopes, call `plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: [...]})`. To explicitly set + OAuth scopes check skipped, call `plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug )`. + +* In controllers, `use Pleroma.Web, :controller` will result in `action/2` (see `Pleroma.Web.controller/0` for definition) + be called prior to actual controller action, and it'll perform security / privacy checks before passing control to + actual controller action. For routes with `:authenticated_api` pipeline, authentication & authorization are expected, + thus `OAuthScopesPlug` will be run unless explicitly skipped (also `EnsureAuthenticatedPlug` will be executed + immediately before action even if there was an early run to give an early error, since `OAuthScopesPlug` supports + `:proceed_unauthenticated` option, and other plugs may support similar options as well). For `:api` pipeline routes, + `EnsurePublicOrAuthenticatedPlug` will be called to ensure that the instance is not private or user is authenticated + (unless explicitly skipped). Such automated checks help to prevent human errors and result in higher security / privacy + for users. + +## [HTTP Basic Authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) + +* With HTTP Basic Auth, OAuth scopes check is _not_ performed for any action (since password is provided during the auth, + requester is able to obtain a token with full permissions anyways). `Pleroma.Plugs.AuthenticationPlug` and + `Pleroma.Plugs.LegacyAuthenticationPlug` both call `Pleroma.Plugs.OAuthScopesPlug.skip_plug(conn)` when password + is provided. + +## Auth-related configuration, OAuth consumer mode etc. + +See `Authentication` section of [`docs/configuration/cheatsheet.md`](docs/configuration/cheatsheet.md#authentication). diff --git a/lib/pleroma/plugs/auth_expected_plug.ex b/lib/pleroma/plugs/auth_expected_plug.ex deleted file mode 100644 index f79597dc3..000000000 --- a/lib/pleroma/plugs/auth_expected_plug.ex +++ /dev/null @@ -1,17 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Plugs.AuthExpectedPlug do - import Plug.Conn - - def init(options), do: options - - def call(conn, _) do - put_private(conn, :auth_expected, true) - end - - def auth_expected?(conn) do - conn.private[:auth_expected] - end -end diff --git a/lib/pleroma/plugs/ensure_authenticated_plug.ex b/lib/pleroma/plugs/ensure_authenticated_plug.ex index 054d2297f..9c8f5597f 100644 --- a/lib/pleroma/plugs/ensure_authenticated_plug.ex +++ b/lib/pleroma/plugs/ensure_authenticated_plug.ex @@ -5,17 +5,21 @@ defmodule Pleroma.Plugs.EnsureAuthenticatedPlug do import Plug.Conn import Pleroma.Web.TranslationHelpers + alias Pleroma.User + use Pleroma.Web, :plug + def init(options) do options end - def call(%{assigns: %{user: %User{}}} = conn, _) do + @impl true + def perform(%{assigns: %{user: %User{}}} = conn, _) do conn end - def call(conn, options) do + def perform(conn, options) do perform = cond do options[:if_func] -> options[:if_func].() diff --git a/lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex b/lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex index d980ff13d..7265bb87a 100644 --- a/lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex +++ b/lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex @@ -5,14 +5,18 @@ defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug do import Pleroma.Web.TranslationHelpers import Plug.Conn + alias Pleroma.Config alias Pleroma.User + use Pleroma.Web, :plug + def init(options) do options end - def call(conn, _) do + @impl true + def perform(conn, _) do public? = Config.get!([:instance, :public]) case {public?, conn} do diff --git a/lib/pleroma/plugs/expect_authenticated_check_plug.ex b/lib/pleroma/plugs/expect_authenticated_check_plug.ex new file mode 100644 index 000000000..66b8d5de5 --- /dev/null +++ b/lib/pleroma/plugs/expect_authenticated_check_plug.ex @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Plugs.ExpectAuthenticatedCheckPlug do + @moduledoc """ + Marks `Pleroma.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`). + """ + + use Pleroma.Web, :plug + + def init(options), do: options + + @impl true + def perform(conn, _) do + conn + end +end diff --git a/lib/pleroma/plugs/expect_public_or_authenticated_check_plug.ex b/lib/pleroma/plugs/expect_public_or_authenticated_check_plug.ex new file mode 100644 index 000000000..ba0ef76bd --- /dev/null +++ b/lib/pleroma/plugs/expect_public_or_authenticated_check_plug.ex @@ -0,0 +1,21 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug do + @moduledoc """ + Marks `Pleroma.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`). + """ + + use Pleroma.Web, :plug + + def init(options), do: options + + @impl true + def perform(conn, _) do + conn + end +end diff --git a/lib/pleroma/plugs/oauth_scopes_plug.ex b/lib/pleroma/plugs/oauth_scopes_plug.ex index 66f48c28c..a61582566 100644 --- a/lib/pleroma/plugs/oauth_scopes_plug.ex +++ b/lib/pleroma/plugs/oauth_scopes_plug.ex @@ -7,15 +7,12 @@ defmodule Pleroma.Plugs.OAuthScopesPlug do import Pleroma.Web.Gettext alias Pleroma.Config - alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug - alias Pleroma.Plugs.PlugHelper use Pleroma.Web, :plug - @behaviour Plug - def init(%{scopes: _} = options), do: options + @impl true def perform(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do op = options[:op] || :| token = assigns[:token] @@ -34,7 +31,6 @@ def perform(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do conn |> assign(:user, nil) |> assign(:token, nil) - |> maybe_perform_instance_privacy_check(options) true -> missing_scopes = scopes -- matched_scopes @@ -71,12 +67,4 @@ def transform_scopes(scopes, options) do scopes end end - - defp maybe_perform_instance_privacy_check(%Plug.Conn{} = conn, options) do - if options[:skip_instance_privacy_check] do - conn - else - EnsurePublicOrAuthenticatedPlug.call(conn, []) - end - end end diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 9c79310c0..816c11e01 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -48,6 +48,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do %{scopes: ["write:accounts"], admin: true} when action in [ :get_password_reset, + :force_password_reset, :user_delete, :users_create, :user_toggle_activation, @@ -56,7 +57,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do :tag_users, :untag_users, :right_add, + :right_add_multiple, :right_delete, + :right_delete_multiple, :update_user_credentials ] ) @@ -84,13 +87,13 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do plug( OAuthScopesPlug, %{scopes: ["write:reports"], admin: true} - when action in [:reports_update] + when action in [:reports_update, :report_notes_create, :report_notes_delete] ) plug( OAuthScopesPlug, %{scopes: ["read:statuses"], admin: true} - when action == :list_user_statuses + when action in [:list_statuses, :list_user_statuses, :list_instance_statuses] ) plug( @@ -102,13 +105,30 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do plug( OAuthScopesPlug, %{scopes: ["read"], admin: true} - when action in [:config_show, :list_log, :stats] + when action in [ + :config_show, + :list_log, + :stats, + :relay_list, + :config_descriptions, + :need_reboot + ] ) plug( OAuthScopesPlug, %{scopes: ["write"], admin: true} - when action == :config_update + when action in [ + :restart, + :config_update, + :resend_confirmation_email, + :confirm_email, + :oauth_app_create, + :oauth_app_list, + :oauth_app_update, + :oauth_app_delete, + :reload_emoji + ] ) action_fallback(:errors) @@ -1103,25 +1123,25 @@ def stats(conn, _) do |> json(%{"status_visibility" => count}) end - def errors(conn, {:error, :not_found}) do + defp errors(conn, {:error, :not_found}) do conn |> put_status(:not_found) |> json(dgettext("errors", "Not found")) end - def errors(conn, {:error, reason}) do + defp errors(conn, {:error, reason}) do conn |> put_status(:bad_request) |> json(reason) end - def errors(conn, {:param_cast, _}) do + defp errors(conn, {:param_cast, _}) do conn |> put_status(:bad_request) |> json(dgettext("errors", "Invalid parameters")) end - def errors(conn, _) do + defp errors(conn, _) do conn |> put_status(:internal_server_error) |> json(dgettext("errors", "Something went wrong")) diff --git a/lib/pleroma/web/fallback_redirect_controller.ex b/lib/pleroma/web/fallback_redirect_controller.ex index c13518030..0d9d578fc 100644 --- a/lib/pleroma/web/fallback_redirect_controller.ex +++ b/lib/pleroma/web/fallback_redirect_controller.ex @@ -4,7 +4,9 @@ defmodule Fallback.RedirectController do use Pleroma.Web, :controller + require Logger + alias Pleroma.User alias Pleroma.Web.Metadata diff --git a/lib/pleroma/web/masto_fe_controller.ex b/lib/pleroma/web/masto_fe_controller.ex index 557cde328..9a2ec517a 100644 --- a/lib/pleroma/web/masto_fe_controller.ex +++ b/lib/pleroma/web/masto_fe_controller.ex @@ -13,11 +13,14 @@ defmodule Pleroma.Web.MastoFEController do # Note: :index action handles attempt of unauthenticated access to private instance with redirect plug( OAuthScopesPlug, - %{scopes: ["read"], fallback: :proceed_unauthenticated, skip_instance_privacy_check: true} + %{scopes: ["read"], fallback: :proceed_unauthenticated} when action == :index ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action not in [:index, :manifest]) + plug( + :skip_plug, + Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :manifest] + ) @doc "GET /web/*path" def index(%{assigns: %{user: user, token: token}} = conn, _params) diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index e8e59ac66..9b8cc0d0d 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -26,12 +26,24 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.OAuth.Token alias Pleroma.Web.TwitterAPI.TwitterAPI - plug(:skip_plug, OAuthScopesPlug when action == :identity_proofs) + plug(:skip_plug, OAuthScopesPlug when action in [:create, :identity_proofs]) + + plug( + :skip_plug, + Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug + when action in [:create, :show, :statuses] + ) plug( OAuthScopesPlug, %{fallback: :proceed_unauthenticated, scopes: ["read:accounts"]} - when action == :show + when action in [:show, :endorsements] + ) + + plug( + OAuthScopesPlug, + %{fallback: :proceed_unauthenticated, scopes: ["read:statuses"]} + when action == :statuses ) plug( @@ -56,21 +68,15 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug(OAuthScopesPlug, %{scopes: ["read:follows"]} when action == :relationships) - # Note: :follows (POST /api/v1/follows) is the same as :follow, consider removing :follows plug( OAuthScopesPlug, - %{scopes: ["follow", "write:follows"]} when action in [:follows, :follow, :unfollow] + %{scopes: ["follow", "write:follows"]} when action in [:follow_by_uri, :follow, :unfollow] ) plug(OAuthScopesPlug, %{scopes: ["follow", "read:mutes"]} when action == :mutes) plug(OAuthScopesPlug, %{scopes: ["follow", "write:mutes"]} when action in [:mute, :unmute]) - plug( - Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug - when action not in [:create, :show, :statuses] - ) - @relationship_actions [:follow, :unfollow] @needs_account ~W(followers following lists follow unfollow mute unmute block unblock)a @@ -356,7 +362,7 @@ def unblock(%{assigns: %{user: blocker, account: blocked}} = conn, _params) do end @doc "POST /api/v1/follows" - def follows(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do + def follow_by_uri(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do with {_, %User{} = followed} <- {:followed, User.get_cached_by_nickname(uri)}, {_, true} <- {:followed, follower.id != followed.id}, {:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do diff --git a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex index 37b389382..753b3db3e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex @@ -13,10 +13,10 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do action_fallback(Pleroma.Web.MastodonAPI.FallbackController) - @local_mastodon_name "Mastodon-Local" - plug(Pleroma.Plugs.RateLimiter, [name: :password_reset] when action == :password_reset) + @local_mastodon_name "Mastodon-Local" + @doc "GET /web/login" def login(%{assigns: %{user: %User{}}} = conn, _params) do redirect(conn, to: local_mastodon_root_path(conn)) diff --git a/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex b/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex index 7c9b11bf1..c44641526 100644 --- a/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex @@ -14,9 +14,7 @@ defmodule Pleroma.Web.MastodonAPI.ConversationController do action_fallback(Pleroma.Web.MastodonAPI.FallbackController) plug(OAuthScopesPlug, %{scopes: ["read:statuses"]} when action == :index) - plug(OAuthScopesPlug, %{scopes: ["write:conversations"]} when action == :read) - - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + plug(OAuthScopesPlug, %{scopes: ["write:conversations"]} when action != :index) @doc "GET /api/v1/conversations" def index(%{assigns: %{user: user}} = conn, params) do @@ -28,7 +26,7 @@ def index(%{assigns: %{user: user}} = conn, params) do end @doc "POST /api/v1/conversations/:id/read" - def read(%{assigns: %{user: user}} = conn, %{"id" => participation_id}) do + def mark_as_read(%{assigns: %{user: user}} = conn, %{"id" => participation_id}) do with %Participation{} = participation <- Repo.get_by(Participation, id: participation_id, user_id: user.id), {:ok, participation} <- Participation.mark_as_read(participation) do 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 84de79413..c4fa383f2 100644 --- a/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex @@ -21,8 +21,6 @@ defmodule Pleroma.Web.MastodonAPI.DomainBlockController do %{scopes: ["follow", "write:blocks"]} when action != :index ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "GET /api/v1/domain_blocks" def index(%{assigns: %{user: user}} = conn, _) do json(conn, Map.get(user, :domain_blocks, [])) diff --git a/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex b/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex index 7b0b937a2..7fd0562c9 100644 --- a/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/filter_controller.ex @@ -17,8 +17,6 @@ defmodule Pleroma.Web.MastodonAPI.FilterController do %{scopes: ["write:filters"]} when action not in @oauth_read_actions ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "GET /api/v1/filters" def index(%{assigns: %{user: user}} = conn, _) do filters = Filter.get_filters(user) 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 1ca86f63f..25f2269b9 100644 --- a/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex @@ -21,8 +21,6 @@ defmodule Pleroma.Web.MastodonAPI.FollowRequestController do %{scopes: ["follow", "write:follows"]} when action != :index ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "GET /api/v1/follow_requests" def index(%{assigns: %{user: followed}} = conn, _params) do follow_requests = User.get_follow_requests(followed) diff --git a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex index dac4daa7b..bfe856025 100644 --- a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex @@ -11,16 +11,16 @@ defmodule Pleroma.Web.MastodonAPI.ListController do plug(:list_by_id_and_user when action not in [:index, :create]) - plug(OAuthScopesPlug, %{scopes: ["read:lists"]} when action in [:index, :show, :list_accounts]) + @oauth_read_actions [:index, :show, :list_accounts] + + plug(OAuthScopesPlug, %{scopes: ["read:lists"]} when action in @oauth_read_actions) plug( OAuthScopesPlug, %{scopes: ["write:lists"]} - when action in [:create, :update, :delete, :add_to_list, :remove_from_list] + when action not in @oauth_read_actions ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - action_fallback(Pleroma.Web.MastodonAPI.FallbackController) # GET /api/v1/lists diff --git a/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex b/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex index 58e8a30c2..9f9d4574e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/marker_controller.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.MarkerController do ) plug(OAuthScopesPlug, %{scopes: ["write:statuses"]} when action == :upsert) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + action_fallback(Pleroma.Web.MastodonAPI.FallbackController) # GET /api/v1/markers 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 ac8c18f24..f0492b189 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -17,8 +17,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug when action in [:empty_array, :empty_object]) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - action_fallback(Pleroma.Web.MastodonAPI.FallbackController) def empty_array(conn, _) do diff --git a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex index 2b6f00952..e36751220 100644 --- a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex @@ -15,8 +15,6 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do plug(OAuthScopesPlug, %{scopes: ["write:media"]}) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "POST /api/v1/media" def create(%{assigns: %{user: user}} = conn, %{"file" => file} = data) do with {:ok, object} <- diff --git a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex index 7fb536b09..311405277 100644 --- a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex @@ -20,8 +20,6 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do plug(OAuthScopesPlug, %{scopes: ["write:notifications"]} when action not in @oauth_read_actions) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - # GET /api/v1/notifications def index(conn, %{"account_id" => account_id} = params) do case Pleroma.User.get_cached_by_id(account_id) do diff --git a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex index d9f894118..af9b66eff 100644 --- a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex @@ -22,8 +22,6 @@ defmodule Pleroma.Web.MastodonAPI.PollController do plug(OAuthScopesPlug, %{scopes: ["write:statuses"]} when action == :vote) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "GET /api/v1/polls/:id" def show(%{assigns: %{user: user}} = conn, %{"id" => id}) do with %Object{} = object <- Object.get_by_id_and_maybe_refetch(id, interval: 60), diff --git a/lib/pleroma/web/mastodon_api/controllers/report_controller.ex b/lib/pleroma/web/mastodon_api/controllers/report_controller.ex index f5782be13..9fbaa7bd1 100644 --- a/lib/pleroma/web/mastodon_api/controllers/report_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/report_controller.ex @@ -11,8 +11,6 @@ defmodule Pleroma.Web.MastodonAPI.ReportController do plug(OAuthScopesPlug, %{scopes: ["write:reports"]} when action == :create) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "POST /api/v1/reports" def create(%{assigns: %{user: user}} = conn, params) do with {:ok, activity} <- Pleroma.Web.CommonAPI.report(user, params) do 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 e1e6bd89b..899b78873 100644 --- a/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex @@ -18,8 +18,6 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityController do plug(OAuthScopesPlug, %{scopes: ["read:statuses"]} when action in @oauth_read_actions) plug(OAuthScopesPlug, %{scopes: ["write:statuses"]} when action not in @oauth_read_actions) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - action_fallback(Pleroma.Web.MastodonAPI.FallbackController) @doc "GET /api/v1/scheduled_statuses" diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex index c258742dd..b54c56967 100644 --- a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -21,8 +21,6 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do # Note: Mastodon doesn't allow unauthenticated access (requires read:accounts / read:search) plug(OAuthScopesPlug, %{scopes: ["read:search"], fallback: :proceed_unauthenticated}) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - plug(RateLimiter, [name: :search] when action in [:search, :search2, :account_search]) def account_search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index 397dd10e3..eade83aaf 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -77,7 +77,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do %{scopes: ["write:bookmarks"]} when action in [:bookmark, :unbookmark] ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action not in [:index, :show]) + plug(:skip_plug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :show]) @rate_limited_status_actions ~w(reblog unreblog favourite unfavourite create delete)a diff --git a/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex b/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex index 4647c1f96..d184ea1d0 100644 --- a/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex @@ -12,7 +12,7 @@ defmodule Pleroma.Web.MastodonAPI.SubscriptionController do action_fallback(:errors) plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["push"]}) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + plug(:restrict_push_enabled) # Creates PushSubscription diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index b3c58005e..891f924bc 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -26,7 +26,7 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do plug(OAuthScopesPlug, %{scopes: ["read:statuses"]} when action in [:home, :direct]) plug(OAuthScopesPlug, %{scopes: ["read:lists"]} when action == :list) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action != :public) + plug(:skip_plug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action == :public) plug(:put_view, Pleroma.Web.MastodonAPI.StatusView) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 1a09ac62a..4657a4383 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do use Pleroma.Web, :controller + alias Pleroma.ReverseProxy alias Pleroma.Web.MediaProxy diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index 60405fbff..d6ffdcbe4 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -17,6 +17,13 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do require Pleroma.Constants + plug(:skip_plug, OAuthScopesPlug when action == :confirmation_resend) + + plug( + :skip_plug, + Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action == :confirmation_resend + ) + plug( OAuthScopesPlug, %{scopes: ["follow", "write:follows"]} when action in [:subscribe, :unsubscribe] @@ -35,13 +42,8 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do plug(OAuthScopesPlug, %{scopes: ["read:favourites"]} when action == :favourites) - # An extra safety measure for possible actions not guarded by OAuth permissions specification - plug( - Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug - when action != :confirmation_resend - ) - plug(RateLimiter, [name: :account_confirmation_resend] when action == :confirmation_resend) + plug(:assign_account_by_id when action in [:favourites, :subscribe, :unsubscribe]) plug(:put_view, Pleroma.Web.MastodonAPI.AccountView) diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index 03e95e020..e01825b48 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -1,6 +1,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do use Pleroma.Web, :controller + alias Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug alias Pleroma.Plugs.OAuthScopesPlug require Logger @@ -11,17 +12,20 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do when action in [ :create, :delete, - :download_from, - :list_from, + :save_from, :import_from_fs, :update_file, :update_metadata ] ) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + plug( + :skip_plug, + [OAuthScopesPlug, ExpectPublicOrAuthenticatedCheckPlug] + when action in [:download_shared, :list_packs, :list_from] + ) - def emoji_dir_path do + defp emoji_dir_path do Path.join( Pleroma.Config.get!([:instance, :static_dir]), "emoji" @@ -212,13 +216,13 @@ defp shareable_packs_available(address) do end @doc """ - An admin endpoint to request downloading a pack named `pack_name` from the instance + An admin endpoint to request downloading and storing a pack named `pack_name` from the instance `instance_address`. If the requested instance's admin chose to share the pack, it will be downloaded from that instance, otherwise it will be downloaded from the fallback source, if there is one. """ - def download_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do + def save_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do address = String.trim(address) if shareable_packs_available(address) do diff --git a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex index d9c1c8636..d4e0d8b7c 100644 --- a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex @@ -12,8 +12,6 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do plug(OAuthScopesPlug, %{scopes: ["read:accounts"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action != :show) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - @doc "GET /api/v1/pleroma/mascot" def show(%{assigns: %{user: user}} = conn, _params) do json(conn, User.get_mascot(user)) diff --git a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex index fe1b97a20..7a65697e8 100644 --- a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex @@ -34,12 +34,14 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do plug( OAuthScopesPlug, - %{scopes: ["write:conversations"]} when action in [:update_conversation, :read_conversations] + %{scopes: ["write:conversations"]} + when action in [:update_conversation, :mark_conversations_as_read] ) - plug(OAuthScopesPlug, %{scopes: ["write:notifications"]} when action == :read_notification) - - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) + plug( + OAuthScopesPlug, + %{scopes: ["write:notifications"]} when action == :mark_notifications_as_read + ) def emoji_reactions_by(%{assigns: %{user: user}} = conn, %{"id" => activity_id} = params) do with %Activity{} = activity <- Activity.get_by_id_with_object(activity_id), @@ -167,7 +169,7 @@ def update_conversation( end end - def read_conversations(%{assigns: %{user: user}} = conn, _params) do + def mark_conversations_as_read(%{assigns: %{user: user}} = conn, _params) do with {:ok, _, participations} <- Participation.mark_all_as_read(user) do conn |> add_link_headers(participations) @@ -176,7 +178,7 @@ def read_conversations(%{assigns: %{user: user}} = conn, _params) do end end - def read_notification(%{assigns: %{user: user}} = conn, %{"id" => notification_id}) do + def mark_notifications_as_read(%{assigns: %{user: user}} = conn, %{"id" => notification_id}) do with {:ok, notification} <- Notification.read_one(user, notification_id) do conn |> put_view(NotificationView) @@ -189,7 +191,7 @@ def read_notification(%{assigns: %{user: user}} = conn, %{"id" => notification_i end end - def read_notification(%{assigns: %{user: user}} = conn, %{"max_id" => max_id} = params) do + def mark_notifications_as_read(%{assigns: %{user: user}} = conn, %{"max_id" => max_id} = params) do with notifications <- Notification.set_read_up_to(user, max_id) do notifications = Enum.take(notifications, 80) diff --git a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex index 4463ec477..c81e8535e 100644 --- a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex @@ -16,8 +16,6 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleController do plug(OAuthScopesPlug, %{scopes: ["read"]} when action == :user_scrobbles) plug(OAuthScopesPlug, %{scopes: ["write"]} when action != :user_scrobbles) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - def new_scrobble(%{assigns: %{user: user}} = conn, %{"title" => _} = params) do params = if !params["length"] do diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 153802a43..04c1c5941 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -16,6 +16,14 @@ defmodule Pleroma.Web.Router do plug(Pleroma.Plugs.UserEnabledPlug) end + pipeline :expect_authentication do + plug(Pleroma.Plugs.ExpectAuthenticatedCheckPlug) + end + + pipeline :expect_public_instance_or_authentication do + plug(Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug) + end + pipeline :authenticate do plug(Pleroma.Plugs.OAuthPlug) plug(Pleroma.Plugs.BasicAuthDecoderPlug) @@ -39,20 +47,22 @@ defmodule Pleroma.Web.Router do end pipeline :api do + plug(:expect_public_instance_or_authentication) plug(:base_api) plug(:after_auth) plug(Pleroma.Plugs.IdempotencyPlug) end pipeline :authenticated_api do + plug(:expect_authentication) plug(:base_api) - plug(Pleroma.Plugs.AuthExpectedPlug) plug(:after_auth) plug(Pleroma.Plugs.EnsureAuthenticatedPlug) plug(Pleroma.Plugs.IdempotencyPlug) end pipeline :admin_api do + plug(:expect_authentication) plug(:base_api) plug(Pleroma.Plugs.AdminSecretAuthenticationPlug) plug(:after_auth) @@ -200,24 +210,28 @@ defmodule Pleroma.Web.Router do end scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do + # Modifying packs scope "/packs" do - # Modifying packs pipe_through(:admin_api) post("/import_from_fs", EmojiAPIController, :import_from_fs) - post("/:pack_name/update_file", EmojiAPIController, :update_file) post("/:pack_name/update_metadata", EmojiAPIController, :update_metadata) put("/:name", EmojiAPIController, :create) delete("/:name", EmojiAPIController, :delete) - post("/download_from", EmojiAPIController, :download_from) - post("/list_from", EmojiAPIController, :list_from) + + # Note: /download_from downloads and saves to instance, not to requester + post("/download_from", EmojiAPIController, :save_from) end + # Pack info / downloading scope "/packs" do - # Pack info / downloading get("/", EmojiAPIController, :list_packs) get("/:name/download_shared/", EmojiAPIController, :download_shared) + get("/list_from", EmojiAPIController, :list_from) + + # Deprecated: POST /api/pleroma/emoji/packs/list_from (use GET instead) + post("/list_from", EmojiAPIController, :list_from) end end @@ -277,7 +291,7 @@ defmodule Pleroma.Web.Router do get("/conversations/:id/statuses", PleromaAPIController, :conversation_statuses) get("/conversations/:id", PleromaAPIController, :conversation) - post("/conversations/read", PleromaAPIController, :read_conversations) + post("/conversations/read", PleromaAPIController, :mark_conversations_as_read) end scope [] do @@ -286,7 +300,7 @@ defmodule Pleroma.Web.Router do patch("/conversations/:id", PleromaAPIController, :update_conversation) put("/statuses/:id/reactions/:emoji", PleromaAPIController, :react_with_emoji) delete("/statuses/:id/reactions/:emoji", PleromaAPIController, :unreact_with_emoji) - post("/notifications/read", PleromaAPIController, :read_notification) + post("/notifications/read", PleromaAPIController, :mark_notifications_as_read) patch("/accounts/update_avatar", AccountController, :update_avatar) patch("/accounts/update_banner", AccountController, :update_banner) @@ -322,53 +336,81 @@ defmodule Pleroma.Web.Router do pipe_through(:authenticated_api) get("/accounts/verify_credentials", AccountController, :verify_credentials) + patch("/accounts/update_credentials", AccountController, :update_credentials) get("/accounts/relationships", AccountController, :relationships) - get("/accounts/:id/lists", AccountController, :lists) get("/accounts/:id/identity_proofs", AccountController, :identity_proofs) - - get("/follow_requests", FollowRequestController, :index) + get("/endorsements", AccountController, :endorsements) get("/blocks", AccountController, :blocks) get("/mutes", AccountController, :mutes) - get("/timelines/home", TimelineController, :home) - get("/timelines/direct", TimelineController, :direct) + post("/follows", AccountController, :follow_by_uri) + post("/accounts/:id/follow", AccountController, :follow) + post("/accounts/:id/unfollow", AccountController, :unfollow) + post("/accounts/:id/block", AccountController, :block) + post("/accounts/:id/unblock", AccountController, :unblock) + post("/accounts/:id/mute", AccountController, :mute) + post("/accounts/:id/unmute", AccountController, :unmute) - get("/favourites", StatusController, :favourites) - get("/bookmarks", StatusController, :bookmarks) + get("/conversations", ConversationController, :index) + post("/conversations/:id/read", ConversationController, :mark_as_read) + + get("/domain_blocks", DomainBlockController, :index) + post("/domain_blocks", DomainBlockController, :create) + delete("/domain_blocks", DomainBlockController, :delete) + + get("/filters", FilterController, :index) + + post("/filters", FilterController, :create) + get("/filters/:id", FilterController, :show) + put("/filters/:id", FilterController, :update) + delete("/filters/:id", FilterController, :delete) + + get("/follow_requests", FollowRequestController, :index) + post("/follow_requests/:id/authorize", FollowRequestController, :authorize) + post("/follow_requests/:id/reject", FollowRequestController, :reject) + + get("/lists", ListController, :index) + get("/lists/:id", ListController, :show) + get("/lists/:id/accounts", ListController, :list_accounts) + + delete("/lists/:id", ListController, :delete) + post("/lists", ListController, :create) + put("/lists/:id", ListController, :update) + post("/lists/:id/accounts", ListController, :add_to_list) + delete("/lists/:id/accounts", ListController, :remove_from_list) + + get("/markers", MarkerController, :index) + post("/markers", MarkerController, :upsert) + + post("/media", MediaController, :create) + put("/media/:id", MediaController, :update) get("/notifications", NotificationController, :index) get("/notifications/:id", NotificationController, :show) + post("/notifications/:id/dismiss", NotificationController, :dismiss) post("/notifications/clear", NotificationController, :clear) delete("/notifications/destroy_multiple", NotificationController, :destroy_multiple) # Deprecated: was removed in Mastodon v3, use `/notifications/:id/dismiss` instead post("/notifications/dismiss", NotificationController, :dismiss) + post("/polls/:id/votes", PollController, :vote) + + post("/reports", ReportController, :create) + get("/scheduled_statuses", ScheduledActivityController, :index) get("/scheduled_statuses/:id", ScheduledActivityController, :show) - get("/lists", ListController, :index) - get("/lists/:id", ListController, :show) - get("/lists/:id/accounts", ListController, :list_accounts) + put("/scheduled_statuses/:id", ScheduledActivityController, :update) + delete("/scheduled_statuses/:id", ScheduledActivityController, :delete) - get("/domain_blocks", DomainBlockController, :index) - - get("/filters", FilterController, :index) - - get("/suggestions", SuggestionController, :index) - - get("/conversations", ConversationController, :index) - post("/conversations/:id/read", ConversationController, :read) - - get("/endorsements", AccountController, :endorsements) - - patch("/accounts/update_credentials", AccountController, :update_credentials) + get("/favourites", StatusController, :favourites) + get("/bookmarks", StatusController, :bookmarks) post("/statuses", StatusController, :create) delete("/statuses/:id", StatusController, :delete) - post("/statuses/:id/reblog", StatusController, :reblog) post("/statuses/:id/unreblog", StatusController, :unreblog) post("/statuses/:id/favourite", StatusController, :favourite) @@ -380,49 +422,15 @@ defmodule Pleroma.Web.Router do post("/statuses/:id/mute", StatusController, :mute_conversation) post("/statuses/:id/unmute", StatusController, :unmute_conversation) - put("/scheduled_statuses/:id", ScheduledActivityController, :update) - delete("/scheduled_statuses/:id", ScheduledActivityController, :delete) - - post("/polls/:id/votes", PollController, :vote) - - post("/media", MediaController, :create) - put("/media/:id", MediaController, :update) - - delete("/lists/:id", ListController, :delete) - post("/lists", ListController, :create) - put("/lists/:id", ListController, :update) - - post("/lists/:id/accounts", ListController, :add_to_list) - delete("/lists/:id/accounts", ListController, :remove_from_list) - - post("/filters", FilterController, :create) - get("/filters/:id", FilterController, :show) - put("/filters/:id", FilterController, :update) - delete("/filters/:id", FilterController, :delete) - - post("/reports", ReportController, :create) - - post("/follows", AccountController, :follows) - post("/accounts/:id/follow", AccountController, :follow) - post("/accounts/:id/unfollow", AccountController, :unfollow) - post("/accounts/:id/block", AccountController, :block) - post("/accounts/:id/unblock", AccountController, :unblock) - post("/accounts/:id/mute", AccountController, :mute) - post("/accounts/:id/unmute", AccountController, :unmute) - - post("/follow_requests/:id/authorize", FollowRequestController, :authorize) - post("/follow_requests/:id/reject", FollowRequestController, :reject) - - post("/domain_blocks", DomainBlockController, :create) - delete("/domain_blocks", DomainBlockController, :delete) - post("/push/subscription", SubscriptionController, :create) get("/push/subscription", SubscriptionController, :get) put("/push/subscription", SubscriptionController, :update) delete("/push/subscription", SubscriptionController, :delete) - get("/markers", MarkerController, :index) - post("/markers", MarkerController, :upsert) + get("/suggestions", SuggestionController, :index) + + get("/timelines/home", TimelineController, :home) + get("/timelines/direct", TimelineController, :direct) end scope "/api/web", Pleroma.Web do @@ -507,7 +515,11 @@ defmodule Pleroma.Web.Router do get("/oauth_tokens", TwitterAPI.Controller, :oauth_tokens) delete("/oauth_tokens/:id", TwitterAPI.Controller, :revoke_token) - post("/qvitter/statuses/notifications/read", TwitterAPI.Controller, :notifications_read) + post( + "/qvitter/statuses/notifications/read", + TwitterAPI.Controller, + :mark_notifications_as_read + ) end pipeline :ostatus do diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 537f9f778..9a4c39fa9 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -25,13 +25,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do when action == :follow_import ) - # Note: follower can submit the form (with password auth) not being signed in (having no token) - plug( - OAuthScopesPlug, - %{fallback: :proceed_unauthenticated, scopes: ["follow", "write:follows"]} - when action == :do_remote_follow - ) - plug(OAuthScopesPlug, %{scopes: ["follow", "write:blocks"]} when action == :blocks_import) plug( diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 31adc2817..55228616a 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -13,12 +13,13 @@ defmodule Pleroma.Web.TwitterAPI.Controller do require Logger - plug(OAuthScopesPlug, %{scopes: ["write:notifications"]} when action == :notifications_read) + plug( + OAuthScopesPlug, + %{scopes: ["write:notifications"]} when action == :mark_notifications_as_read + ) plug(:skip_plug, OAuthScopesPlug when action in [:oauth_tokens, :revoke_token]) - plug(Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug) - action_fallback(:errors) def confirm_email(conn, %{"user_id" => uid, "token" => token}) do @@ -64,7 +65,10 @@ defp json_reply(conn, status, json) do |> send_resp(status, json) end - def notifications_read(%{assigns: %{user: user}} = conn, %{"latest_id" => latest_id} = params) do + def mark_notifications_as_read( + %{assigns: %{user: user}} = conn, + %{"latest_id" => latest_id} = params + ) do Notification.set_read_up_to(user, latest_id) notifications = Notification.for_user(user, params) @@ -75,7 +79,7 @@ def notifications_read(%{assigns: %{user: user}} = conn, %{"latest_id" => latest |> render("index.json", %{notifications: notifications, for: user}) end - def notifications_read(%{assigns: %{user: _user}} = conn, _) do + def mark_notifications_as_read(%{assigns: %{user: _user}} = conn, _) do bad_request_reply(conn, "You need to specify latest_id") end diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web/web.ex index bf48ce26c..ec04c05f0 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web/web.ex @@ -2,6 +2,11 @@ # Copyright © 2017-2020 Pleroma Authors # 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, @@ -20,44 +25,79 @@ 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 + def controller do quote do use Phoenix.Controller, namespace: Pleroma.Web import Plug.Conn + import Pleroma.Web.Gettext import Pleroma.Web.Router.Helpers import Pleroma.Web.TranslationHelpers - alias Pleroma.Plugs.PlugHelper - plug(:set_put_layout) defp set_put_layout(conn, _) do put_layout(conn, Pleroma.Config.get(:app_layout, "app.html")) end - # Marks a plug intentionally skipped and blocks its execution if it's present in plugs chain - defp skip_plug(conn, plug_module) do - try do - plug_module.skip_plug(conn) - rescue - UndefinedFunctionError -> - raise "#{plug_module} is not skippable. Append `use Pleroma.Web, :plug` to its code." - end + # Marks plugs intentionally skipped and blocks their execution if present in plugs chain + defp skip_plug(conn, plug_modules) do + plug_modules + |> List.wrap() + |> Enum.reduce( + conn, + fn plug_module, conn -> + try do + plug_module.skip_plug(conn) + rescue + UndefinedFunctionError -> + raise "`#{plug_module}` is not skippable. Append `use Pleroma.Web, :plug` to its code." + end + end + ) end # Executed just before actual controller action, invokes before-action hooks (callbacks) defp action(conn, params) do - with %Plug.Conn{halted: false} <- maybe_halt_on_missing_oauth_scopes_check(conn) do + with %Plug.Conn{halted: false} <- maybe_perform_public_or_authenticated_check(conn), + %Plug.Conn{halted: false} <- maybe_perform_authenticated_check(conn), + %Plug.Conn{halted: false} <- maybe_halt_on_missing_oauth_scopes_check(conn) do super(conn, params) end end + # Ensures instance is public -or- user is authenticated if such check was scheduled + defp maybe_perform_public_or_authenticated_check(conn) do + if PlugHelper.plug_called?(conn, ExpectPublicOrAuthenticatedCheckPlug) do + EnsurePublicOrAuthenticatedPlug.call(conn, %{}) + else + conn + end + end + + # Ensures user is authenticated if such check was scheduled + # Note: runs prior to action even if it was already executed earlier in plug chain + # (since OAuthScopesPlug has option of proceeding unauthenticated) + defp maybe_perform_authenticated_check(conn) do + if PlugHelper.plug_called?(conn, ExpectAuthenticatedCheckPlug) do + EnsureAuthenticatedPlug.call(conn, %{}) + else + conn + end + end + # Halts if authenticated API action neither performs nor explicitly skips OAuth scopes check defp maybe_halt_on_missing_oauth_scopes_check(conn) do - if Pleroma.Plugs.AuthExpectedPlug.auth_expected?(conn) && - not PlugHelper.plug_called_or_skipped?(conn, Pleroma.Plugs.OAuthScopesPlug) do + if PlugHelper.plug_called?(conn, ExpectAuthenticatedCheckPlug) and + not PlugHelper.plug_called_or_skipped?(conn, OAuthScopesPlug) do conn |> render_error( :forbidden, @@ -132,7 +172,8 @@ def channel do def plug do quote do - alias Pleroma.Plugs.PlugHelper + @behaviour Pleroma.Web.Plug + @behaviour Plug @doc """ Marks a plug intentionally skipped and blocks its execution if it's present in plugs chain. @@ -146,14 +187,22 @@ def skip_plug(conn) do end @impl Plug - @doc "If marked as skipped, returns `conn`, and calls `perform/2` otherwise." + @doc """ + If marked as skipped, returns `conn`, otherwise calls `perform/2`. + Note: multiple invocations of the same plug (with different or same options) are allowed. + """ def call(%Plug.Conn{} = conn, options) do if PlugHelper.plug_skipped?(conn, __MODULE__) do conn else - conn - |> PlugHelper.append_to_private_list(PlugHelper.called_plugs_list_id(), __MODULE__) - |> perform(options) + conn = + PlugHelper.append_to_private_list( + conn, + PlugHelper.called_plugs_list_id(), + __MODULE__ + ) + + apply(__MODULE__, :perform, [conn, options]) end end end diff --git a/test/plugs/ensure_authenticated_plug_test.exs b/test/plugs/ensure_authenticated_plug_test.exs index 7f3559b83..689fe757f 100644 --- a/test/plugs/ensure_authenticated_plug_test.exs +++ b/test/plugs/ensure_authenticated_plug_test.exs @@ -20,7 +20,7 @@ test "it continues if a user is assigned", %{conn: conn} do conn = assign(conn, :user, %User{}) ret_conn = EnsureAuthenticatedPlug.call(conn, %{}) - assert ret_conn == conn + refute ret_conn.halted end end @@ -34,20 +34,22 @@ test "it continues if a user is assigned", %{conn: conn} do test "it continues if a user is assigned", %{conn: conn, true_fn: true_fn, false_fn: false_fn} do conn = assign(conn, :user, %User{}) - assert EnsureAuthenticatedPlug.call(conn, if_func: true_fn) == conn - assert EnsureAuthenticatedPlug.call(conn, if_func: false_fn) == conn - assert EnsureAuthenticatedPlug.call(conn, unless_func: true_fn) == conn - assert EnsureAuthenticatedPlug.call(conn, unless_func: false_fn) == conn + refute EnsureAuthenticatedPlug.call(conn, if_func: true_fn).halted + refute EnsureAuthenticatedPlug.call(conn, if_func: false_fn).halted + refute EnsureAuthenticatedPlug.call(conn, unless_func: true_fn).halted + refute EnsureAuthenticatedPlug.call(conn, unless_func: false_fn).halted end test "it continues if a user is NOT assigned but :if_func evaluates to `false`", %{conn: conn, false_fn: false_fn} do - assert EnsureAuthenticatedPlug.call(conn, if_func: false_fn) == conn + ret_conn = EnsureAuthenticatedPlug.call(conn, if_func: false_fn) + refute ret_conn.halted end test "it continues if a user is NOT assigned but :unless_func evaluates to `true`", %{conn: conn, true_fn: true_fn} do - assert EnsureAuthenticatedPlug.call(conn, unless_func: true_fn) == conn + ret_conn = EnsureAuthenticatedPlug.call(conn, unless_func: true_fn) + refute ret_conn.halted end test "it halts if a user is NOT assigned and :if_func evaluates to `true`", diff --git a/test/plugs/ensure_public_or_authenticated_plug_test.exs b/test/plugs/ensure_public_or_authenticated_plug_test.exs index 411252274..fc2934369 100644 --- a/test/plugs/ensure_public_or_authenticated_plug_test.exs +++ b/test/plugs/ensure_public_or_authenticated_plug_test.exs @@ -29,7 +29,7 @@ test "it continues if public", %{conn: conn} do conn |> EnsurePublicOrAuthenticatedPlug.call(%{}) - assert ret_conn == conn + refute ret_conn.halted end test "it continues if a user is assigned, even if not public", %{conn: conn} do @@ -43,6 +43,6 @@ test "it continues if a user is assigned, even if not public", %{conn: conn} do conn |> EnsurePublicOrAuthenticatedPlug.call(%{}) - assert ret_conn == conn + refute ret_conn.halted end end diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index edbc94227..884de7b4d 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -5,17 +5,12 @@ defmodule Pleroma.Plugs.OAuthScopesPlugTest do use Pleroma.Web.ConnCase, async: true - alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Repo import Mock import Pleroma.Factory - setup_with_mocks([{EnsurePublicOrAuthenticatedPlug, [], [call: fn conn, _ -> conn end]}]) do - :ok - end - test "is not performed if marked as skipped", %{conn: conn} do with_mock OAuthScopesPlug, [:passthrough], perform: &passthrough([&1, &2]) do conn = @@ -60,7 +55,7 @@ test "if `token.scopes` fulfills specified 'all of' conditions, " <> describe "with `fallback: :proceed_unauthenticated` option, " do test "if `token.scopes` doesn't fulfill specified conditions, " <> - "clears :user and :token assigns and calls EnsurePublicOrAuthenticatedPlug", + "clears :user and :token assigns", %{conn: conn} do user = insert(:user) token1 = insert(:oauth_token, scopes: ["read", "write"], user: user) @@ -79,35 +74,6 @@ test "if `token.scopes` doesn't fulfill specified conditions, " <> refute ret_conn.halted refute ret_conn.assigns[:user] refute ret_conn.assigns[:token] - - assert called(EnsurePublicOrAuthenticatedPlug.call(ret_conn, :_)) - end - end - - test "with :skip_instance_privacy_check option, " <> - "if `token.scopes` doesn't fulfill specified conditions, " <> - "clears :user and :token assigns and does NOT call EnsurePublicOrAuthenticatedPlug", - %{conn: conn} do - user = insert(:user) - token1 = insert(:oauth_token, scopes: ["read:statuses", "write"], user: user) - - for token <- [token1, nil], op <- [:|, :&] do - ret_conn = - conn - |> assign(:user, user) - |> assign(:token, token) - |> OAuthScopesPlug.call(%{ - scopes: ["read"], - op: op, - fallback: :proceed_unauthenticated, - skip_instance_privacy_check: true - }) - - refute ret_conn.halted - refute ret_conn.assigns[:user] - refute ret_conn.assigns[:token] - - refute called(EnsurePublicOrAuthenticatedPlug.call(ret_conn, :_)) end end end diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index fbacb3993..eca526604 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -766,7 +766,7 @@ test "it requires authentication if instance is NOT federating", %{ end describe "POST /users/:nickname/outbox" do - test "it rejects posts from other users / unauuthenticated users", %{conn: conn} do + test "it rejects posts from other users / unauthenticated users", %{conn: conn} do data = File.read!("test/fixtures/activitypub-client-post-activity.json") |> Poison.decode!() user = insert(:user) other_user = insert(:user) diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 435fb6592..4246eb400 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -38,8 +38,7 @@ test "shared & non-shared pack information in list_packs is ok" do end test "listing remote packs" do - admin = insert(:user, is_admin: true) - %{conn: conn} = oauth_access(["admin:write"], user: admin) + conn = build_conn() resp = build_conn() @@ -76,7 +75,7 @@ test "downloading a shared pack from download_shared" do assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) end - test "downloading shared & unshared packs from another instance via download_from, deleting them" do + test "downloading shared & unshared packs from another instance, deleting them" do on_exit(fn -> File.rm_rf!("#{@emoji_dir_path}/test_pack2") File.rm_rf!("#{@emoji_dir_path}/test_pack_nonshared2") @@ -136,7 +135,7 @@ test "downloading shared & unshared packs from another instance via download_fro |> post( emoji_api_path( conn, - :download_from + :save_from ), %{ instance_address: "https://old-instance", @@ -152,7 +151,7 @@ test "downloading shared & unshared packs from another instance via download_fro |> post( emoji_api_path( conn, - :download_from + :save_from ), %{ instance_address: "https://example.com", @@ -179,7 +178,7 @@ test "downloading shared & unshared packs from another instance via download_fro |> post( emoji_api_path( conn, - :download_from + :save_from ), %{ instance_address: "https://example.com", diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index ab0a2c3df..464d0ea2e 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -19,13 +19,9 @@ test "without valid credentials", %{conn: conn} do end test "with credentials, without any params" do - %{user: current_user, conn: conn} = - oauth_access(["read:notifications", "write:notifications"]) + %{conn: conn} = oauth_access(["write:notifications"]) - conn = - conn - |> assign(:user, current_user) - |> post("/api/qvitter/statuses/notifications/read") + conn = post(conn, "/api/qvitter/statuses/notifications/read") assert json_response(conn, 400) == %{ "error" => "You need to specify latest_id", From f0238d010a61ab935b61beebd5674593a75f17dc Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 21 Apr 2020 23:30:24 +0400 Subject: [PATCH 074/137] Improve OpenAPI schema - Removes unneeded wrapping in examples - Adds `:format` attributes --- lib/pleroma/web/api_spec/schemas/account.ex | 152 +++++++------ .../schemas/account_create_request.ex | 6 +- .../schemas/account_create_response.ex | 12 +- .../web/api_spec/schemas/account_emoji.ex | 18 +- .../web/api_spec/schemas/account_field.ex | 14 +- .../schemas/account_field_attribute.ex | 6 +- .../schemas/account_follows_request.ex | 2 +- .../api_spec/schemas/account_relationship.ex | 26 +-- .../api_spec/schemas/app_create_request.ex | 6 +- .../api_spec/schemas/app_create_response.ex | 4 +- lib/pleroma/web/api_spec/schemas/list.ex | 6 +- lib/pleroma/web/api_spec/schemas/status.ex | 206 +++++++++--------- 12 files changed, 225 insertions(+), 233 deletions(-) diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex index beb093182..3634a7c76 100644 --- a/lib/pleroma/web/api_spec/schemas/account.ex +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -17,8 +17,8 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do type: :object, properties: %{ acct: %Schema{type: :string}, - avatar_static: %Schema{type: :string}, - avatar: %Schema{type: :string}, + avatar_static: %Schema{type: :string, format: :uri}, + avatar: %Schema{type: :string, format: :uri}, bot: %Schema{type: :boolean}, created_at: %Schema{type: :string, format: "date-time"}, display_name: %Schema{type: :string}, @@ -27,13 +27,13 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do follow_requests_count: %Schema{type: :integer}, followers_count: %Schema{type: :integer}, following_count: %Schema{type: :integer}, - header_static: %Schema{type: :string}, - header: %Schema{type: :string}, + header_static: %Schema{type: :string, format: :uri}, + header: %Schema{type: :string, format: :uri}, id: %Schema{type: :string}, locked: %Schema{type: :boolean}, - note: %Schema{type: :string}, + note: %Schema{type: :string, format: :html}, statuses_count: %Schema{type: :integer}, - url: %Schema{type: :string}, + url: %Schema{type: :string, format: :uri}, username: %Schema{type: :string}, pleroma: %Schema{ type: :object, @@ -104,80 +104,78 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do } }, example: %{ - "JSON" => %{ - "acct" => "foobar", - "avatar" => "https://mypleroma.com/images/avi.png", - "avatar_static" => "https://mypleroma.com/images/avi.png", - "bot" => false, - "created_at" => "2020-03-24T13:05:58.000Z", - "display_name" => "foobar", - "emojis" => [], + "acct" => "foobar", + "avatar" => "https://mypleroma.com/images/avi.png", + "avatar_static" => "https://mypleroma.com/images/avi.png", + "bot" => false, + "created_at" => "2020-03-24T13:05:58.000Z", + "display_name" => "foobar", + "emojis" => [], + "fields" => [], + "follow_requests_count" => 0, + "followers_count" => 0, + "following_count" => 1, + "header" => "https://mypleroma.com/images/banner.png", + "header_static" => "https://mypleroma.com/images/banner.png", + "id" => "9tKi3esbG7OQgZ2920", + "locked" => false, + "note" => "cofe", + "pleroma" => %{ + "allow_following_move" => true, + "background_image" => nil, + "confirmation_pending" => true, + "hide_favorites" => true, + "hide_followers" => false, + "hide_followers_count" => false, + "hide_follows" => false, + "hide_follows_count" => false, + "is_admin" => false, + "is_moderator" => false, + "skip_thread_containment" => false, + "chat_token" => + "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAASOXRLaTNlc2JHN09RZ1oyOTIwZAAGc2lnbmVkbgYARNplS3EB.Mb_Iaqew2bN1I1o79B_iP7encmVCpTKC4OtHZRxdjKc", + "unread_conversation_count" => 0, + "tags" => [], + "notification_settings" => %{ + "followers" => true, + "follows" => true, + "non_followers" => true, + "non_follows" => true, + "privacy_option" => false + }, + "relationship" => %{ + "blocked_by" => false, + "blocking" => false, + "domain_blocking" => false, + "endorsed" => false, + "followed_by" => false, + "following" => false, + "id" => "9tKi3esbG7OQgZ2920", + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "showing_reblogs" => true, + "subscribing" => false + }, + "settings_store" => %{ + "pleroma-fe" => %{} + } + }, + "source" => %{ "fields" => [], - "follow_requests_count" => 0, - "followers_count" => 0, - "following_count" => 1, - "header" => "https://mypleroma.com/images/banner.png", - "header_static" => "https://mypleroma.com/images/banner.png", - "id" => "9tKi3esbG7OQgZ2920", - "locked" => false, - "note" => "cofe", + "note" => "foobar", "pleroma" => %{ - "allow_following_move" => true, - "background_image" => nil, - "confirmation_pending" => true, - "hide_favorites" => true, - "hide_followers" => false, - "hide_followers_count" => false, - "hide_follows" => false, - "hide_follows_count" => false, - "is_admin" => false, - "is_moderator" => false, - "skip_thread_containment" => false, - "chat_token" => - "SFMyNTY.g3QAAAACZAAEZGF0YW0AAAASOXRLaTNlc2JHN09RZ1oyOTIwZAAGc2lnbmVkbgYARNplS3EB.Mb_Iaqew2bN1I1o79B_iP7encmVCpTKC4OtHZRxdjKc", - "unread_conversation_count" => 0, - "tags" => [], - "notification_settings" => %{ - "followers" => true, - "follows" => true, - "non_followers" => true, - "non_follows" => true, - "privacy_option" => false - }, - "relationship" => %{ - "blocked_by" => false, - "blocking" => false, - "domain_blocking" => false, - "endorsed" => false, - "followed_by" => false, - "following" => false, - "id" => "9tKi3esbG7OQgZ2920", - "muting" => false, - "muting_notifications" => false, - "requested" => false, - "showing_reblogs" => true, - "subscribing" => false - }, - "settings_store" => %{ - "pleroma-fe" => %{} - } + "actor_type" => "Person", + "discoverable" => false, + "no_rich_text" => false, + "show_role" => true }, - "source" => %{ - "fields" => [], - "note" => "foobar", - "pleroma" => %{ - "actor_type" => "Person", - "discoverable" => false, - "no_rich_text" => false, - "show_role" => true - }, - "privacy" => "public", - "sensitive" => false - }, - "statuses_count" => 0, - "url" => "https://mypleroma.com/users/foobar", - "username" => "foobar" - } + "privacy" => "public", + "sensitive" => false + }, + "statuses_count" => 0, + "url" => "https://mypleroma.com/users/foobar", + "username" => "foobar" } }) end diff --git a/lib/pleroma/web/api_spec/schemas/account_create_request.ex b/lib/pleroma/web/api_spec/schemas/account_create_request.ex index 398e2d613..49fa12159 100644 --- a/lib/pleroma/web/api_spec/schemas/account_create_request.ex +++ b/lib/pleroma/web/api_spec/schemas/account_create_request.ex @@ -23,7 +23,11 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest do "The email address to be used for login. Required when `account_activation_required` is enabled.", format: :email }, - password: %Schema{type: :string, description: "The password to be used for login"}, + password: %Schema{ + type: :string, + description: "The password to be used for login", + format: :password + }, agreement: %Schema{ type: :boolean, description: diff --git a/lib/pleroma/web/api_spec/schemas/account_create_response.ex b/lib/pleroma/web/api_spec/schemas/account_create_response.ex index f41a034c0..2237351a2 100644 --- a/lib/pleroma/web/api_spec/schemas/account_create_response.ex +++ b/lib/pleroma/web/api_spec/schemas/account_create_response.ex @@ -15,15 +15,13 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse do token_type: %Schema{type: :string}, access_token: %Schema{type: :string}, scope: %Schema{type: :array, items: %Schema{type: :string}}, - created_at: %Schema{type: :integer} + created_at: %Schema{type: :integer, format: :"date-time"} }, example: %{ - "JSON" => %{ - "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk", - "created_at" => 1_585_918_714, - "scope" => ["read", "write", "follow", "push"], - "token_type" => "Bearer" - } + "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk", + "created_at" => 1_585_918_714, + "scope" => ["read", "write", "follow", "push"], + "token_type" => "Bearer" } }) end diff --git a/lib/pleroma/web/api_spec/schemas/account_emoji.ex b/lib/pleroma/web/api_spec/schemas/account_emoji.ex index 403b13b15..6c1d4d95c 100644 --- a/lib/pleroma/web/api_spec/schemas/account_emoji.ex +++ b/lib/pleroma/web/api_spec/schemas/account_emoji.ex @@ -13,19 +13,17 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountEmoji do type: :object, properties: %{ shortcode: %Schema{type: :string}, - url: %Schema{type: :string}, - static_url: %Schema{type: :string}, + url: %Schema{type: :string, format: :uri}, + static_url: %Schema{type: :string, format: :uri}, visible_in_picker: %Schema{type: :boolean} }, example: %{ - "JSON" => %{ - "shortcode" => "fatyoshi", - "url" => - "https://files.mastodon.social/custom_emojis/images/000/023/920/original/e57ecb623faa0dc9.png", - "static_url" => - "https://files.mastodon.social/custom_emojis/images/000/023/920/static/e57ecb623faa0dc9.png", - "visible_in_picker" => true - } + "shortcode" => "fatyoshi", + "url" => + "https://files.mastodon.social/custom_emojis/images/000/023/920/original/e57ecb623faa0dc9.png", + "static_url" => + "https://files.mastodon.social/custom_emojis/images/000/023/920/static/e57ecb623faa0dc9.png", + "visible_in_picker" => true } }) end diff --git a/lib/pleroma/web/api_spec/schemas/account_field.ex b/lib/pleroma/web/api_spec/schemas/account_field.ex index 8906d812d..fa97073a0 100644 --- a/lib/pleroma/web/api_spec/schemas/account_field.ex +++ b/lib/pleroma/web/api_spec/schemas/account_field.ex @@ -13,16 +13,14 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountField do type: :object, properties: %{ name: %Schema{type: :string}, - value: %Schema{type: :string}, - verified_at: %Schema{type: :string, format: "date-time", nullable: true} + value: %Schema{type: :string, format: :html}, + verified_at: %Schema{type: :string, format: :"date-time", nullable: true} }, example: %{ - "JSON" => %{ - "name" => "Website", - "value" => - "https://pleroma.com", - "verified_at" => "2019-08-29T04:14:55.571+00:00" - } + "name" => "Website", + "value" => + "https://pleroma.com", + "verified_at" => "2019-08-29T04:14:55.571+00:00" } }) end diff --git a/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex b/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex index fbbdf95f5..89e483655 100644 --- a/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex +++ b/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex @@ -17,10 +17,8 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountAttributeField do }, required: [:name, :value], example: %{ - "JSON" => %{ - "name" => "Website", - "value" => "https://pleroma.com" - } + "name" => "Website", + "value" => "https://pleroma.com" } }) end diff --git a/lib/pleroma/web/api_spec/schemas/account_follows_request.ex b/lib/pleroma/web/api_spec/schemas/account_follows_request.ex index 4fbe615d6..19dce0cb2 100644 --- a/lib/pleroma/web/api_spec/schemas/account_follows_request.ex +++ b/lib/pleroma/web/api_spec/schemas/account_follows_request.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest do description: "POST body for muting an account", type: :object, properties: %{ - uri: %Schema{type: :string} + uri: %Schema{type: :string, format: :uri} }, required: [:uri] }) diff --git a/lib/pleroma/web/api_spec/schemas/account_relationship.ex b/lib/pleroma/web/api_spec/schemas/account_relationship.ex index 7db3b49bb..f2bd37d39 100644 --- a/lib/pleroma/web/api_spec/schemas/account_relationship.ex +++ b/lib/pleroma/web/api_spec/schemas/account_relationship.ex @@ -26,20 +26,18 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationship do subscribing: %Schema{type: :boolean} }, example: %{ - "JSON" => %{ - "blocked_by" => false, - "blocking" => false, - "domain_blocking" => false, - "endorsed" => false, - "followed_by" => false, - "following" => false, - "id" => "9tKi3esbG7OQgZ2920", - "muting" => false, - "muting_notifications" => false, - "requested" => false, - "showing_reblogs" => true, - "subscribing" => false - } + "blocked_by" => false, + "blocking" => false, + "domain_blocking" => false, + "endorsed" => false, + "followed_by" => false, + "following" => false, + "id" => "9tKi3esbG7OQgZ2920", + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "showing_reblogs" => true, + "subscribing" => false } }) end diff --git a/lib/pleroma/web/api_spec/schemas/app_create_request.ex b/lib/pleroma/web/api_spec/schemas/app_create_request.ex index 8a83abef3..7e92205cf 100644 --- a/lib/pleroma/web/api_spec/schemas/app_create_request.ex +++ b/lib/pleroma/web/api_spec/schemas/app_create_request.ex @@ -21,7 +21,11 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AppCreateRequest do type: :string, description: "Space separated list of scopes. If none is provided, defaults to `read`." }, - website: %Schema{type: :string, description: "A URL to the homepage of your app"} + website: %Schema{ + type: :string, + description: "A URL to the homepage of your app", + format: :uri + } }, required: [:client_name, :redirect_uris], example: %{ diff --git a/lib/pleroma/web/api_spec/schemas/app_create_response.ex b/lib/pleroma/web/api_spec/schemas/app_create_response.ex index f290fb031..3c41d4ee5 100644 --- a/lib/pleroma/web/api_spec/schemas/app_create_response.ex +++ b/lib/pleroma/web/api_spec/schemas/app_create_response.ex @@ -16,9 +16,9 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AppCreateResponse do name: %Schema{type: :string}, client_id: %Schema{type: :string}, client_secret: %Schema{type: :string}, - redirect_uri: %Schema{type: :string}, + redirect_uri: %Schema{type: :string, format: :uri}, vapid_key: %Schema{type: :string}, - website: %Schema{type: :string, nullable: true} + website: %Schema{type: :string, nullable: true, format: :uri} }, example: %{ "id" => "123", diff --git a/lib/pleroma/web/api_spec/schemas/list.ex b/lib/pleroma/web/api_spec/schemas/list.ex index 30fa7db93..f85fac2b8 100644 --- a/lib/pleroma/web/api_spec/schemas/list.ex +++ b/lib/pleroma/web/api_spec/schemas/list.ex @@ -16,10 +16,8 @@ defmodule Pleroma.Web.ApiSpec.Schemas.List do title: %Schema{type: :string} }, example: %{ - "JSON" => %{ - "id" => "123", - "title" => "my list" - } + "id" => "123", + "title" => "my list" } }) end diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex index 486c3a0fe..a022450e6 100644 --- a/lib/pleroma/web/api_spec/schemas/status.ex +++ b/lib/pleroma/web/api_spec/schemas/status.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do type: :object, properties: %{ name: %Schema{type: :string}, - website: %Schema{type: :string, nullable: true} + website: %Schema{type: :string, nullable: true, format: :uri} } }, bookmarked: %Schema{type: :boolean}, @@ -29,16 +29,16 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do type: :object, nullable: true, properties: %{ - type: %Schema{type: :string}, - provider_name: %Schema{type: :string}, - provider_url: %Schema{type: :string}, - url: %Schema{type: :string}, - image: %Schema{type: :string}, + type: %Schema{type: :string, enum: ["link", "photo", "video", "rich"]}, + provider_name: %Schema{type: :string, nullable: true}, + provider_url: %Schema{type: :string, format: :uri}, + url: %Schema{type: :string, format: :uri}, + image: %Schema{type: :string, nullable: true, format: :uri}, title: %Schema{type: :string}, description: %Schema{type: :string} } }, - content: %Schema{type: :string}, + content: %Schema{type: :string, format: :html}, created_at: %Schema{type: :string, format: "date-time"}, emojis: %Schema{type: :array, items: AccountEmoji}, favourited: %Schema{type: :boolean}, @@ -53,10 +53,10 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do type: :object, properties: %{ id: %Schema{type: :string}, - url: %Schema{type: :string}, - remote_url: %Schema{type: :string}, - preview_url: %Schema{type: :string}, - text_url: %Schema{type: :string}, + url: %Schema{type: :string, format: :uri}, + remote_url: %Schema{type: :string, format: :uri}, + preview_url: %Schema{type: :string, format: :uri}, + text_url: %Schema{type: :string, format: :uri}, description: %Schema{type: :string}, type: %Schema{type: :string, enum: ["image", "video", "audio", "unknown"]}, pleroma: %Schema{ @@ -74,7 +74,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do id: %Schema{type: :string}, acct: %Schema{type: :string}, username: %Schema{type: :string}, - url: %Schema{type: :string} + url: %Schema{type: :string, format: :uri} } } }, @@ -120,108 +120,106 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do type: :object, properties: %{ name: %Schema{type: :string}, - url: %Schema{type: :string} + url: %Schema{type: :string, format: :uri} } } }, - uri: %Schema{type: :string}, - url: %Schema{type: :string}, + uri: %Schema{type: :string, format: :uri}, + url: %Schema{type: :string, nullable: true, format: :uri}, visibility: VisibilityScope }, example: %{ - "JSON" => %{ - "account" => %{ - "acct" => "nick6", - "avatar" => "http://localhost:4001/images/avi.png", - "avatar_static" => "http://localhost:4001/images/avi.png", - "bot" => false, - "created_at" => "2020-04-07T19:48:51.000Z", - "display_name" => "Test テスト User 6", - "emojis" => [], - "fields" => [], - "followers_count" => 1, - "following_count" => 0, - "header" => "http://localhost:4001/images/banner.png", - "header_static" => "http://localhost:4001/images/banner.png", - "id" => "9toJCsKN7SmSf3aj5c", - "locked" => false, - "note" => "Tester Number 6", - "pleroma" => %{ - "background_image" => nil, - "confirmation_pending" => false, - "hide_favorites" => true, - "hide_followers" => false, - "hide_followers_count" => false, - "hide_follows" => false, - "hide_follows_count" => false, - "is_admin" => false, - "is_moderator" => false, - "relationship" => %{ - "blocked_by" => false, - "blocking" => false, - "domain_blocking" => false, - "endorsed" => false, - "followed_by" => false, - "following" => true, - "id" => "9toJCsKN7SmSf3aj5c", - "muting" => false, - "muting_notifications" => false, - "requested" => false, - "showing_reblogs" => true, - "subscribing" => false - }, - "skip_thread_containment" => false, - "tags" => [] - }, - "source" => %{ - "fields" => [], - "note" => "Tester Number 6", - "pleroma" => %{"actor_type" => "Person", "discoverable" => false}, - "sensitive" => false - }, - "statuses_count" => 1, - "url" => "http://localhost:4001/users/nick6", - "username" => "nick6" - }, - "application" => %{"name" => "Web", "website" => nil}, - "bookmarked" => false, - "card" => nil, - "content" => "foobar", + "account" => %{ + "acct" => "nick6", + "avatar" => "http://localhost:4001/images/avi.png", + "avatar_static" => "http://localhost:4001/images/avi.png", + "bot" => false, "created_at" => "2020-04-07T19:48:51.000Z", + "display_name" => "Test テスト User 6", "emojis" => [], - "favourited" => false, - "favourites_count" => 0, - "id" => "9toJCu5YZW7O7gfvH6", - "in_reply_to_account_id" => nil, - "in_reply_to_id" => nil, - "language" => nil, - "media_attachments" => [], - "mentions" => [], - "muted" => false, - "pinned" => false, + "fields" => [], + "followers_count" => 1, + "following_count" => 0, + "header" => "http://localhost:4001/images/banner.png", + "header_static" => "http://localhost:4001/images/banner.png", + "id" => "9toJCsKN7SmSf3aj5c", + "locked" => false, + "note" => "Tester Number 6", "pleroma" => %{ - "content" => %{"text/plain" => "foobar"}, - "conversation_id" => 345_972, - "direct_conversation_id" => nil, - "emoji_reactions" => [], - "expires_at" => nil, - "in_reply_to_account_acct" => nil, - "local" => true, - "spoiler_text" => %{"text/plain" => ""}, - "thread_muted" => false + "background_image" => nil, + "confirmation_pending" => false, + "hide_favorites" => true, + "hide_followers" => false, + "hide_followers_count" => false, + "hide_follows" => false, + "hide_follows_count" => false, + "is_admin" => false, + "is_moderator" => false, + "relationship" => %{ + "blocked_by" => false, + "blocking" => false, + "domain_blocking" => false, + "endorsed" => false, + "followed_by" => false, + "following" => true, + "id" => "9toJCsKN7SmSf3aj5c", + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "showing_reblogs" => true, + "subscribing" => false + }, + "skip_thread_containment" => false, + "tags" => [] }, - "poll" => nil, - "reblog" => nil, - "reblogged" => false, - "reblogs_count" => 0, - "replies_count" => 0, - "sensitive" => false, - "spoiler_text" => "", - "tags" => [], - "uri" => "http://localhost:4001/objects/0f5dad44-0e9e-4610-b377-a2631e499190", - "url" => "http://localhost:4001/notice/9toJCu5YZW7O7gfvH6", - "visibility" => "private" - } + "source" => %{ + "fields" => [], + "note" => "Tester Number 6", + "pleroma" => %{"actor_type" => "Person", "discoverable" => false}, + "sensitive" => false + }, + "statuses_count" => 1, + "url" => "http://localhost:4001/users/nick6", + "username" => "nick6" + }, + "application" => %{"name" => "Web", "website" => nil}, + "bookmarked" => false, + "card" => nil, + "content" => "foobar", + "created_at" => "2020-04-07T19:48:51.000Z", + "emojis" => [], + "favourited" => false, + "favourites_count" => 0, + "id" => "9toJCu5YZW7O7gfvH6", + "in_reply_to_account_id" => nil, + "in_reply_to_id" => nil, + "language" => nil, + "media_attachments" => [], + "mentions" => [], + "muted" => false, + "pinned" => false, + "pleroma" => %{ + "content" => %{"text/plain" => "foobar"}, + "conversation_id" => 345_972, + "direct_conversation_id" => nil, + "emoji_reactions" => [], + "expires_at" => nil, + "in_reply_to_account_acct" => nil, + "local" => true, + "spoiler_text" => %{"text/plain" => ""}, + "thread_muted" => false + }, + "poll" => nil, + "reblog" => nil, + "reblogged" => false, + "reblogs_count" => 0, + "replies_count" => 0, + "sensitive" => false, + "spoiler_text" => "", + "tags" => [], + "uri" => "http://localhost:4001/objects/0f5dad44-0e9e-4610-b377-a2631e499190", + "url" => "http://localhost:4001/notice/9toJCu5YZW7O7gfvH6", + "visibility" => "private" } }) end From 11433cd38d9761ddf3fdb94f8c39526910b975c1 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 21 Apr 2020 23:54:45 +0400 Subject: [PATCH 075/137] Add OpenAPI schema for FlakeID --- lib/pleroma/web/api_spec/schemas/account.ex | 22 ++++--------------- .../api_spec/schemas/account_relationship.ex | 3 ++- lib/pleroma/web/api_spec/schemas/flake_id.ex | 14 ++++++++++++ lib/pleroma/web/api_spec/schemas/poll.ex | 3 ++- lib/pleroma/web/api_spec/schemas/status.ex | 3 ++- 5 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 lib/pleroma/web/api_spec/schemas/flake_id.ex diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex index 3634a7c76..f57015254 100644 --- a/lib/pleroma/web/api_spec/schemas/account.ex +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -6,7 +6,9 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji alias Pleroma.Web.ApiSpec.Schemas.AccountField + alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship alias Pleroma.Web.ApiSpec.Schemas.ActorType + alias Pleroma.Web.ApiSpec.Schemas.FlakeID alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope require OpenApiSpex @@ -29,7 +31,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do following_count: %Schema{type: :integer}, header_static: %Schema{type: :string, format: :uri}, header: %Schema{type: :string, format: :uri}, - id: %Schema{type: :string}, + id: FlakeID, locked: %Schema{type: :boolean}, note: %Schema{type: :string, format: :html}, statuses_count: %Schema{type: :integer}, @@ -62,23 +64,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do privacy_option: %Schema{type: :boolean} } }, - relationship: %Schema{ - type: :object, - properties: %{ - blocked_by: %Schema{type: :boolean}, - blocking: %Schema{type: :boolean}, - domain_blocking: %Schema{type: :boolean}, - endorsed: %Schema{type: :boolean}, - followed_by: %Schema{type: :boolean}, - following: %Schema{type: :boolean}, - id: %Schema{type: :string}, - muting: %Schema{type: :boolean}, - muting_notifications: %Schema{type: :boolean}, - requested: %Schema{type: :boolean}, - showing_reblogs: %Schema{type: :boolean}, - subscribing: %Schema{type: :boolean} - } - }, + relationship: AccountRelationship, settings_store: %Schema{ type: :object } diff --git a/lib/pleroma/web/api_spec/schemas/account_relationship.ex b/lib/pleroma/web/api_spec/schemas/account_relationship.ex index f2bd37d39..8b982669e 100644 --- a/lib/pleroma/web/api_spec/schemas/account_relationship.ex +++ b/lib/pleroma/web/api_spec/schemas/account_relationship.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationship do alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.FlakeID require OpenApiSpex @@ -18,7 +19,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationship do endorsed: %Schema{type: :boolean}, followed_by: %Schema{type: :boolean}, following: %Schema{type: :boolean}, - id: %Schema{type: :string}, + id: FlakeID, muting: %Schema{type: :boolean}, muting_notifications: %Schema{type: :boolean}, requested: %Schema{type: :boolean}, diff --git a/lib/pleroma/web/api_spec/schemas/flake_id.ex b/lib/pleroma/web/api_spec/schemas/flake_id.ex new file mode 100644 index 000000000..b8e03b8a1 --- /dev/null +++ b/lib/pleroma/web/api_spec/schemas/flake_id.ex @@ -0,0 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.FlakeID do + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "FlakeID", + description: + "Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are sortable strings", + type: :string + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/poll.ex b/lib/pleroma/web/api_spec/schemas/poll.ex index 2a9975f85..5fc9e889f 100644 --- a/lib/pleroma/web/api_spec/schemas/poll.ex +++ b/lib/pleroma/web/api_spec/schemas/poll.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + alias Pleroma.Web.ApiSpec.Schemas.FlakeID require OpenApiSpex @@ -13,7 +14,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do description: "Response schema for account custom fields", type: :object, properties: %{ - id: %Schema{type: :string}, + id: FlakeID, expires_at: %Schema{type: :string, format: "date-time"}, expired: %Schema{type: :boolean}, multiple: %Schema{type: :boolean}, diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex index a022450e6..bf5f04691 100644 --- a/lib/pleroma/web/api_spec/schemas/status.ex +++ b/lib/pleroma/web/api_spec/schemas/status.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.Account alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + alias Pleroma.Web.ApiSpec.Schemas.FlakeID alias Pleroma.Web.ApiSpec.Schemas.Poll alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope @@ -43,7 +44,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do emojis: %Schema{type: :array, items: AccountEmoji}, favourited: %Schema{type: :boolean}, favourites_count: %Schema{type: :integer}, - id: %Schema{type: :string}, + id: FlakeID, in_reply_to_account_id: %Schema{type: :string, nullable: true}, in_reply_to_id: %Schema{type: :string, nullable: true}, language: %Schema{type: :string, nullable: true}, From f719a5b23a9bec4ed94f36c07e24aa1413654bae Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 13:28:34 +0200 Subject: [PATCH 076/137] WebPush: Return proper values for jobs. --- lib/pleroma/web/push/impl.ex | 3 ++- test/web/push/impl_test.exs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex index f1740a6e0..a9f893f7b 100644 --- a/lib/pleroma/web/push/impl.ex +++ b/lib/pleroma/web/push/impl.ex @@ -55,11 +55,12 @@ def perform( |> Jason.encode!() |> push_message(build_sub(subscription), gcm_api_key, subscription) end + |> (&{:ok, &1}).() end def perform(_) do Logger.warn("Unknown notification type") - :error + {:error, :unknown_type} end @doc "Push message to web" diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index 9121d90e7..b2664bf28 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -63,12 +63,12 @@ test "performs sending notifications" do activity: activity ) - assert Impl.perform(notif) == [:ok, :ok] + assert Impl.perform(notif) == {:ok, [:ok, :ok]} end @tag capture_log: true test "returns error if notif does not match " do - assert Impl.perform(%{}) == :error + assert Impl.perform(%{}) == {:error, :unknown_type} end test "successful message sending" do From 923513b6417973f700a80ee969c6c92ed2c9faee Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 13:28:52 +0200 Subject: [PATCH 077/137] Federator: Return proper values for jobs --- lib/pleroma/web/federator/federator.ex | 13 +++++++++---- test/web/federator_test.exs | 7 +++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index fd904ef0a..f5803578d 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -72,19 +72,24 @@ def perform(:incoming_ap_doc, params) do # actor shouldn't be acting on objects outside their own AP server. with {:ok, _user} <- ap_enabled_actor(params["actor"]), nil <- Activity.normalize(params["id"]), - :ok <- Containment.contain_origin_from_id(params["actor"], params), + {_, :ok} <- + {:correct_origin?, Containment.contain_origin_from_id(params["actor"], params)}, {:ok, activity} <- Transmogrifier.handle_incoming(params) do {:ok, activity} else + {:correct_origin?, _} -> + Logger.debug("Origin containment failure for #{params["id"]}") + {:error, :origin_containment_failed} + %Activity{} -> Logger.debug("Already had #{params["id"]}") - :error + {:error, :already_present} - _e -> + e -> # Just drop those for now Logger.debug("Unhandled activity") Logger.debug(Jason.encode!(params, pretty: true)) - :error + {:error, e} end end diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index 59e53bb03..261518ef0 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -130,6 +130,9 @@ test "successfully processes incoming AP docs with correct origin" do assert {:ok, job} = Federator.incoming_ap_doc(params) assert {:ok, _activity} = ObanHelpers.perform(job) + + assert {:ok, job} = Federator.incoming_ap_doc(params) + assert {:error, :already_present} = ObanHelpers.perform(job) end test "rejects incoming AP docs with incorrect origin" do @@ -148,7 +151,7 @@ test "rejects incoming AP docs with incorrect origin" do } assert {:ok, job} = Federator.incoming_ap_doc(params) - assert :error = ObanHelpers.perform(job) + assert {:error, :origin_containment_failed} = ObanHelpers.perform(job) end test "it does not crash if MRF rejects the post" do @@ -164,7 +167,7 @@ test "it does not crash if MRF rejects the post" do |> Poison.decode!() assert {:ok, job} = Federator.incoming_ap_doc(params) - assert :error = ObanHelpers.perform(job) + assert {:error, _} = ObanHelpers.perform(job) end end end From 5102468d0f8067548ef233b5947da4bc517f5774 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 14:06:39 +0200 Subject: [PATCH 078/137] Polls: Persist and show voters' count --- lib/pleroma/object.ex | 5 ++++- lib/pleroma/web/activity_pub/activity_pub.ex | 5 +++-- lib/pleroma/web/mastodon_api/views/poll_view.ex | 7 +++++++ test/web/mastodon_api/views/poll_view_test.exs | 16 ++++++++++++++-- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 9574432f0..e678fd415 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -261,7 +261,7 @@ def decrease_replies_count(ap_id) do end end - def increase_vote_count(ap_id, name) do + def increase_vote_count(ap_id, name, actor) do with %Object{} = object <- Object.normalize(ap_id), "Question" <- object.data["type"] do multiple = Map.has_key?(object.data, "anyOf") @@ -276,12 +276,15 @@ def increase_vote_count(ap_id, name) do option end) + voters = [actor | object.data["voters"] || []] |> Enum.uniq() + data = if multiple do Map.put(object.data, "anyOf", options) else Map.put(object.data, "oneOf", options) end + |> Map.put("voters", voters) object |> Object.change(%{data: data}) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index eedea08a2..4a133498e 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -118,9 +118,10 @@ def decrease_replies_count_if_reply(_object), do: :noop def increase_poll_votes_if_vote(%{ "object" => %{"inReplyTo" => reply_ap_id, "name" => name}, - "type" => "Create" + "type" => "Create", + "actor" => actor }) do - Object.increase_vote_count(reply_ap_id, name) + Object.increase_vote_count(reply_ap_id, name, actor) end def increase_poll_votes_if_vote(_create_data), do: :noop diff --git a/lib/pleroma/web/mastodon_api/views/poll_view.ex b/lib/pleroma/web/mastodon_api/views/poll_view.ex index 40edbb213..59a5deb28 100644 --- a/lib/pleroma/web/mastodon_api/views/poll_view.ex +++ b/lib/pleroma/web/mastodon_api/views/poll_view.ex @@ -19,6 +19,7 @@ def render("show.json", %{object: object, multiple: multiple, options: options} expired: expired, multiple: multiple, votes_count: votes_count, + voters_count: (multiple || nil) && voters_count(object), options: options, voted: voted?(params), emojis: Pleroma.Web.MastodonAPI.StatusView.build_emojis(object.data["emoji"]) @@ -62,6 +63,12 @@ defp options_and_votes_count(options) do end) end + defp voters_count(%{data: %{"voters" => [_ | _] = voters}}) do + length(voters) + end + + defp voters_count(_), do: 0 + defp voted?(%{object: object} = opts) do if opts[:for] do existing_votes = Pleroma.Web.ActivityPub.Utils.get_existing_votes(opts[:for].ap_id, object) diff --git a/test/web/mastodon_api/views/poll_view_test.exs b/test/web/mastodon_api/views/poll_view_test.exs index 6211fa888..63b204387 100644 --- a/test/web/mastodon_api/views/poll_view_test.exs +++ b/test/web/mastodon_api/views/poll_view_test.exs @@ -43,7 +43,8 @@ test "renders a poll" do %{title: "why are you even asking?", votes_count: 0} ], voted: false, - votes_count: 0 + votes_count: 0, + voters_count: nil } result = PollView.render("show.json", %{object: object}) @@ -69,9 +70,20 @@ test "detects if it is multiple choice" do } }) + voter = insert(:user) + object = Object.normalize(activity) - assert %{multiple: true} = PollView.render("show.json", %{object: object}) + {:ok, _votes, object} = CommonAPI.vote(voter, object, [0, 1]) + + assert match?( + %{ + multiple: true, + voters_count: 1, + votes_count: 2 + }, + PollView.render("show.json", %{object: object}) + ) end test "detects emoji" do From 568f48435e7db4582c54a443b2d543cc004f7f9b Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 12:10:20 +0000 Subject: [PATCH 079/137] Apply suggestion to docs/installation/debian_based_en.md --- docs/installation/debian_based_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index a900ec61d..62d8733f7 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -7,7 +7,7 @@ This guide will assume you are on Debian Stretch. This guide should also work wi * `postgresql` (9.6+, Ubuntu 16.04 comes with 9.5, you can get a newer version from [here](https://www.postgresql.org/download/linux/ubuntu/)) * `postgresql-contrib` (9.6+, same situtation as above) -* `elixir` (1.8+, [install from here, Debian and Ubuntu ship older versions](https://elixir-lang.org/install.html#unix-and-unix-like) or use [asdf](https://github.com/asdf-vm/asdf) as the pleroma user) +* `elixir` (1.8+, Follow the guide to install from the Erlang Solutions repo or use [asdf](https://github.com/asdf-vm/asdf) as the pleroma user) * `erlang-dev` * `erlang-nox` * `git` From c10485db163d56acd7206980f91f0e51153ef36a Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 14:26:19 +0200 Subject: [PATCH 080/137] StatusController: Ignore nil scheduled_at parameters. --- .../web/mastodon_api/controllers/status_controller.ex | 3 ++- .../controllers/status_controller_test.exs | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index 397dd10e3..f6e4f7d66 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -127,7 +127,8 @@ def index(%{assigns: %{user: user}} = conn, %{"ids" => ids} = params) do def create( %{assigns: %{user: user}} = conn, %{"status" => _, "scheduled_at" => scheduled_at} = params - ) do + ) + when not is_nil(scheduled_at) do params = Map.put(params, "in_reply_to_status_id", params["in_reply_to_id"]) with {:far_enough, true} <- {:far_enough, ScheduledActivity.far_enough?(scheduled_at)}, diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 162f7b1b2..85068edd0 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -302,6 +302,17 @@ test "creates a scheduled activity", %{conn: conn} do assert [] == Repo.all(Activity) end + test "ignores nil values", %{conn: conn} do + conn = + post(conn, "/api/v1/statuses", %{ + "status" => "not scheduled", + "scheduled_at" => nil + }) + + assert result = json_response(conn, 200) + assert Activity.get_by_id(result["id"]) + end + test "creates a scheduled activity with a media attachment", %{user: user, conn: conn} do scheduled_at = NaiveDateTime.add(NaiveDateTime.utc_now(), :timer.minutes(120), :millisecond) From 5b3952619818d38f8fdba9a64b050ce3f24394ff Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 15:04:26 +0200 Subject: [PATCH 081/137] AccountController: Use code 400 for self-follow. --- .../controllers/account_controller.ex | 21 ++++++++++--------- .../controllers/account_controller_test.exs | 6 +++--- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index e8e59ac66..5a92cebd8 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -293,7 +293,7 @@ def lists(%{assigns: %{user: user, account: account}} = conn, _params) do @doc "POST /api/v1/accounts/:id/follow" def follow(%{assigns: %{user: %{id: id}, account: %{id: id}}}, _params) do - {:error, :not_found} + {:error, "Can not follow yourself"} end def follow(%{assigns: %{user: follower, account: followed}} = conn, _params) do @@ -306,7 +306,7 @@ def follow(%{assigns: %{user: follower, account: followed}} = conn, _params) do @doc "POST /api/v1/accounts/:id/unfollow" def unfollow(%{assigns: %{user: %{id: id}, account: %{id: id}}}, _params) do - {:error, :not_found} + {:error, "Can not unfollow yourself"} end def unfollow(%{assigns: %{user: follower, account: followed}} = conn, _params) do @@ -356,14 +356,15 @@ def unblock(%{assigns: %{user: blocker, account: blocked}} = conn, _params) do end @doc "POST /api/v1/follows" - def follows(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do - with {_, %User{} = followed} <- {:followed, User.get_cached_by_nickname(uri)}, - {_, true} <- {:followed, follower.id != followed.id}, - {:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do - render(conn, "show.json", user: followed, for: follower) - else - {:followed, _} -> {:error, :not_found} - {:error, message} -> json_response(conn, :forbidden, %{error: message}) + def follows(conn, %{"uri" => uri}) do + case User.get_cached_by_nickname(uri) do + %User{} = user -> + conn + |> assign(:account, user) + |> follow(%{}) + + nil -> + {:error, :not_found} end end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 61c2697b2..8c428efee 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -681,17 +681,17 @@ test "following without reblogs" do test "following / unfollowing errors", %{user: user, conn: conn} do # self follow conn_res = post(conn, "/api/v1/accounts/#{user.id}/follow") - assert %{"error" => "Record not found"} = json_response(conn_res, 404) + assert %{"error" => "Can not follow yourself"} = json_response(conn_res, 400) # self unfollow user = User.get_cached_by_id(user.id) conn_res = post(conn, "/api/v1/accounts/#{user.id}/unfollow") - assert %{"error" => "Record not found"} = json_response(conn_res, 404) + assert %{"error" => "Can not unfollow yourself"} = json_response(conn_res, 400) # self follow via uri user = User.get_cached_by_id(user.id) conn_res = post(conn, "/api/v1/follows", %{"uri" => user.nickname}) - assert %{"error" => "Record not found"} = json_response(conn_res, 404) + assert %{"error" => "Can not follow yourself"} = json_response(conn_res, 400) # follow non existing user conn_res = post(conn, "/api/v1/accounts/doesntexist/follow") From 8b88e2a6e2b3a777ca99bf94676ab47f2d4cc0ea Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 15:31:37 +0200 Subject: [PATCH 082/137] Stats: Ignore internal users for user count. --- lib/pleroma/stats.ex | 19 ++++++++++++++----- test/{stat_test.exs => stats_test.exs} | 13 ++++++++++++- 2 files changed, 26 insertions(+), 6 deletions(-) rename test/{stat_test.exs => stats_test.exs} (84%) diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 4446562ac..6763786a7 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -45,11 +45,11 @@ def get_peers do end def init(_args) do - {:ok, get_stat_data()} + {:ok, calculate_stat_data()} end def handle_call(:force_update, _from, _state) do - new_stats = get_stat_data() + new_stats = calculate_stat_data() {:reply, new_stats, new_stats} end @@ -58,12 +58,12 @@ def handle_call(:get_state, _from, state) do end def handle_cast(:run_update, _state) do - new_stats = get_stat_data() + new_stats = calculate_stat_data() {:noreply, new_stats} end - defp get_stat_data do + def calculate_stat_data do peers = from( u in User, @@ -77,7 +77,16 @@ defp get_stat_data do status_count = Repo.aggregate(User.Query.build(%{local: true}), :sum, :note_count) - user_count = Repo.aggregate(User.Query.build(%{local: true, active: true}), :count, :id) + users_query = + from(u in User, + where: u.deactivated != true, + where: u.local == true, + where: not is_nil(u.nickname), + where: fragment("? not like 'internal.%'", u.nickname), + where: fragment("? not like '%/relay'", u.ap_id) + ) + + user_count = Repo.aggregate(users_query, :count, :id) %{ peers: peers, diff --git a/test/stat_test.exs b/test/stats_test.exs similarity index 84% rename from test/stat_test.exs rename to test/stats_test.exs index bccc1c8d0..73c7c1495 100644 --- a/test/stat_test.exs +++ b/test/stats_test.exs @@ -2,11 +2,22 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.StateTest do +defmodule Pleroma.StatsTest do use Pleroma.DataCase import Pleroma.Factory alias Pleroma.Web.CommonAPI + describe "user count" do + test "it ignores internal users" do + _user = insert(:user, local: true) + _internal = insert(:user, local: true, nickname: nil) + _internal = insert(:user, local: true, nickname: "internal.dude") + _internal = Pleroma.Web.ActivityPub.Relay.get_actor() + + assert match?(%{stats: %{user_count: 1}}, Pleroma.Stats.calculate_stat_data()) + end + end + describe "status visibility count" do test "on new status" do user = insert(:user) From 452072ec95781214df262962b71c60b7d771b7b1 Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Wed, 22 Apr 2020 16:02:40 +0200 Subject: [PATCH 083/137] static_fe: Add microformats2 classes --- .../templates/static_fe/static_fe/_attachment.html.eex | 6 +++--- .../web/templates/static_fe/static_fe/_notice.html.eex | 10 +++++++--- .../templates/static_fe/static_fe/_user_card.html.eex | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex index 7e04e9550..4853e7f4b 100644 --- a/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex +++ b/lib/pleroma/web/templates/static_fe/static_fe/_attachment.html.eex @@ -1,8 +1,8 @@ <%= case @mediaType do %> <% "audio" -> %> - + <% "video" -> %> - + <% _ -> %> -<%= @name %> +<%= @name %> <% end %> diff --git a/lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex index df5e5eedd..df0244795 100644 --- a/lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex +++ b/lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex @@ -1,12 +1,16 @@ -
id="selected" <% end %>> +
id="selected" <% end %>>

- <%= link format_date(@published), to: @link, class: "activity-link" %> + + +

<%= render("_user_card.html", %{user: @user}) %>
<%= if @title != "" do %>
open<% end %>> - <%= raw @title %> + <%= raw @title %>
<%= raw @content %>
<% else %> diff --git a/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex b/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex index 56f3a1524..977b894d3 100644 --- a/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex +++ b/lib/pleroma/web/templates/static_fe/static_fe/_user_card.html.eex @@ -1,10 +1,10 @@
- +
- <%= raw Formatter.emojify(@user.name, @user.emoji) %> + <%= raw Formatter.emojify(@user.name, @user.emoji) %> <%= @user.nickname %>
From 7a3a88a13ef526fba18bb6aeadc93f5da934dc5b Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 17:21:13 +0200 Subject: [PATCH 084/137] Streamer: Stream boosts to the boosting user. --- lib/pleroma/user.ex | 4 +++- lib/pleroma/web/streamer/worker.ex | 18 --------------- test/user_test.exs | 12 ++++++++++ test/web/streamer/streamer_test.exs | 36 +++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index bef4679cb..477237756 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1180,7 +1180,9 @@ def get_users_from_set(ap_ids, local_only \\ true) do end @spec get_recipients_from_activity(Activity.t()) :: [User.t()] - def get_recipients_from_activity(%Activity{recipients: to}) do + def get_recipients_from_activity(%Activity{recipients: to, actor: actor}) do + to = [actor | to] + User.Query.build(%{recipients_from_activity: to, local: true, deactivated: false}) |> Repo.all() end diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex index abfed21c8..f6160fa4d 100644 --- a/lib/pleroma/web/streamer/worker.ex +++ b/lib/pleroma/web/streamer/worker.ex @@ -158,24 +158,6 @@ defp should_send?(%User{} = user, %Notification{activity: activity}) do should_send?(user, activity) end - def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do - Enum.each(topics[topic] || [], fn %StreamerSocket{ - transport_pid: transport_pid, - user: socket_user - } -> - # Get the current user so we have up-to-date blocks etc. - if socket_user do - user = User.get_cached_by_ap_id(socket_user.ap_id) - - if should_send?(user, item) do - send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) - end - else - send(transport_pid, {:text, StreamerView.render("update.json", item)}) - end - end) - end - def push_to_socket(topics, topic, %Participation{} = participation) do Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> send(transport_pid, {:text, StreamerView.render("conversation.json", participation)}) diff --git a/test/user_test.exs b/test/user_test.exs index 65e118d6d..cd4041673 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -987,6 +987,18 @@ test "it imports user blocks from list" do end describe "get_recipients_from_activity" do + test "works for announces" do + actor = insert(:user) + user = insert(:user, local: true) + + {:ok, activity} = CommonAPI.post(actor, %{"status" => "hello"}) + {:ok, announce, _} = CommonAPI.repeat(activity.id, user) + + recipients = User.get_recipients_from_activity(announce) + + assert user in recipients + end + test "get recipients" do actor = insert(:user) user = insert(:user, local: true) diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index eb082b79f..8b8d8af6c 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -28,6 +28,42 @@ defmodule Pleroma.Web.StreamerTest do {:ok, %{user: user, notify: notify}} end + test "it streams the user's post in the 'user' stream", %{user: user} do + task = + Task.async(fn -> + assert_receive {:text, _}, @streamer_timeout + end) + + Streamer.add_socket( + "user", + %{transport_pid: task.pid, assigns: %{user: user}} + ) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"}) + + Streamer.stream("user", activity) + Task.await(task) + end + + test "it streams boosts of the user in the 'user' stream", %{user: user} do + task = + Task.async(fn -> + assert_receive {:text, _}, @streamer_timeout + end) + + Streamer.add_socket( + "user", + %{transport_pid: task.pid, assigns: %{user: user}} + ) + + other_user = insert(:user) + {:ok, activity} = CommonAPI.post(other_user, %{"status" => "hey"}) + {:ok, announce, _} = CommonAPI.repeat(activity.id, user) + + Streamer.stream("user", announce) + Task.await(task) + end + test "it sends notify to in the 'user' stream", %{user: user, notify: notify} do task = Task.async(fn -> From 88b82e5c3edae649f1caa45c6ef805828e4b8b1e Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 21 Apr 2020 20:05:25 +0400 Subject: [PATCH 085/137] Fix follow import --- .../controllers/util_controller.ex | 25 +++++++++---------- test/web/twitter_api/util_controller_test.exs | 24 ++++++++++++++++++ 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 537f9f778..824951d59 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -199,15 +199,16 @@ def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do end def follow_import(%{assigns: %{user: follower}} = conn, %{"list" => list}) do - with lines <- String.split(list, "\n"), - followed_identifiers <- - Enum.map(lines, fn line -> - String.split(line, ",") |> List.first() - end) - |> List.delete("Account address") do - User.follow_import(follower, followed_identifiers) - json(conn, "job started") - end + followed_identifiers = + list + |> String.split("\n") + |> Enum.map(&(&1 |> String.split(",") |> List.first())) + |> List.delete("Account address") + |> Enum.map(&(&1 |> String.trim() |> String.trim_leading("@"))) + |> Enum.reject(&(&1 == "")) + + User.follow_import(follower, followed_identifiers) + json(conn, "job started") end def blocks_import(conn, %{"list" => %Plug.Upload{} = listfile}) do @@ -215,10 +216,8 @@ def blocks_import(conn, %{"list" => %Plug.Upload{} = listfile}) do end def blocks_import(%{assigns: %{user: blocker}} = conn, %{"list" => list}) do - with blocked_identifiers <- String.split(list) do - User.blocks_import(blocker, blocked_identifiers) - json(conn, "job started") - end + User.blocks_import(blocker, _blocked_identifiers = String.split(list)) + json(conn, "job started") end def change_password(%{assigns: %{user: user}} = conn, params) do diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index 30e54bebd..85aaab19b 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -95,6 +95,30 @@ test "requires 'follow' or 'write:follows' permissions" do end end end + + test "it imports with different nickname variations", %{conn: conn} do + [user2, user3, user4, user5, user6] = insert_list(5, :user) + + identifiers = + [ + user2.ap_id, + user3.nickname, + " ", + "@" <> user4.nickname, + user5.nickname <> "@localhost", + "@" <> user6.nickname <> "@localhost" + ] + |> Enum.join("\n") + + response = + conn + |> post("/api/pleroma/follow_import", %{"list" => identifiers}) + |> json_response(:ok) + + assert response == "job started" + assert [job_result] = ObanHelpers.perform_all() + assert job_result == [user2, user3, user4, user5, user6] + end end describe "POST /api/pleroma/blocks_import" do From e7771424a895572626ec36a98bf862952dc6ff07 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 22 Apr 2020 18:13:13 +0400 Subject: [PATCH 086/137] Fix blocks import --- .../controllers/util_controller.ex | 3 ++- test/web/twitter_api/util_controller_test.exs | 25 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 824951d59..d5d5ce08f 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -216,7 +216,8 @@ def blocks_import(conn, %{"list" => %Plug.Upload{} = listfile}) do end def blocks_import(%{assigns: %{user: blocker}} = conn, %{"list" => list}) do - User.blocks_import(blocker, _blocked_identifiers = String.split(list)) + blocked_identifiers = list |> String.split() |> Enum.map(&String.trim_leading(&1, "@")) + User.blocks_import(blocker, blocked_identifiers) json(conn, "job started") end diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index 85aaab19b..d835331ae 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -96,7 +96,7 @@ test "requires 'follow' or 'write:follows' permissions" do end end - test "it imports with different nickname variations", %{conn: conn} do + test "it imports follows with different nickname variations", %{conn: conn} do [user2, user3, user4, user5, user6] = insert_list(5, :user) identifiers = @@ -160,6 +160,29 @@ test "it imports blocks users from file", %{user: user1, conn: conn} do ) end end + + test "it imports blocks with different nickname variations", %{conn: conn} do + [user2, user3, user4, user5, user6] = insert_list(5, :user) + + identifiers = + [ + user2.ap_id, + user3.nickname, + "@" <> user4.nickname, + user5.nickname <> "@localhost", + "@" <> user6.nickname <> "@localhost" + ] + |> Enum.join(" ") + + response = + conn + |> post("/api/pleroma/blocks_import", %{"list" => identifiers}) + |> json_response(:ok) + + assert response == "job started" + assert [job_result] = ObanHelpers.perform_all() + assert job_result == [user2, user3, user4, user5, user6] + end end describe "PUT /api/pleroma/notification_settings" do From 6db52c3b3680efbdb56d53d84d5dec0f4b6e34f0 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 22 Apr 2020 19:00:08 +0400 Subject: [PATCH 087/137] Fix Oban warning Warning example: [warn] Expected Elixir.Pleroma.Workers.BackgroundWorker.perform/2 to return :ok, {:ok, value}, or {:error, reason}. Instead received: [error: "not found @user@server.party", error: "not found "] The job will be considered a success. --- lib/pleroma/workers/background_worker.ex | 4 ++-- test/user_test.exs | 4 ++-- test/web/twitter_api/util_controller_test.exs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index 0f8ece2c4..57c3a9c3a 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -35,7 +35,7 @@ def perform( _job ) do blocker = User.get_cached_by_id(blocker_id) - User.perform(:blocks_import, blocker, blocked_identifiers) + {:ok, User.perform(:blocks_import, blocker, blocked_identifiers)} end def perform( @@ -47,7 +47,7 @@ def perform( _job ) do follower = User.get_cached_by_id(follower_id) - User.perform(:follow_import, follower, followed_identifiers) + {:ok, User.perform(:follow_import, follower, followed_identifiers)} end def perform(%{"op" => "media_proxy_preload", "message" => message}, _job) do diff --git a/test/user_test.exs b/test/user_test.exs index 65e118d6d..23e7cf6e3 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -756,8 +756,8 @@ test "it imports user followings from list" do ] {:ok, job} = User.follow_import(user1, identifiers) - result = ObanHelpers.perform(job) + assert {:ok, result} = ObanHelpers.perform(job) assert is_list(result) assert result == [user2, user3] end @@ -979,8 +979,8 @@ test "it imports user blocks from list" do ] {:ok, job} = User.blocks_import(user1, identifiers) - result = ObanHelpers.perform(job) + assert {:ok, result} = ObanHelpers.perform(job) assert is_list(result) assert result == [user2, user3] end diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index d835331ae..b701239a0 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -116,7 +116,7 @@ test "it imports follows with different nickname variations", %{conn: conn} do |> json_response(:ok) assert response == "job started" - assert [job_result] = ObanHelpers.perform_all() + assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == [user2, user3, user4, user5, user6] end end @@ -180,7 +180,7 @@ test "it imports blocks with different nickname variations", %{conn: conn} do |> json_response(:ok) assert response == "job started" - assert [job_result] = ObanHelpers.perform_all() + assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == [user2, user3, user4, user5, user6] end end From 771c1ad735eb06842278e823a29acb94fd9acafb Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 22 Apr 2020 19:31:03 +0400 Subject: [PATCH 088/137] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d8e7efc3..702c58180 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Support pagination in conversations API - **Breaking**: SimplePolicy `:reject` and `:accept` allow deletions again +- Fix follower/blocks import when nicknames starts with @ ## [unreleased-patch] ### Fixed From b03aeae8b935b0a211c51cc3be5f1c15591f5a2f Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 22 Apr 2020 15:31:41 +0000 Subject: [PATCH 089/137] Apply suggestion to lib/pleroma/notification.ex --- lib/pleroma/notification.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index d305a43ba..aaa675253 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -362,7 +362,7 @@ def get_notified_from_activity(%Activity{data: %{"type" => type}} = activity, lo def get_notified_from_activity(_, _local_only), do: {[], []} - @doc "Filters out AP IDs of users who domain-block and not follow activity actor" + @doc "Filters out AP IDs domain-blocking and not following the activity's actor" def exclude_domain_blocker_ap_ids(ap_ids, activity, preloaded_users \\ []) def exclude_domain_blocker_ap_ids([], _activity, _preloaded_users), do: [] From 2958a7d246f40141a88bcb7bdd6a477c4f65f0bc Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 22 Apr 2020 18:50:25 +0300 Subject: [PATCH 090/137] Fixed OAuth restrictions for :api routes. Made auth info dropped for :api routes if OAuth check was neither performed nor explicitly skipped. --- docs/dev.md | 26 +++++--------- lib/pleroma/plugs/oauth_scopes_plug.ex | 13 +++++-- .../controllers/account_controller.ex | 4 +-- .../controllers/app_controller.ex | 8 +++++ .../controllers/custom_emoji_controller.ex | 6 ++++ .../controllers/instance_controller.ex | 6 ++++ .../controllers/mastodon_api_controller.ex | 6 +++- .../controllers/search_controller.ex | 2 ++ .../controllers/timeline_controller.ex | 17 +++++++--- .../controllers/pleroma_api_controller.ex | 6 ++++ .../controllers/scrobble_controller.ex | 6 +++- lib/pleroma/web/router.ex | 34 ++++++++----------- .../web/twitter_api/twitter_api_controller.ex | 6 ++-- lib/pleroma/web/web.ex | 14 +++++++- 14 files changed, 101 insertions(+), 53 deletions(-) diff --git a/docs/dev.md b/docs/dev.md index 0ecf43a9e..f1b4cbf8b 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -4,29 +4,19 @@ This document contains notes and guidelines for Pleroma developers. ## OAuth token-based authentication & authorization -* Pleroma supports hierarchical OAuth scopes, just like Mastodon but with added granularity of admin scopes. - For a reference, see [Mastodon OAuth scopes](https://docs.joinmastodon.org/api/oauth-scopes/). +* Pleroma supports hierarchical OAuth scopes, just like Mastodon but with added granularity of admin scopes. For a reference, see [Mastodon OAuth scopes](https://docs.joinmastodon.org/api/oauth-scopes/). -* It is important to either define OAuth scope restrictions or explicitly mark OAuth scope check as skipped, for every - controller action. To define scopes, call `plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: [...]})`. To explicitly set - OAuth scopes check skipped, call `plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug )`. +* It is important to either define OAuth scope restrictions or explicitly mark OAuth scope check as skipped, for every controller action. To define scopes, call `plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: [...]})`. To explicitly set OAuth scopes check skipped, call `plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug )`. -* In controllers, `use Pleroma.Web, :controller` will result in `action/2` (see `Pleroma.Web.controller/0` for definition) - be called prior to actual controller action, and it'll perform security / privacy checks before passing control to - actual controller action. For routes with `:authenticated_api` pipeline, authentication & authorization are expected, - thus `OAuthScopesPlug` will be run unless explicitly skipped (also `EnsureAuthenticatedPlug` will be executed - immediately before action even if there was an early run to give an early error, since `OAuthScopesPlug` supports - `:proceed_unauthenticated` option, and other plugs may support similar options as well). For `:api` pipeline routes, - `EnsurePublicOrAuthenticatedPlug` will be called to ensure that the instance is not private or user is authenticated - (unless explicitly skipped). Such automated checks help to prevent human errors and result in higher security / privacy - for users. +* In controllers, `use Pleroma.Web, :controller` will result in `action/2` (see `Pleroma.Web.controller/0` for definition) be called prior to actual controller action, and it'll perform security / privacy checks before passing control to actual controller action. + + For routes with `:authenticated_api` pipeline, authentication & authorization are expected, thus `OAuthScopesPlug` will be run unless explicitly skipped (also `EnsureAuthenticatedPlug` will be executed immediately before action even if there was an early run to give an early error, since `OAuthScopesPlug` supports `:proceed_unauthenticated` option, and other plugs may support similar options as well). + + For `:api` pipeline routes, it'll be verified whether `OAuthScopesPlug` was called or explicitly skipped, and if it was not then auth information will be dropped for request. Then `EnsurePublicOrAuthenticatedPlug` will be called to ensure that either the instance is not private or user is authenticated (unless explicitly skipped). Such automated checks help to prevent human errors and result in higher security / privacy for users. ## [HTTP Basic Authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) -* With HTTP Basic Auth, OAuth scopes check is _not_ performed for any action (since password is provided during the auth, - requester is able to obtain a token with full permissions anyways). `Pleroma.Plugs.AuthenticationPlug` and - `Pleroma.Plugs.LegacyAuthenticationPlug` both call `Pleroma.Plugs.OAuthScopesPlug.skip_plug(conn)` when password - is provided. +* With HTTP Basic Auth, OAuth scopes check is _not_ performed for any action (since password is provided during the auth, requester is able to obtain a token with full permissions anyways). `Pleroma.Plugs.AuthenticationPlug` and `Pleroma.Plugs.LegacyAuthenticationPlug` both call `Pleroma.Plugs.OAuthScopesPlug.skip_plug(conn)` when password is provided. ## Auth-related configuration, OAuth consumer mode etc. diff --git a/lib/pleroma/plugs/oauth_scopes_plug.ex b/lib/pleroma/plugs/oauth_scopes_plug.ex index a61582566..efc25b79f 100644 --- a/lib/pleroma/plugs/oauth_scopes_plug.ex +++ b/lib/pleroma/plugs/oauth_scopes_plug.ex @@ -28,9 +28,7 @@ def perform(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do conn options[:fallback] == :proceed_unauthenticated -> - conn - |> assign(:user, nil) - |> assign(:token, nil) + drop_auth_info(conn) true -> missing_scopes = scopes -- matched_scopes @@ -46,6 +44,15 @@ def perform(%Plug.Conn{assigns: assigns} = conn, %{scopes: scopes} = options) do end end + @doc "Drops authentication info from connection" + def drop_auth_info(conn) do + # To simplify debugging, setting a private variable on `conn` if auth info is dropped + conn + |> put_private(:authentication_ignored, true) + |> assign(:user, nil) + |> assign(:token, nil) + end + @doc "Filters descendants of supported scopes" def filter_descendants(scopes, supported_scopes) do Enum.filter( diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 9b8cc0d0d..e501b3555 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -37,7 +37,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OAuthScopesPlug, %{fallback: :proceed_unauthenticated, scopes: ["read:accounts"]} - when action in [:show, :endorsements] + when action in [:show, :followers, :following, :endorsements] ) plug( @@ -49,7 +49,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OAuthScopesPlug, %{scopes: ["read:accounts"]} - when action in [:endorsements, :verify_credentials, :followers, :following] + when action in [:endorsements, :verify_credentials] ) plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action == :update_credentials) diff --git a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex index 005c60444..408e11474 100644 --- a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex @@ -5,6 +5,7 @@ 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 @@ -13,7 +14,14 @@ defmodule Pleroma.Web.MastodonAPI.AppController do action_fallback(Pleroma.Web.MastodonAPI.FallbackController) + plug( + :skip_plug, + [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] + when action == :create + ) + plug(OAuthScopesPlug, %{scopes: ["read"]} when action == :verify_credentials) + plug(OpenApiSpex.Plug.CastAndValidate) @local_mastodon_name "Mastodon-Local" 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 3bfebef8b..000ad743f 100644 --- a/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex @@ -7,6 +7,12 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiController do plug(OpenApiSpex.Plug.CastAndValidate) + plug( + :skip_plug, + [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] + when action == :index + ) + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.CustomEmojiOperation def index(conn, _params) do diff --git a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex index 27b5b1a52..237f85677 100644 --- a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex @@ -5,6 +5,12 @@ defmodule Pleroma.Web.MastodonAPI.InstanceController do use Pleroma.Web, :controller + plug( + :skip_plug, + [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] + when action in [:show, :peers] + ) + @doc "GET /api/v1/instance" def show(conn, _params) do render(conn, "show.json") 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 f0492b189..e7767de4e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -15,7 +15,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do require Logger - plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug when action in [:empty_array, :empty_object]) + plug( + :skip_plug, + [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug] + when action in [:empty_array, :empty_object] + ) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex index b54c56967..cd49da6ad 100644 --- a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -21,6 +21,8 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do # Note: Mastodon doesn't allow unauthenticated access (requires read:accounts / read:search) plug(OAuthScopesPlug, %{scopes: ["read:search"], fallback: :proceed_unauthenticated}) + # Note: on private instances auth is required (EnsurePublicOrAuthenticatedPlug is not skipped) + plug(RateLimiter, [name: :search] when action in [:search, :search2, :account_search]) def account_search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index 891f924bc..040a0b9dd 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do only: [add_link_headers: 2, add_link_headers: 3, truthy_param?: 1, skip_relationships?: 1] alias Pleroma.Pagination + alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Plugs.RateLimiter alias Pleroma.User @@ -26,7 +27,13 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do plug(OAuthScopesPlug, %{scopes: ["read:statuses"]} when action in [:home, :direct]) plug(OAuthScopesPlug, %{scopes: ["read:lists"]} when action == :list) - plug(:skip_plug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action == :public) + plug( + OAuthScopesPlug, + %{scopes: ["read:statuses"], fallback: :proceed_unauthenticated} + when action in [:public, :hashtag] + ) + + plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:public, :hashtag]) plug(:put_view, Pleroma.Web.MastodonAPI.StatusView) @@ -93,7 +100,9 @@ def public(%{assigns: %{user: user}} = conn, params) do restrict? = Pleroma.Config.get([:restrict_unauthenticated, :timelines, cfg_key]) - if not (restrict? and is_nil(user)) do + if restrict? and is_nil(user) do + render_error(conn, :unauthorized, "authorization required for timeline view") + else activities = params |> Map.put("type", ["Create", "Announce"]) @@ -110,12 +119,10 @@ def public(%{assigns: %{user: user}} = conn, params) do as: :activity, skip_relationships: skip_relationships?(params) ) - else - render_error(conn, :unauthorized, "authorization required for timeline view") end end - def hashtag_fetching(params, user, local_only) do + defp hashtag_fetching(params, user, local_only) do tags = [params["tag"], params["any"]] |> List.flatten() diff --git a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex index 7a65697e8..2c1874051 100644 --- a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex @@ -26,6 +26,12 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do when action in [:conversation, :conversation_statuses] ) + plug( + OAuthScopesPlug, + %{scopes: ["read:statuses"], fallback: :proceed_unauthenticated} + when action == :emoji_reactions_by + ) + plug( OAuthScopesPlug, %{scopes: ["write:statuses"]} diff --git a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex index c81e8535e..22da6c0ad 100644 --- a/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex @@ -13,7 +13,11 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleController do alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.StatusView - plug(OAuthScopesPlug, %{scopes: ["read"]} when action == :user_scrobbles) + plug( + OAuthScopesPlug, + %{scopes: ["read"], fallback: :proceed_unauthenticated} when action == :user_scrobbles + ) + plug(OAuthScopesPlug, %{scopes: ["write"]} when action != :user_scrobbles) def new_scrobble(%{assigns: %{user: user}} = conn, %{"title" => _} = params) do diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 04c1c5941..db158d366 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -312,14 +312,10 @@ defmodule Pleroma.Web.Router do post("/scrobble", ScrobbleController, :new_scrobble) end - scope [] do - pipe_through(:api) - get("/accounts/:id/favourites", AccountController, :favourites) - end - scope [] do pipe_through(:authenticated_api) + get("/accounts/:id/favourites", AccountController, :favourites) post("/accounts/:id/subscribe", AccountController, :subscribe) post("/accounts/:id/unsubscribe", AccountController, :unsubscribe) end @@ -353,6 +349,8 @@ defmodule Pleroma.Web.Router do post("/accounts/:id/mute", AccountController, :mute) post("/accounts/:id/unmute", AccountController, :unmute) + get("/apps/verify_credentials", AppController, :verify_credentials) + get("/conversations", ConversationController, :index) post("/conversations/:id/read", ConversationController, :mark_as_read) @@ -431,6 +429,7 @@ defmodule Pleroma.Web.Router do get("/timelines/home", TimelineController, :home) get("/timelines/direct", TimelineController, :direct) + get("/timelines/list/:list_id", TimelineController, :list) end scope "/api/web", Pleroma.Web do @@ -442,15 +441,24 @@ defmodule Pleroma.Web.Router do scope "/api/v1", Pleroma.Web.MastodonAPI do pipe_through(:api) - post("/accounts", AccountController, :create) get("/accounts/search", SearchController, :account_search) + get("/search", SearchController, :search) + + get("/accounts/:id/statuses", AccountController, :statuses) + get("/accounts/:id/followers", AccountController, :followers) + get("/accounts/:id/following", AccountController, :following) + get("/accounts/:id", AccountController, :show) + + post("/accounts", AccountController, :create) get("/instance", InstanceController, :show) get("/instance/peers", InstanceController, :peers) post("/apps", AppController, :create) - get("/apps/verify_credentials", AppController, :verify_credentials) + get("/statuses", StatusController, :index) + get("/statuses/:id", StatusController, :show) + get("/statuses/:id/context", StatusController, :context) get("/statuses/:id/card", StatusController, :card) get("/statuses/:id/favourited_by", StatusController, :favourited_by) get("/statuses/:id/reblogged_by", StatusController, :reblogged_by) @@ -461,20 +469,8 @@ defmodule Pleroma.Web.Router do get("/timelines/public", TimelineController, :public) get("/timelines/tag/:tag", TimelineController, :hashtag) - get("/timelines/list/:list_id", TimelineController, :list) - - get("/statuses", StatusController, :index) - get("/statuses/:id", StatusController, :show) - get("/statuses/:id/context", StatusController, :context) get("/polls/:id", PollController, :show) - - get("/accounts/:id/statuses", AccountController, :statuses) - get("/accounts/:id/followers", AccountController, :followers) - get("/accounts/:id/following", AccountController, :following) - get("/accounts/:id", AccountController, :show) - - get("/search", SearchController, :search) end scope "/api/v2", Pleroma.Web.MastodonAPI do diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 55228616a..e4f182b02 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do %{scopes: ["write:notifications"]} when action == :mark_notifications_as_read ) - plug(:skip_plug, OAuthScopesPlug when action in [:oauth_tokens, :revoke_token]) + plug(:skip_plug, OAuthScopesPlug when action in [:confirm_email, :oauth_tokens, :revoke_token]) action_fallback(:errors) @@ -47,13 +47,13 @@ def revoke_token(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do json_reply(conn, 201, "") end - def errors(conn, {:param_cast, _}) do + defp errors(conn, {:param_cast, _}) do conn |> put_status(400) |> json("Invalid parameters") end - def errors(conn, _) do + defp errors(conn, _) do conn |> put_status(500) |> json("Something went wrong") diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web/web.ex index ec04c05f0..e2416fb2e 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web/web.ex @@ -67,13 +67,25 @@ defp skip_plug(conn, plug_modules) do # Executed just before actual controller action, invokes before-action hooks (callbacks) defp action(conn, params) do - with %Plug.Conn{halted: false} <- maybe_perform_public_or_authenticated_check(conn), + with %Plug.Conn{halted: false} <- maybe_drop_authentication_if_oauth_check_ignored(conn), + %Plug.Conn{halted: false} <- maybe_perform_public_or_authenticated_check(conn), %Plug.Conn{halted: false} <- maybe_perform_authenticated_check(conn), %Plug.Conn{halted: false} <- maybe_halt_on_missing_oauth_scopes_check(conn) do super(conn, params) end end + # For non-authenticated API actions, drops auth info if OAuth scopes check was ignored + # (neither performed nor explicitly skipped) + defp maybe_drop_authentication_if_oauth_check_ignored(conn) do + if PlugHelper.plug_called?(conn, ExpectPublicOrAuthenticatedCheckPlug) and + not PlugHelper.plug_called_or_skipped?(conn, OAuthScopesPlug) do + OAuthScopesPlug.drop_auth_info(conn) + else + conn + end + end + # Ensures instance is public -or- user is authenticated if such check was scheduled defp maybe_perform_public_or_authenticated_check(conn) do if PlugHelper.plug_called?(conn, ExpectPublicOrAuthenticatedCheckPlug) do From 1b06a27746ccbbdec77b7bc1571783a64ade4431 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 22 Apr 2020 20:20:19 +0400 Subject: [PATCH 091/137] Update Flake ID description --- docs/API/differences_in_mastoapi_responses.md | 2 +- lib/pleroma/web/api_spec/schemas/flake_id.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index 1059155cf..62725edb4 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -4,7 +4,7 @@ A Pleroma instance can be identified by " (compatible; Pleroma ## Flake IDs -Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are sortable strings +Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are lexically sortable strings ## Attachment cap diff --git a/lib/pleroma/web/api_spec/schemas/flake_id.ex b/lib/pleroma/web/api_spec/schemas/flake_id.ex index b8e03b8a1..3b5f6477a 100644 --- a/lib/pleroma/web/api_spec/schemas/flake_id.ex +++ b/lib/pleroma/web/api_spec/schemas/flake_id.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.FlakeID do OpenApiSpex.schema(%{ title: "FlakeID", description: - "Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are sortable strings", + "Pleroma uses 128-bit ids as opposed to Mastodon's 64 bits. However just like Mastodon's ids they are lexically sortable strings", type: :string }) end From e62173dfc8b739508345b7ab97477ae04fcdb457 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 18:40:53 +0200 Subject: [PATCH 092/137] SideEffects: Run in transaction. This fixes race conditions. --- lib/pleroma/web/activity_pub/side_effects.ex | 11 +++++--- test/web/common_api/common_api_test.exs | 27 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 6a8f1af96..a0f71fd88 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -15,12 +15,15 @@ def handle(object, meta \\ []) # - Add like to object # - Set up notification def handle(%{data: %{"type" => "Like"}} = object, meta) do - liked_object = Object.get_by_ap_id(object.data["object"]) - Utils.add_like_to_object(object, liked_object) + Pleroma.Repo.transaction(fn -> + liked_object = Object.get_by_ap_id(object.data["object"]) + Utils.add_like_to_object(object, liked_object) - Notification.create_notifications(object) + Notification.create_notifications(object) - {:ok, object, meta} + {:ok, object, meta} + end) + |> (fn {:ok, res} -> res end).() end # Nothing to do diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index e130736ec..68a29108a 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -21,6 +21,33 @@ defmodule Pleroma.Web.CommonAPITest do setup do: clear_config([:instance, :limit]) setup do: clear_config([:instance, :max_pinned_statuses]) + test "favoriting race condition" do + user = insert(:user) + users_serial = insert_list(10, :user) + users = insert_list(10, :user) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "."}) + + users_serial + |> Enum.map(fn user -> + CommonAPI.favorite(user, activity.id) + end) + + object = Object.get_by_ap_id(activity.data["object"]) + assert object.data["like_count"] == 10 + + users + |> Enum.map(fn user -> + Task.async(fn -> + CommonAPI.favorite(user, activity.id) + end) + end) + |> Enum.map(&Task.await/1) + + object = Object.get_by_ap_id(activity.data["object"]) + assert object.data["like_count"] == 20 + end + test "when replying to a conversation / participation, it will set the correct context id even if no explicit reply_to is given" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) From f5bda09de648a6de3151c8614005ebc70447facb Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 19:02:22 +0200 Subject: [PATCH 093/137] Stats: Use `invisible` property for filtering. --- lib/pleroma/stats.ex | 3 +-- test/stats_test.exs | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 6763786a7..8d2809bbb 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -82,8 +82,7 @@ def calculate_stat_data do where: u.deactivated != true, where: u.local == true, where: not is_nil(u.nickname), - where: fragment("? not like 'internal.%'", u.nickname), - where: fragment("? not like '%/relay'", u.ap_id) + where: not u.invisible ) user_count = Repo.aggregate(users_query, :count, :id) diff --git a/test/stats_test.exs b/test/stats_test.exs index 73c7c1495..c1aeb2c7f 100644 --- a/test/stats_test.exs +++ b/test/stats_test.exs @@ -11,7 +11,6 @@ defmodule Pleroma.StatsTest do test "it ignores internal users" do _user = insert(:user, local: true) _internal = insert(:user, local: true, nickname: nil) - _internal = insert(:user, local: true, nickname: "internal.dude") _internal = Pleroma.Web.ActivityPub.Relay.get_actor() assert match?(%{stats: %{user_count: 1}}, Pleroma.Stats.calculate_stat_data()) From 1bcbdc7a9f5df35f42d1ab331bc4b6785e180284 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 22 Apr 2020 21:21:21 +0200 Subject: [PATCH 094/137] SideEffects: Use less cryptic syntax. --- lib/pleroma/web/activity_pub/side_effects.ex | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index a0f71fd88..5981e7545 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -15,15 +15,17 @@ def handle(object, meta \\ []) # - Add like to object # - Set up notification def handle(%{data: %{"type" => "Like"}} = object, meta) do - Pleroma.Repo.transaction(fn -> - liked_object = Object.get_by_ap_id(object.data["object"]) - Utils.add_like_to_object(object, liked_object) + {:ok, result} = + Pleroma.Repo.transaction(fn -> + liked_object = Object.get_by_ap_id(object.data["object"]) + Utils.add_like_to_object(object, liked_object) - Notification.create_notifications(object) + Notification.create_notifications(object) - {:ok, object, meta} - end) - |> (fn {:ok, res} -> res end).() + {:ok, object, meta} + end) + + result end # Nothing to do From 7d38197894692306c940b55045b91d563e138284 Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 23 Apr 2020 13:33:30 +0200 Subject: [PATCH 095/137] CommonAPI: Don't make repeating announces possible --- lib/pleroma/web/common_api/common_api.ex | 23 +++++++++++-------- lib/pleroma/web/common_api/utils.ex | 18 --------------- test/web/common_api/common_api_test.exs | 18 ++++++++++++--- test/web/common_api/common_api_utils_test.exs | 20 ---------------- 4 files changed, 28 insertions(+), 51 deletions(-) diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index f50a909aa..d1efe0c36 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -86,8 +86,9 @@ def delete(activity_id, user) do end end - def repeat(id_or_ap_id, user, params \\ %{}) do - with {_, %Activity{} = activity} <- {:find_activity, get_by_id_or_ap_id(id_or_ap_id)}, + def repeat(id, user, params \\ %{}) do + with {_, %Activity{data: %{"type" => "Create"}} = activity} <- + {:find_activity, Activity.get_by_id(id)}, object <- Object.normalize(activity), announce_activity <- Utils.get_existing_announce(user.ap_id, object), public <- public_announce?(object, params) do @@ -102,8 +103,9 @@ def repeat(id_or_ap_id, user, params \\ %{}) do end end - def unrepeat(id_or_ap_id, user) do - with {_, %Activity{} = activity} <- {:find_activity, get_by_id_or_ap_id(id_or_ap_id)} do + def unrepeat(id, user) do + with {_, %Activity{data: %{"type" => "Create"}} = activity} <- + {:find_activity, Activity.get_by_id(id)} do object = Object.normalize(activity) ActivityPub.unannounce(user, object) else @@ -160,8 +162,9 @@ def favorite_helper(user, id) do end end - def unfavorite(id_or_ap_id, user) do - with {_, %Activity{} = activity} <- {:find_activity, get_by_id_or_ap_id(id_or_ap_id)} do + def unfavorite(id, user) do + with {_, %Activity{data: %{"type" => "Create"}} = activity} <- + {:find_activity, Activity.get_by_id(id)} do object = Object.normalize(activity) ActivityPub.unlike(user, object) else @@ -332,12 +335,12 @@ defp maybe_create_activity_expiration({:ok, activity}, %NaiveDateTime{} = expire defp maybe_create_activity_expiration(result, _), do: result - def pin(id_or_ap_id, %{ap_id: user_ap_id} = user) do + def pin(id, %{ap_id: user_ap_id} = user) do with %Activity{ actor: ^user_ap_id, data: %{"type" => "Create"}, object: %Object{data: %{"type" => object_type}} - } = activity <- get_by_id_or_ap_id(id_or_ap_id), + } = activity <- Activity.get_by_id_with_object(id), true <- object_type in ["Note", "Article", "Question"], true <- Visibility.is_public?(activity), {:ok, _user} <- User.add_pinnned_activity(user, activity) do @@ -348,8 +351,8 @@ def pin(id_or_ap_id, %{ap_id: user_ap_id} = user) do end end - def unpin(id_or_ap_id, user) do - with %Activity{} = activity <- get_by_id_or_ap_id(id_or_ap_id), + def unpin(id, user) do + with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id(id), {:ok, _user} <- User.remove_pinnned_activity(user, activity) do {:ok, activity} else diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 7eec5aa09..945e63e22 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -22,24 +22,6 @@ defmodule Pleroma.Web.CommonAPI.Utils do require Logger require Pleroma.Constants - # This is a hack for twidere. - def get_by_id_or_ap_id(id) do - activity = - with true <- FlakeId.flake_id?(id), - %Activity{} = activity <- Activity.get_by_id_with_object(id) do - activity - else - _ -> Activity.get_create_by_object_ap_id_with_object(id) - end - - activity && - if activity.data["type"] == "Create" do - activity - else - Activity.get_create_by_object_ap_id_with_object(activity.data["object"]) - end - end - def attachments_from_ids(%{"media_ids" => ids, "descriptions" => desc} = _) do attachments_from_ids_descs(ids, desc) end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 68a29108a..e87193c83 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -283,6 +283,16 @@ test "repeating a status" do {:ok, %Activity{}, _} = CommonAPI.repeat(activity.id, user) end + test "can't repeat a repeat" do + user = insert(:user) + other_user = insert(:user) + {:ok, activity} = CommonAPI.post(other_user, %{"status" => "cofe"}) + + {:ok, %Activity{} = announce, _} = CommonAPI.repeat(activity.id, other_user) + + refute match?({:ok, %Activity{}, _}, CommonAPI.repeat(announce.id, user)) + end + test "repeating a status privately" do user = insert(:user) other_user = insert(:user) @@ -312,8 +322,8 @@ test "retweeting a status twice returns the status" do other_user = insert(:user) {:ok, activity} = CommonAPI.post(other_user, %{"status" => "cofe"}) - {:ok, %Activity{} = activity, object} = CommonAPI.repeat(activity.id, user) - {:ok, ^activity, ^object} = CommonAPI.repeat(activity.id, user) + {:ok, %Activity{} = announce, object} = CommonAPI.repeat(activity.id, user) + {:ok, ^announce, ^object} = CommonAPI.repeat(activity.id, user) end test "favoriting a status twice returns ok, but without the like activity" do @@ -387,7 +397,9 @@ test "unpin status", %{user: user, activity: activity} do user = refresh_record(user) - assert {:ok, ^activity} = CommonAPI.unpin(activity.id, user) + id = activity.id + + assert match?({:ok, %{id: ^id}}, CommonAPI.unpin(activity.id, user)) user = refresh_record(user) diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index b21445fe9..18a3b3b87 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -335,26 +335,6 @@ test "for direct posts, a reply" do end end - describe "get_by_id_or_ap_id/1" do - test "get activity by id" do - activity = insert(:note_activity) - %Pleroma.Activity{} = note = Utils.get_by_id_or_ap_id(activity.id) - assert note.id == activity.id - end - - test "get activity by ap_id" do - activity = insert(:note_activity) - %Pleroma.Activity{} = note = Utils.get_by_id_or_ap_id(activity.data["object"]) - assert note.id == activity.id - end - - test "get activity by object when type isn't `Create` " do - activity = insert(:like_activity) - %Pleroma.Activity{} = like = Utils.get_by_id_or_ap_id(activity.id) - assert like.data["object"] == activity.data["object"] - end - end - describe "to_master_date/1" do test "removes microseconds from date (NaiveDateTime)" do assert Utils.to_masto_date(~N[2015-01-23 23:50:07.123]) == "2015-01-23T23:50:07.000Z" From 89f38d94c754d33736e2444859d6020b2147eaf7 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 23 Apr 2020 21:47:33 +0300 Subject: [PATCH 096/137] [#2409] Fixed before-action callback results persistence. --- lib/pleroma/web/web.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/web.ex b/lib/pleroma/web/web.ex index e2416fb2e..08e42a7e5 100644 --- a/lib/pleroma/web/web.ex +++ b/lib/pleroma/web/web.ex @@ -67,10 +67,10 @@ defp skip_plug(conn, plug_modules) do # Executed just before actual controller action, invokes before-action hooks (callbacks) defp action(conn, params) do - with %Plug.Conn{halted: false} <- maybe_drop_authentication_if_oauth_check_ignored(conn), - %Plug.Conn{halted: false} <- maybe_perform_public_or_authenticated_check(conn), - %Plug.Conn{halted: false} <- maybe_perform_authenticated_check(conn), - %Plug.Conn{halted: false} <- maybe_halt_on_missing_oauth_scopes_check(conn) do + with %{halted: false} = conn <- maybe_drop_authentication_if_oauth_check_ignored(conn), + %{halted: false} = conn <- maybe_perform_public_or_authenticated_check(conn), + %{halted: false} = conn <- maybe_perform_authenticated_check(conn), + %{halted: false} = conn <- maybe_halt_on_missing_oauth_scopes_check(conn) do super(conn, params) end end From f362836742aabd5b60b92c1296f2bbb6d83a3d59 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Fri, 24 Apr 2020 14:46:59 +0400 Subject: [PATCH 097/137] Support validation for inline OpenAPI schema and automatic tests for examples --- .../web/api_spec/operations/app_operation.ex | 60 +++++++++++++++++-- .../operations/custom_emoji_operation.ex | 40 ++++++++++++- .../operations/domain_block_operation.ex | 31 ++++++++-- .../api_spec/schemas/app_create_request.ex | 33 ---------- .../api_spec/schemas/app_create_response.ex | 33 ---------- .../schemas/custom_emojis_response.ex | 42 ------------- .../api_spec/schemas/domain_block_request.ex | 20 ------- .../schemas/domain_blocks_response.ex | 16 ----- lib/pleroma/web/oauth/scopes.ex | 6 +- test/support/api_spec_helpers.ex | 57 ++++++++++++++++++ test/support/conn_case.ex | 36 +++++++++++ test/web/api_spec/app_operation_test.exs | 45 -------------- test/web/api_spec/schema_examples_test.exs | 43 +++++++++++++ .../controllers/app_controller_test.exs | 4 +- .../custom_emoji_controller_test.exs | 17 +----- .../domain_block_controller_test.exs | 28 +++------ 16 files changed, 267 insertions(+), 244 deletions(-) delete mode 100644 lib/pleroma/web/api_spec/schemas/app_create_request.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/app_create_response.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/domain_block_request.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/domain_blocks_response.ex create mode 100644 test/support/api_spec_helpers.ex delete mode 100644 test/web/api_spec/app_operation_test.exs create mode 100644 test/web/api_spec/schema_examples_test.exs diff --git a/lib/pleroma/web/api_spec/operations/app_operation.ex b/lib/pleroma/web/api_spec/operations/app_operation.ex index 26d8dbd42..035ef2470 100644 --- a/lib/pleroma/web/api_spec/operations/app_operation.ex +++ b/lib/pleroma/web/api_spec/operations/app_operation.ex @@ -6,8 +6,6 @@ defmodule Pleroma.Web.ApiSpec.AppOperation do alias OpenApiSpex.Operation alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Helpers - alias Pleroma.Web.ApiSpec.Schemas.AppCreateRequest - alias Pleroma.Web.ApiSpec.Schemas.AppCreateResponse @spec open_api_operation(atom) :: Operation.t() def open_api_operation(action) do @@ -22,9 +20,9 @@ def create_operation do summary: "Create an application", description: "Create a new application to obtain OAuth2 credentials", operationId: "AppController.create", - requestBody: Helpers.request_body("Parameters", AppCreateRequest, required: true), + requestBody: Helpers.request_body("Parameters", create_request(), required: true), responses: %{ - 200 => Operation.response("App", "application/json", AppCreateResponse), + 200 => Operation.response("App", "application/json", create_response()), 422 => Operation.response( "Unprocessable Entity", @@ -93,4 +91,58 @@ def verify_credentials_operation do } } end + + defp create_request do + %Schema{ + title: "AppCreateRequest", + description: "POST body for creating an app", + type: :object, + properties: %{ + client_name: %Schema{type: :string, description: "A name for your application."}, + redirect_uris: %Schema{ + type: :string, + description: + "Where the user should be redirected after authorization. To display the authorization code to the user instead of redirecting to a web page, use `urn:ietf:wg:oauth:2.0:oob` in this parameter." + }, + scopes: %Schema{ + type: :string, + description: "Space separated list of scopes", + default: "read" + }, + website: %Schema{type: :string, description: "A URL to the homepage of your app"} + }, + required: [:client_name, :redirect_uris], + example: %{ + "client_name" => "My App", + "redirect_uris" => "https://myapp.com/auth/callback", + "website" => "https://myapp.com/" + } + } + end + + defp create_response do + %Schema{ + title: "AppCreateResponse", + description: "Response schema for an app", + type: :object, + properties: %{ + id: %Schema{type: :string}, + name: %Schema{type: :string}, + client_id: %Schema{type: :string}, + client_secret: %Schema{type: :string}, + redirect_uri: %Schema{type: :string}, + vapid_key: %Schema{type: :string}, + website: %Schema{type: :string, nullable: true} + }, + example: %{ + "id" => "123", + "name" => "My App", + "client_id" => "TWhM-tNSuncnqN7DBJmoyeLnk6K3iJJ71KKXxgL1hPM", + "client_secret" => "ZEaFUFmF0umgBX1qKJDjaU99Q31lDkOU8NutzTOoliw", + "vapid_key" => + "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M=", + "website" => "https://myapp.com/" + } + } + end end diff --git a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex index cf2215823..a117fe460 100644 --- a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex +++ b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex @@ -4,7 +4,8 @@ defmodule Pleroma.Web.ApiSpec.CustomEmojiOperation do alias OpenApiSpex.Operation - alias Pleroma.Web.ApiSpec.Schemas.CustomEmojisResponse + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji def open_api_operation(action) do operation = String.to_existing_atom("#{action}_operation") @@ -18,8 +19,43 @@ def index_operation do description: "Returns custom emojis that are available on the server.", operationId: "CustomEmojiController.index", responses: %{ - 200 => Operation.response("Custom Emojis", "application/json", CustomEmojisResponse) + 200 => Operation.response("Custom Emojis", "application/json", custom_emojis_resposnse()) } } end + + defp custom_emojis_resposnse do + %Schema{ + title: "CustomEmojisResponse", + description: "Response schema for custom emojis", + type: :array, + items: CustomEmoji, + example: [ + %{ + "category" => "Fun", + "shortcode" => "blank", + "static_url" => "https://lain.com/emoji/blank.png", + "tags" => ["Fun"], + "url" => "https://lain.com/emoji/blank.png", + "visible_in_picker" => false + }, + %{ + "category" => "Gif,Fun", + "shortcode" => "firefox", + "static_url" => "https://lain.com/emoji/Firefox.gif", + "tags" => ["Gif", "Fun"], + "url" => "https://lain.com/emoji/Firefox.gif", + "visible_in_picker" => true + }, + %{ + "category" => "pack:mixed", + "shortcode" => "sadcat", + "static_url" => "https://lain.com/emoji/mixed/sadcat.png", + "tags" => ["pack:mixed"], + "url" => "https://lain.com/emoji/mixed/sadcat.png", + "visible_in_picker" => true + } + ] + } + end end diff --git a/lib/pleroma/web/api_spec/operations/domain_block_operation.ex b/lib/pleroma/web/api_spec/operations/domain_block_operation.ex index dd14837c3..3b7f51ceb 100644 --- a/lib/pleroma/web/api_spec/operations/domain_block_operation.ex +++ b/lib/pleroma/web/api_spec/operations/domain_block_operation.ex @@ -6,8 +6,6 @@ defmodule Pleroma.Web.ApiSpec.DomainBlockOperation do alias OpenApiSpex.Operation alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Helpers - alias Pleroma.Web.ApiSpec.Schemas.DomainBlockRequest - alias Pleroma.Web.ApiSpec.Schemas.DomainBlocksResponse def open_api_operation(action) do operation = String.to_existing_atom("#{action}_operation") @@ -22,7 +20,13 @@ def index_operation do security: [%{"oAuth" => ["follow", "read:blocks"]}], operationId: "DomainBlockController.index", responses: %{ - 200 => Operation.response("Domain blocks", "application/json", DomainBlocksResponse) + 200 => + Operation.response("Domain blocks", "application/json", %Schema{ + description: "Response schema for domain blocks", + type: :array, + items: %Schema{type: :string}, + example: ["google.com", "facebook.com"] + }) } } end @@ -40,7 +44,7 @@ def create_operation do - prevent following new users from it (but does not remove existing follows) """, operationId: "DomainBlockController.create", - requestBody: Helpers.request_body("Parameters", DomainBlockRequest, required: true), + requestBody: domain_block_request(), security: [%{"oAuth" => ["follow", "write:blocks"]}], responses: %{ 200 => Operation.response("Empty object", "application/json", %Schema{type: :object}) @@ -54,11 +58,28 @@ def delete_operation do summary: "Unblock a domain", description: "Remove a domain block, if it exists in the user's array of blocked domains.", operationId: "DomainBlockController.delete", - requestBody: Helpers.request_body("Parameters", DomainBlockRequest, required: true), + requestBody: domain_block_request(), security: [%{"oAuth" => ["follow", "write:blocks"]}], responses: %{ 200 => Operation.response("Empty object", "application/json", %Schema{type: :object}) } } end + + defp domain_block_request do + Helpers.request_body( + "Parameters", + %Schema{ + type: :object, + properties: %{ + domain: %Schema{type: :string} + }, + required: [:domain] + }, + required: true, + example: %{ + "domain" => "facebook.com" + } + ) + end end diff --git a/lib/pleroma/web/api_spec/schemas/app_create_request.ex b/lib/pleroma/web/api_spec/schemas/app_create_request.ex deleted file mode 100644 index 8a83abef3..000000000 --- a/lib/pleroma/web/api_spec/schemas/app_create_request.ex +++ /dev/null @@ -1,33 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AppCreateRequest do - alias OpenApiSpex.Schema - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AppCreateRequest", - description: "POST body for creating an app", - type: :object, - properties: %{ - client_name: %Schema{type: :string, description: "A name for your application."}, - redirect_uris: %Schema{ - type: :string, - description: - "Where the user should be redirected after authorization. To display the authorization code to the user instead of redirecting to a web page, use `urn:ietf:wg:oauth:2.0:oob` in this parameter." - }, - scopes: %Schema{ - type: :string, - description: "Space separated list of scopes. If none is provided, defaults to `read`." - }, - website: %Schema{type: :string, description: "A URL to the homepage of your app"} - }, - required: [:client_name, :redirect_uris], - example: %{ - "client_name" => "My App", - "redirect_uris" => "https://myapp.com/auth/callback", - "website" => "https://myapp.com/" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/app_create_response.ex b/lib/pleroma/web/api_spec/schemas/app_create_response.ex deleted file mode 100644 index f290fb031..000000000 --- a/lib/pleroma/web/api_spec/schemas/app_create_response.ex +++ /dev/null @@ -1,33 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AppCreateResponse do - alias OpenApiSpex.Schema - - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AppCreateResponse", - description: "Response schema for an app", - type: :object, - properties: %{ - id: %Schema{type: :string}, - name: %Schema{type: :string}, - client_id: %Schema{type: :string}, - client_secret: %Schema{type: :string}, - redirect_uri: %Schema{type: :string}, - vapid_key: %Schema{type: :string}, - website: %Schema{type: :string, nullable: true} - }, - example: %{ - "id" => "123", - "name" => "My App", - "client_id" => "TWhM-tNSuncnqN7DBJmoyeLnk6K3iJJ71KKXxgL1hPM", - "client_secret" => "ZEaFUFmF0umgBX1qKJDjaU99Q31lDkOU8NutzTOoliw", - "vapid_key" => - "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M=", - "website" => "https://myapp.com/" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex b/lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex deleted file mode 100644 index 01582a63d..000000000 --- a/lib/pleroma/web/api_spec/schemas/custom_emojis_response.ex +++ /dev/null @@ -1,42 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.CustomEmojisResponse do - alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji - - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "CustomEmojisResponse", - description: "Response schema for custom emojis", - type: :array, - items: CustomEmoji, - example: [ - %{ - "category" => "Fun", - "shortcode" => "blank", - "static_url" => "https://lain.com/emoji/blank.png", - "tags" => ["Fun"], - "url" => "https://lain.com/emoji/blank.png", - "visible_in_picker" => true - }, - %{ - "category" => "Gif,Fun", - "shortcode" => "firefox", - "static_url" => "https://lain.com/emoji/Firefox.gif", - "tags" => ["Gif", "Fun"], - "url" => "https://lain.com/emoji/Firefox.gif", - "visible_in_picker" => true - }, - %{ - "category" => "pack:mixed", - "shortcode" => "sadcat", - "static_url" => "https://lain.com/emoji/mixed/sadcat.png", - "tags" => ["pack:mixed"], - "url" => "https://lain.com/emoji/mixed/sadcat.png", - "visible_in_picker" => true - } - ] - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/domain_block_request.ex b/lib/pleroma/web/api_spec/schemas/domain_block_request.ex deleted file mode 100644 index ee9238361..000000000 --- a/lib/pleroma/web/api_spec/schemas/domain_block_request.ex +++ /dev/null @@ -1,20 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.DomainBlockRequest do - alias OpenApiSpex.Schema - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "DomainBlockRequest", - type: :object, - properties: %{ - domain: %Schema{type: :string} - }, - required: [:domain], - example: %{ - "domain" => "facebook.com" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/domain_blocks_response.ex b/lib/pleroma/web/api_spec/schemas/domain_blocks_response.ex deleted file mode 100644 index d895aca4e..000000000 --- a/lib/pleroma/web/api_spec/schemas/domain_blocks_response.ex +++ /dev/null @@ -1,16 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.DomainBlocksResponse do - require OpenApiSpex - alias OpenApiSpex.Schema - - OpenApiSpex.schema(%{ - title: "DomainBlocksResponse", - description: "Response schema for domain blocks", - type: :array, - items: %Schema{type: :string}, - example: ["google.com", "facebook.com"] - }) -end diff --git a/lib/pleroma/web/oauth/scopes.ex b/lib/pleroma/web/oauth/scopes.ex index 1023f16d4..6f06f1431 100644 --- a/lib/pleroma/web/oauth/scopes.ex +++ b/lib/pleroma/web/oauth/scopes.ex @@ -17,12 +17,8 @@ defmodule Pleroma.Web.OAuth.Scopes do """ @spec fetch_scopes(map() | struct(), list()) :: list() - def fetch_scopes(%Pleroma.Web.ApiSpec.Schemas.AppCreateRequest{scopes: scopes}, default) do - parse_scopes(scopes, default) - end - def fetch_scopes(params, default) do - parse_scopes(params["scope"] || params["scopes"], default) + parse_scopes(params["scope"] || params["scopes"] || params[:scopes], default) end def parse_scopes(scopes, _default) when is_list(scopes) do diff --git a/test/support/api_spec_helpers.ex b/test/support/api_spec_helpers.ex new file mode 100644 index 000000000..80c69c788 --- /dev/null +++ b/test/support/api_spec_helpers.ex @@ -0,0 +1,57 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Tests.ApiSpecHelpers do + @moduledoc """ + OpenAPI spec test helpers + """ + + import ExUnit.Assertions + + alias OpenApiSpex.Cast.Error + alias OpenApiSpex.Reference + alias OpenApiSpex.Schema + + def assert_schema(value, schema) do + api_spec = Pleroma.Web.ApiSpec.spec() + + case OpenApiSpex.cast_value(value, schema, api_spec) do + {:ok, data} -> + data + + {:error, errors} -> + errors = + Enum.map(errors, fn error -> + message = Error.message(error) + path = Error.path_to_string(error) + "#{message} at #{path}" + end) + + flunk( + "Value does not conform to schema #{schema.title}: #{Enum.join(errors, "\n")}\n#{ + inspect(value) + }" + ) + end + end + + def resolve_schema(%Schema{} = schema), do: schema + + def resolve_schema(%Reference{} = ref) do + schemas = Pleroma.Web.ApiSpec.spec().components.schemas + Reference.resolve_schema(ref, schemas) + end + + def api_operations do + paths = Pleroma.Web.ApiSpec.spec().paths + + Enum.flat_map(paths, fn {_, path_item} -> + path_item + |> Map.take([:delete, :get, :head, :options, :patch, :post, :put, :trace]) + |> Map.values() + |> Enum.reject(&is_nil/1) + |> Enum.uniq() + end) + end +end diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 064874201..781622476 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -51,6 +51,42 @@ defp oauth_access(scopes, opts \\ []) do %{user: user, token: token, conn: conn} end + defp json_response_and_validate_schema(conn, status \\ nil) do + content_type = + conn + |> Plug.Conn.get_resp_header("content-type") + |> List.first() + |> String.split(";") + |> List.first() + + status = status || conn.status + + %{private: %{open_api_spex: %{operation_id: op_id, operation_lookup: lookup, spec: spec}}} = + conn + + schema = lookup[op_id].responses[status].content[content_type].schema + json = json_response(conn, status) + + case OpenApiSpex.cast_value(json, schema, spec) do + {:ok, _data} -> + json + + {:error, errors} -> + errors = + Enum.map(errors, fn error -> + message = OpenApiSpex.Cast.Error.message(error) + path = OpenApiSpex.Cast.Error.path_to_string(error) + "#{message} at #{path}" + end) + + flunk( + "Response does not conform to schema of #{op_id} operation: #{ + Enum.join(errors, "\n") + }\n#{inspect(json)}" + ) + end + end + defp ensure_federating_or_authenticated(conn, url, user) do initial_setting = Config.get([:instance, :federating]) on_exit(fn -> Config.put([:instance, :federating], initial_setting) end) diff --git a/test/web/api_spec/app_operation_test.exs b/test/web/api_spec/app_operation_test.exs deleted file mode 100644 index 5b96abb44..000000000 --- a/test/web/api_spec/app_operation_test.exs +++ /dev/null @@ -1,45 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.AppOperationTest do - use Pleroma.Web.ConnCase, async: true - - alias Pleroma.Web.ApiSpec - alias Pleroma.Web.ApiSpec.Schemas.AppCreateRequest - alias Pleroma.Web.ApiSpec.Schemas.AppCreateResponse - - import OpenApiSpex.TestAssertions - import Pleroma.Factory - - test "AppCreateRequest example matches schema" do - api_spec = ApiSpec.spec() - schema = AppCreateRequest.schema() - assert_schema(schema.example, "AppCreateRequest", api_spec) - end - - test "AppCreateResponse example matches schema" do - api_spec = ApiSpec.spec() - schema = AppCreateResponse.schema() - assert_schema(schema.example, "AppCreateResponse", api_spec) - end - - test "AppController produces a AppCreateResponse", %{conn: conn} do - api_spec = ApiSpec.spec() - app_attrs = build(:oauth_app) - - json = - conn - |> put_req_header("content-type", "application/json") - |> post( - "/api/v1/apps", - Jason.encode!(%{ - client_name: app_attrs.client_name, - redirect_uris: app_attrs.redirect_uris - }) - ) - |> json_response(200) - - assert_schema(json, "AppCreateResponse", api_spec) - end -end diff --git a/test/web/api_spec/schema_examples_test.exs b/test/web/api_spec/schema_examples_test.exs new file mode 100644 index 000000000..88b6f07cb --- /dev/null +++ b/test/web/api_spec/schema_examples_test.exs @@ -0,0 +1,43 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.SchemaExamplesTest do + use ExUnit.Case, async: true + import Pleroma.Tests.ApiSpecHelpers + + @content_type "application/json" + + for operation <- api_operations() do + describe operation.operationId <> " Request Body" do + if operation.requestBody do + @media_type operation.requestBody.content[@content_type] + @schema resolve_schema(@media_type.schema) + + if @media_type.example do + test "request body media type example matches schema" do + assert_schema(@media_type.example, @schema) + end + end + + if @schema.example do + test "request body schema example matches schema" do + assert_schema(@schema.example, @schema) + end + end + end + end + + for {status, response} <- operation.responses do + describe "#{operation.operationId} - #{status} Response" do + @schema resolve_schema(response.content[@content_type].schema) + + if @schema.example do + test "example matches schema" do + assert_schema(@schema.example, @schema) + end + end + end + end + end +end diff --git a/test/web/mastodon_api/controllers/app_controller_test.exs b/test/web/mastodon_api/controllers/app_controller_test.exs index e7b11d14e..a0b8b126c 100644 --- a/test/web/mastodon_api/controllers/app_controller_test.exs +++ b/test/web/mastodon_api/controllers/app_controller_test.exs @@ -27,7 +27,7 @@ test "apps/verify_credentials", %{conn: conn} do "vapid_key" => Push.vapid_config() |> Keyword.get(:public_key) } - assert expected == json_response(conn, 200) + assert expected == json_response_and_validate_schema(conn, 200) end test "creates an oauth app", %{conn: conn} do @@ -55,6 +55,6 @@ test "creates an oauth app", %{conn: conn} do "vapid_key" => Push.vapid_config() |> Keyword.get(:public_key) } - assert expected == json_response(conn, 200) + assert expected == json_response_and_validate_schema(conn, 200) end end diff --git a/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs b/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs index 0b2ffa470..4222556a4 100644 --- a/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs +++ b/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs @@ -5,15 +5,13 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiControllerTest do use Pleroma.Web.ConnCase, async: true alias Pleroma.Web.ApiSpec - alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji - alias Pleroma.Web.ApiSpec.Schemas.CustomEmojisResponse import OpenApiSpex.TestAssertions test "with tags", %{conn: conn} do assert resp = conn |> get("/api/v1/custom_emojis") - |> json_response(200) + |> json_response_and_validate_schema(200) assert [emoji | _body] = resp assert Map.has_key?(emoji, "shortcode") @@ -23,19 +21,6 @@ test "with tags", %{conn: conn} do assert Map.has_key?(emoji, "category") assert Map.has_key?(emoji, "url") assert Map.has_key?(emoji, "visible_in_picker") - assert_schema(resp, "CustomEmojisResponse", ApiSpec.spec()) assert_schema(emoji, "CustomEmoji", ApiSpec.spec()) end - - test "CustomEmoji example matches schema" do - api_spec = ApiSpec.spec() - schema = CustomEmoji.schema() - assert_schema(schema.example, "CustomEmoji", api_spec) - end - - test "CustomEmojisResponse example matches schema" do - api_spec = ApiSpec.spec() - schema = CustomEmojisResponse.schema() - assert_schema(schema.example, "CustomEmojisResponse", api_spec) - end end diff --git a/test/web/mastodon_api/controllers/domain_block_controller_test.exs b/test/web/mastodon_api/controllers/domain_block_controller_test.exs index d66190c90..01a24afcf 100644 --- a/test/web/mastodon_api/controllers/domain_block_controller_test.exs +++ b/test/web/mastodon_api/controllers/domain_block_controller_test.exs @@ -6,11 +6,8 @@ defmodule Pleroma.Web.MastodonAPI.DomainBlockControllerTest do use Pleroma.Web.ConnCase alias Pleroma.User - alias Pleroma.Web.ApiSpec - alias Pleroma.Web.ApiSpec.Schemas.DomainBlocksResponse import Pleroma.Factory - import OpenApiSpex.TestAssertions test "blocking / unblocking a domain" do %{user: user, conn: conn} = oauth_access(["write:blocks"]) @@ -21,7 +18,7 @@ test "blocking / unblocking a domain" do |> put_req_header("content-type", "application/json") |> post("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"}) - assert %{} = json_response(ret_conn, 200) + assert %{} == json_response_and_validate_schema(ret_conn, 200) user = User.get_cached_by_ap_id(user.ap_id) assert User.blocks?(user, other_user) @@ -30,7 +27,7 @@ test "blocking / unblocking a domain" do |> put_req_header("content-type", "application/json") |> delete("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"}) - assert %{} = json_response(ret_conn, 200) + assert %{} == json_response_and_validate_schema(ret_conn, 200) user = User.get_cached_by_ap_id(user.ap_id) refute User.blocks?(user, other_user) end @@ -41,21 +38,10 @@ test "getting a list of domain blocks" do {:ok, user} = User.block_domain(user, "bad.site") {:ok, user} = User.block_domain(user, "even.worse.site") - conn = - conn - |> assign(:user, user) - |> get("/api/v1/domain_blocks") - - domain_blocks = json_response(conn, 200) - - assert "bad.site" in domain_blocks - assert "even.worse.site" in domain_blocks - assert_schema(domain_blocks, "DomainBlocksResponse", ApiSpec.spec()) - end - - test "DomainBlocksResponse example matches schema" do - api_spec = ApiSpec.spec() - schema = DomainBlocksResponse.schema() - assert_schema(schema.example, "DomainBlocksResponse", api_spec) + assert ["even.worse.site", "bad.site"] == + conn + |> assign(:user, user) + |> get("/api/v1/domain_blocks") + |> json_response_and_validate_schema(200) end end From bbf8554c975ea1ba9b5c809a7891ec0fb4a8e537 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 24 Apr 2020 13:48:13 +0200 Subject: [PATCH 098/137] ActivitPub: Remove `like` function. We don't need another way to build likes. --- lib/pleroma/web/activity_pub/activity_pub.ex | 30 -------- .../activity_pub/activity_pub_controller.ex | 7 +- test/web/activity_pub/activity_pub_test.exs | 77 ++----------------- test/web/activity_pub/utils_test.exs | 5 +- 4 files changed, 15 insertions(+), 104 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 4a133498e..c67b3335d 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -398,36 +398,6 @@ defp do_unreact_with_emoji(user, reaction_id, options) do end end - # TODO: This is weird, maybe we shouldn't check here if we can make the activity. - @spec like(User.t(), Object.t(), String.t() | nil, boolean()) :: - {:ok, Activity.t(), Object.t()} | {:error, any()} - def like(user, object, activity_id \\ nil, local \\ true) do - with {:ok, result} <- Repo.transaction(fn -> do_like(user, object, activity_id, local) end) do - result - end - end - - defp do_like( - %User{ap_id: ap_id} = user, - %Object{data: %{"id" => _}} = object, - activity_id, - local - ) do - with nil <- get_existing_like(ap_id, object), - like_data <- make_like_data(user, object, activity_id), - {:ok, activity} <- insert(like_data, local), - {:ok, object} <- add_like_to_object(activity, object), - :ok <- maybe_federate(activity) do - {:ok, activity, object} - else - %Activity{} = activity -> - {:ok, activity, object} - - {:error, error} -> - Repo.rollback(error) - end - end - @spec unlike(User.t(), Object.t(), String.t() | nil, boolean()) :: {:ok, Activity.t(), Activity.t(), Object.t()} | {:ok, Object.t()} | {:error, any()} def unlike(%User{} = actor, %Object{} = object, activity_id \\ nil, local \\ true) do diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 8b9eb4a2c..325a714b4 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -12,6 +12,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do alias Pleroma.Plugs.EnsureAuthenticatedPlug alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Builder + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.InternalFetchActor alias Pleroma.Web.ActivityPub.ObjectView alias Pleroma.Web.ActivityPub.Relay @@ -421,7 +423,10 @@ defp handle_user_activity(%User{} = user, %{"type" => "Delete"} = params) do defp handle_user_activity(%User{} = user, %{"type" => "Like"} = params) do with %Object{} = object <- Object.normalize(params["object"]), - {:ok, activity, _object} <- ActivityPub.like(user, object) do + {_, {:ok, like_object, meta}} <- {:build_object, Builder.like(user, object)}, + {_, {:ok, %Activity{} = activity, _meta}} <- + {:common_pipeline, + Pipeline.common_pipeline(like_object, Keyword.put(meta, :local, true))} do {:ok, activity} else _ -> {:error, dgettext("errors", "Can't like object")} diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 6410df49b..53176917e 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -994,72 +994,6 @@ test "reverts emoji unreact on error" do end end - describe "like an object" do - test_with_mock "sends an activity to federation", Federator, [:passthrough], [] do - Config.put([:instance, :federating], true) - note_activity = insert(:note_activity) - assert object_activity = Object.normalize(note_activity) - - user = insert(:user) - - {:ok, like_activity, _object} = ActivityPub.like(user, object_activity) - assert called(Federator.publish(like_activity)) - end - - test "returns exist activity if object already liked" do - note_activity = insert(:note_activity) - assert object_activity = Object.normalize(note_activity) - - user = insert(:user) - - {:ok, like_activity, _object} = ActivityPub.like(user, object_activity) - - {:ok, like_activity_exist, _object} = ActivityPub.like(user, object_activity) - assert like_activity == like_activity_exist - end - - test "reverts like activity on error" do - note_activity = insert(:note_activity) - object = Object.normalize(note_activity) - user = insert(:user) - - with_mock(Utils, [:passthrough], maybe_federate: fn _ -> {:error, :reverted} end) do - assert {:error, :reverted} = ActivityPub.like(user, object) - end - - assert Repo.aggregate(Activity, :count, :id) == 1 - assert Repo.get(Object, object.id) == object - end - - test "adds a like activity to the db" do - note_activity = insert(:note_activity) - assert object = Object.normalize(note_activity) - - user = insert(:user) - user_two = insert(:user) - - {:ok, like_activity, object} = ActivityPub.like(user, object) - - assert like_activity.data["actor"] == user.ap_id - assert like_activity.data["type"] == "Like" - assert like_activity.data["object"] == object.data["id"] - assert like_activity.data["to"] == [User.ap_followers(user), note_activity.data["actor"]] - assert like_activity.data["context"] == object.data["context"] - assert object.data["like_count"] == 1 - assert object.data["likes"] == [user.ap_id] - - # Just return the original activity if the user already liked it. - {:ok, same_like_activity, object} = ActivityPub.like(user, object) - - assert like_activity == same_like_activity - assert object.data["likes"] == [user.ap_id] - assert object.data["like_count"] == 1 - - {:ok, _like_activity, object} = ActivityPub.like(user_two, object) - assert object.data["like_count"] == 2 - end - end - describe "unliking" do test_with_mock "sends an activity to federation", Federator, [:passthrough], [] do Config.put([:instance, :federating], true) @@ -1071,7 +1005,8 @@ test "adds a like activity to the db" do {:ok, object} = ActivityPub.unlike(user, object) refute called(Federator.publish()) - {:ok, _like_activity, object} = ActivityPub.like(user, object) + {:ok, _like_activity} = CommonAPI.favorite(user, note_activity.id) + object = Object.get_by_id(object.id) assert object.data["like_count"] == 1 {:ok, unlike_activity, _, object} = ActivityPub.unlike(user, object) @@ -1082,10 +1017,10 @@ test "adds a like activity to the db" do test "reverts unliking on error" do note_activity = insert(:note_activity) - object = Object.normalize(note_activity) user = insert(:user) - {:ok, like_activity, object} = ActivityPub.like(user, object) + {:ok, like_activity} = CommonAPI.favorite(user, note_activity.id) + object = Object.normalize(note_activity) assert object.data["like_count"] == 1 with_mock(Utils, [:passthrough], maybe_federate: fn _ -> {:error, :reverted} end) do @@ -1106,7 +1041,9 @@ test "unliking a previously liked object" do {:ok, object} = ActivityPub.unlike(user, object) assert object.data["like_count"] == 0 - {:ok, like_activity, object} = ActivityPub.like(user, object) + {:ok, like_activity} = CommonAPI.favorite(user, note_activity.id) + + object = Object.get_by_id(object.id) assert object.data["like_count"] == 1 {:ok, unlike_activity, _, object} = ActivityPub.unlike(user, object) diff --git a/test/web/activity_pub/utils_test.exs b/test/web/activity_pub/utils_test.exs index e913a5148..b0bfed917 100644 --- a/test/web/activity_pub/utils_test.exs +++ b/test/web/activity_pub/utils_test.exs @@ -224,8 +224,7 @@ test "fetches only Create activities" do object = Object.normalize(activity) {:ok, [vote], object} = CommonAPI.vote(other_user, object, [0]) - vote_object = Object.normalize(vote) - {:ok, _activity, _object} = ActivityPub.like(user, vote_object) + {:ok, _activity} = CommonAPI.favorite(user, activity.id) [fetched_vote] = Utils.get_existing_votes(other_user.ap_id, object) assert fetched_vote.id == vote.id end @@ -346,7 +345,7 @@ test "fetches existing like" do user = insert(:user) refute Utils.get_existing_like(user.ap_id, object) - {:ok, like_activity, _object} = ActivityPub.like(user, object) + {:ok, like_activity} = CommonAPI.favorite(user, note_activity.id) assert ^like_activity = Utils.get_existing_like(user.ap_id, object) end From 1df6af2a4c93257f94e2780e4317cfcf9bef7adb Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 24 Apr 2020 13:59:48 +0200 Subject: [PATCH 099/137] Credo fixes. --- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 325a714b4..d625530ec 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -13,9 +13,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder - alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.InternalFetchActor alias Pleroma.Web.ActivityPub.ObjectView + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.UserView From cb12585098e0cc1e2e85d253812e1898e8034b7f Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 24 Apr 2020 14:37:53 +0200 Subject: [PATCH 100/137] Announcements: Prevent race condition. --- lib/pleroma/web/activity_pub/activity_pub.ex | 1 + test/web/common_api/common_api_test.exs | 27 ++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index c67b3335d..4cce4f13c 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -438,6 +438,7 @@ def announce( defp do_announce(user, object, activity_id, local, public) do with true <- is_announceable?(object, user, public), + object <- Object.get_by_id(object.id), announce_data <- make_announce_data(user, object, activity_id, public), {:ok, activity} <- insert(announce_data, local), {:ok, object} <- add_announce_to_object(activity, object), diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index e87193c83..1758662b0 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -48,6 +48,33 @@ test "favoriting race condition" do assert object.data["like_count"] == 20 end + test "repeating race condition" do + user = insert(:user) + users_serial = insert_list(10, :user) + users = insert_list(10, :user) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "."}) + + users_serial + |> Enum.map(fn user -> + CommonAPI.repeat(activity.id, user) + end) + + object = Object.get_by_ap_id(activity.data["object"]) + assert object.data["announcement_count"] == 10 + + users + |> Enum.map(fn user -> + Task.async(fn -> + CommonAPI.repeat(activity.id, user) + end) + end) + |> Enum.map(&Task.await/1) + + object = Object.get_by_ap_id(activity.data["object"]) + assert object.data["announcement_count"] == 20 + end + test "when replying to a conversation / participation, it will set the correct context id even if no explicit reply_to is given" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) From 6e625a427cdc829714ad0365560d79aa4ee9c2e5 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 4 Dec 2019 09:49:17 +0300 Subject: [PATCH 101/137] reply filtering --- CHANGELOG.md | 1 + benchmarks/load_testing/fetcher.ex | 53 ++ docs/API/differences_in_mastoapi_responses.md | 2 +- lib/pleroma/user.ex | 14 + lib/pleroma/user/query.ex | 4 +- lib/pleroma/web/activity_pub/activity_pub.ex | 77 ++- lib/pleroma/web/common_api/activity_draft.ex | 16 +- .../controllers/timeline_controller.ex | 1 + test/web/activity_pub/activity_pub_test.exs | 486 ++++++++++++++++++ 9 files changed, 636 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 702c58180..affabcd95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). API Changes - Mastodon API: Support for `include_types` in `/api/v1/notifications`. - Mastodon API: Added `/api/v1/notifications/:id/dismiss` endpoint. +- Mastodon API: Add support for filtering replies in public and friends timelines - Admin API: endpoints for create/update/delete OAuth Apps.
diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex index 786929ace..3aa82b48a 100644 --- a/benchmarks/load_testing/fetcher.ex +++ b/benchmarks/load_testing/fetcher.ex @@ -495,4 +495,57 @@ defp render_long_thread(user) do formatters: formatters() ) end + + def query_replies(user) do + public_params = %{ + "type" => ["Create", "Announce"], + "local_only" => false, + "blocking_user" => user, + "muting_user" => user, + "count" => 20 + } + + Benchee.run(%{ + "Public timeline without reply filtering" => fn -> + ActivityPub.fetch_public_activities(public_params) + end, + "Public timeline with reply filtering - following" => fn -> + public_params + |> Map.put("reply_visibility", "following") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + end, + "Public timeline with reply filtering - self" => fn -> + public_params + |> Map.put("reply_visibility", "self") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + end + }) + + private_params = %{ + "type" => ["Create", "Announce"], + "blocking_user" => user, + "muting_user" => user, + "user" => user, + "count" => 20 + } + + recipients = [user.ap_id | User.following(user)] + + Benchee.run(%{ + "Home timeline without reply filtering" => fn -> + ActivityPub.fetch_activities(recipients, private_params) + end, + "Home timeline with reply filtering - following" => fn -> + private_params = Map.put(private_params, "reply_visibility", "following") + + ActivityPub.fetch_activities(recipients, private_params) + end, + "Home timeline with reply filtering - self" => fn -> + private_params = Map.put(private_params, "reply_visibility", "self") + ActivityPub.fetch_activities(recipients, private_params) + end + }) + end end diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index 1059155cf..c97fb8c56 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -14,7 +14,7 @@ Some apps operate under the assumption that no more than 4 attachments can be re Adding the parameter `with_muted=true` to the timeline queries will also return activities by muted (not by blocked!) users. Adding the parameter `exclude_visibilities` to the timeline queries will exclude the statuses with the given visibilities. The parameter accepts an array of visibility types (`public`, `unlisted`, `private`, `direct`), e.g., `exclude_visibilities[]=direct&exclude_visibilities[]=private`. - +Adding the parameter `reply_visibility` to the public and friends timelines quieries will filter replies. Possible values: without parameter (default) shows all replies, `following` - replies directed to you or users you follow, `self` - replies directed to you. ## Statuses - `visibility`: has an additional possible value `list` diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 477237756..b451202b2 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -832,6 +832,7 @@ def set_cache({:error, err}), do: {:error, err} def set_cache(%User{} = user) do Cachex.put(:user_cache, "ap_id:#{user.ap_id}", user) Cachex.put(:user_cache, "nickname:#{user.nickname}", user) + Cachex.put(:user_cache, "friends_ap_ids:#{user.nickname}", get_user_friends_ap_ids(user)) {:ok, user} end @@ -847,9 +848,22 @@ def update_and_set_cache(changeset) do end end + def get_user_friends_ap_ids(user) do + from(u in User.get_friends_query(user), select: u.ap_id) + |> Repo.all() + end + + @spec get_cached_user_friends_ap_ids(User.t()) :: [String.t()] + def get_cached_user_friends_ap_ids(user) do + Cachex.fetch!(:user_cache, "friends_ap_ids:#{user.ap_id}", fn _ -> + get_user_friends_ap_ids(user) + end) + end + def invalidate_cache(user) do Cachex.del(:user_cache, "ap_id:#{user.ap_id}") Cachex.del(:user_cache, "nickname:#{user.nickname}") + Cachex.del(:user_cache, "friends_ap_ids:#{user.ap_id}") end @spec get_cached_by_ap_id(String.t()) :: User.t() | nil diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index ec88088cf..ac77aab71 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -54,13 +54,13 @@ defmodule Pleroma.User.Query do select: term(), limit: pos_integer() } - | %{} + | map() @ilike_criteria [:nickname, :name, :query] @equal_criteria [:email] @contains_criteria [:ap_id, :nickname] - @spec build(criteria()) :: Query.t() + @spec build(Query.t(), criteria()) :: Query.t() def build(query \\ base_query(), criteria) do prepare_query(query, criteria) end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index c67b3335d..8b170b7f8 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -270,9 +270,9 @@ defp do_create(%{to: to, actor: actor, context: context, object: object} = param ), {:ok, activity} <- insert(create_data, local, fake), {:fake, false, activity} <- {:fake, fake, activity}, + {:quick_insert, false, activity} <- {:quick_insert, quick_insert?, activity}, _ <- increase_replies_count_if_reply(create_data), _ <- increase_poll_votes_if_vote(create_data), - {:quick_insert, false, activity} <- {:quick_insert, quick_insert?, activity}, {:ok, _actor} <- increase_note_count_if_public(actor, activity), :ok <- maybe_federate(activity) do {:ok, activity} @@ -700,12 +700,14 @@ def fetch_activities_for_context_query(context, opts) do do: [opts["user"].ap_id | User.following(opts["user"])] ++ public, else: public + opts = Map.put(opts, "user", opts["user"]) + from(activity in Activity) |> maybe_preload_objects(opts) |> maybe_preload_bookmarks(opts) |> maybe_set_thread_muted_field(opts) |> restrict_blocked(opts) - |> restrict_recipients(recipients, opts["user"]) + |> restrict_recipients(recipients, opts) |> where( [activity], fragment( @@ -740,7 +742,10 @@ def fetch_latest_activity_id_for_context(context, opts \\ %{}) do @spec fetch_public_activities(map(), Pagination.type()) :: [Activity.t()] def fetch_public_activities(opts \\ %{}, pagination \\ :keyset) do - opts = Map.drop(opts, ["user"]) + opts = + opts + |> Map.put("reply_user", opts["user"]) + |> Map.delete("user") [Constants.as_public()] |> fetch_activities_query(opts) @@ -976,13 +981,65 @@ defp restrict_tag(query, %{"tag" => tag}) when is_binary(tag) do defp restrict_tag(query, _), do: query - defp restrict_recipients(query, [], _user), do: query - - defp restrict_recipients(query, recipients, nil) do - from(activity in query, where: fragment("? && ?", ^recipients, activity.recipients)) + defp reply_recipients(user, "following") do + [user.ap_id | User.get_cached_user_friends_ap_ids(user)] end - defp restrict_recipients(query, recipients, user) do + defp reply_recipients(user, "self"), do: [user.ap_id] + + defp restrict_recipients(query, [], _opts), do: query + + defp restrict_recipients( + query, + recipients, + %{"user" => nil, "reply_user" => user, "reply_visibility" => visibility} + ) + when not is_nil(user) and visibility in ["following", "self"] do + reply_recipients = reply_recipients(user, visibility) + + from([activity, object] in query, + where: + fragment( + "? && ? AND (?->>'inReplyTo' IS NULL OR array_remove(?, ?) && ? OR ? = ?)", + ^recipients, + activity.recipients, + object.data, + activity.recipients, + activity.actor, + ^reply_recipients, + activity.actor, + ^user.ap_id + ) + ) + end + + defp restrict_recipients(query, recipients, %{"user" => nil}) do + from(activity in query, + where: fragment("? && ?", ^recipients, activity.recipients) + ) + end + + defp restrict_recipients(query, recipients, %{"user" => user, "reply_visibility" => visibility}) + when visibility in ["following", "self"] do + reply_recipients = reply_recipients(user, visibility) + + from( + [activity, object] in query, + where: + fragment( + "? && ? AND (?->>'inReplyTo' IS NULL OR array_remove(?, ?) && ?)", + ^recipients, + activity.recipients, + object.data, + activity.recipients, + activity.actor, + ^reply_recipients + ), + or_where: activity.actor == ^user.ap_id + ) + end + + defp restrict_recipients(query, recipients, %{"user" => user}) do from( activity in query, where: fragment("? && ?", ^recipients, activity.recipients), @@ -1254,13 +1311,15 @@ def fetch_activities_query(recipients, opts \\ %{}) do skip_thread_containment: Config.get([:instance, :skip_thread_containment]) } + opts = Map.put(opts, "user", opts["user"]) + Activity |> maybe_preload_objects(opts) |> maybe_preload_bookmarks(opts) |> maybe_preload_report_notes(opts) |> maybe_set_thread_muted_field(opts) |> maybe_order(opts) - |> restrict_recipients(recipients, opts["user"]) + |> restrict_recipients(recipients, opts) |> restrict_tag(opts) |> restrict_tag_reject(opts) |> restrict_tag_all(opts) diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex index c1cd15bb2..244cf2be5 100644 --- a/lib/pleroma/web/common_api/activity_draft.ex +++ b/lib/pleroma/web/common_api/activity_draft.ex @@ -84,14 +84,18 @@ defp attachments(%{params: params} = draft) do %__MODULE__{draft | attachments: attachments} end - defp in_reply_to(draft) do - case Map.get(draft.params, "in_reply_to_status_id") do - "" -> draft - nil -> draft - id -> %__MODULE__{draft | in_reply_to: Activity.get_by_id(id)} - end + defp in_reply_to(%{params: %{"in_reply_to_status_id" => ""}} = draft), do: draft + + defp in_reply_to(%{params: %{"in_reply_to_status_id" => id}} = draft) when is_binary(id) do + %__MODULE__{draft | in_reply_to: Activity.get_by_id(id)} end + defp in_reply_to(%{params: %{"in_reply_to_status_id" => %Activity{} = in_reply_to}} = draft) do + %__MODULE__{draft | in_reply_to: in_reply_to} + end + + defp in_reply_to(draft), do: draft + defp in_reply_to_conversation(draft) do in_reply_to_conversation = Participation.get(draft.params["in_reply_to_conversation_id"]) %__MODULE__{draft | in_reply_to_conversation: in_reply_to_conversation} diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index b3c58005e..a2ac9301e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -100,6 +100,7 @@ def public(%{assigns: %{user: user}} = conn, params) do |> Map.put("local_only", local_only) |> Map.put("blocking_user", user) |> Map.put("muting_user", user) + |> Map.put("user", user) |> ActivityPub.fetch_public_activities() conn diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 53176917e..8a1638a23 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1910,4 +1910,490 @@ test "old user must be in the new user's `also_known_as` list" do ActivityPub.move(old_user, new_user) end end + + test "doesn't retrieve replies activities with exclude_replies" do + user = insert(:user) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "yeah"}) + + {:ok, _reply} = + CommonAPI.post(user, %{"status" => "yeah", "in_reply_to_status_id" => activity.id}) + + [result] = ActivityPub.fetch_public_activities(%{"exclude_replies" => "true"}) + + assert result.id == activity.id + + assert length(ActivityPub.fetch_public_activities()) == 2 + end + + describe "replies filtering with public messages" do + setup :public_messages + + test "public timeline", %{users: %{u1: user}} do + activities_ids = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("local_only", false) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + |> Enum.map(& &1.id) + + assert length(activities_ids) == 16 + end + + test "public timeline with reply_visibility `following`", %{ + users: %{u1: user}, + u1: u1, + u2: u2, + u3: u3, + u4: u4, + activities: activities + } do + activities_ids = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("local_only", false) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("reply_visibility", "following") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + |> Enum.map(& &1.id) + + assert length(activities_ids) == 14 + + visible_ids = + Map.values(u1) ++ Map.values(u2) ++ Map.values(u4) ++ Map.values(activities) ++ [u3[:r1]] + + assert Enum.all?(visible_ids, &(&1 in activities_ids)) + end + + test "public timeline with reply_visibility `self`", %{ + users: %{u1: user}, + u1: u1, + u2: u2, + u3: u3, + u4: u4, + activities: activities + } do + activities_ids = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("local_only", false) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("reply_visibility", "self") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + |> Enum.map(& &1.id) + + assert length(activities_ids) == 10 + visible_ids = Map.values(u1) ++ [u2[:r1], u3[:r1], u4[:r1]] ++ Map.values(activities) + assert Enum.all?(visible_ids, &(&1 in activities_ids)) + end + + test "home timeline", %{ + users: %{u1: user}, + activities: activities, + u1: u1, + u2: u2, + u3: u3, + u4: u4 + } do + params = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + + activities_ids = + ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) + |> Enum.map(& &1.id) + + assert length(activities_ids) == 13 + + visible_ids = + Map.values(u1) ++ + Map.values(u3) ++ + [ + activities[:a1], + activities[:a2], + activities[:a4], + u2[:r1], + u2[:r3], + u4[:r1], + u4[:r2] + ] + + assert Enum.all?(visible_ids, &(&1 in activities_ids)) + end + + test "home timeline with reply_visibility `following`", %{ + users: %{u1: user}, + activities: activities, + u1: u1, + u2: u2, + u3: u3, + u4: u4 + } do + params = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> Map.put("reply_visibility", "following") + + activities_ids = + ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) + |> Enum.map(& &1.id) + + assert length(activities_ids) == 11 + + visible_ids = + Map.values(u1) ++ + [ + activities[:a1], + activities[:a2], + activities[:a4], + u2[:r1], + u2[:r3], + u3[:r1], + u4[:r1], + u4[:r2] + ] + + assert Enum.all?(visible_ids, &(&1 in activities_ids)) + end + + test "home timeline with reply_visibility `self`", %{ + users: %{u1: user}, + activities: activities, + u1: u1, + u2: u2, + u3: u3, + u4: u4 + } do + params = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> Map.put("reply_visibility", "self") + + activities_ids = + ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) + |> Enum.map(& &1.id) + + assert length(activities_ids) == 9 + + visible_ids = + Map.values(u1) ++ + [ + activities[:a1], + activities[:a2], + activities[:a4], + u2[:r1], + u3[:r1], + u4[:r1] + ] + + assert Enum.all?(visible_ids, &(&1 in activities_ids)) + end + end + + describe "replies filtering with private messages" do + setup :private_messages + + test "public timeline", %{users: %{u1: user}} do + activities_ids = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("local_only", false) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + |> Enum.map(& &1.id) + + assert activities_ids == [] + end + + test "public timeline with default reply_visibility `following`", %{users: %{u1: user}} do + activities_ids = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("local_only", false) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("reply_visibility", "following") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + |> Enum.map(& &1.id) + + assert activities_ids == [] + end + + test "public timeline with default reply_visibility `self`", %{users: %{u1: user}} do + activities_ids = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("local_only", false) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("reply_visibility", "self") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + |> Enum.map(& &1.id) + + assert activities_ids == [] + end + + test "home timeline", %{users: %{u1: user}} do + params = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + + activities_ids = + ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) + |> Enum.map(& &1.id) + + assert length(activities_ids) == 12 + end + + test "home timeline with default reply_visibility `following`", %{users: %{u1: user}} do + params = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> Map.put("reply_visibility", "following") + + activities_ids = + ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) + |> Enum.map(& &1.id) + + assert length(activities_ids) == 12 + end + + test "home timeline with default reply_visibility `self`", %{ + users: %{u1: user}, + activities: activities, + u1: u1, + u2: u2, + u3: u3, + u4: u4 + } do + params = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> Map.put("reply_visibility", "self") + + activities_ids = + ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) + |> Enum.map(& &1.id) + + assert length(activities_ids) == 10 + + visible_ids = + Map.values(u1) ++ Map.values(u4) ++ [u2[:r1], u3[:r1]] ++ Map.values(activities) + + assert Enum.all?(visible_ids, &(&1 in activities_ids)) + end + end + + defp public_messages(_) do + [u1, u2, u3, u4] = insert_list(4, :user) + {:ok, u1} = User.follow(u1, u2) + {:ok, u2} = User.follow(u2, u1) + {:ok, u1} = User.follow(u1, u4) + {:ok, u4} = User.follow(u4, u1) + + {:ok, u2} = User.follow(u2, u3) + {:ok, u3} = User.follow(u3, u2) + + {:ok, a1} = CommonAPI.post(u1, %{"status" => "Status"}) + + {:ok, r1_1} = + CommonAPI.post(u2, %{ + "status" => "@#{u1.nickname} reply from u2 to u1", + "in_reply_to_status_id" => a1.id + }) + + {:ok, r1_2} = + CommonAPI.post(u3, %{ + "status" => "@#{u1.nickname} reply from u3 to u1", + "in_reply_to_status_id" => a1.id + }) + + {:ok, r1_3} = + CommonAPI.post(u4, %{ + "status" => "@#{u1.nickname} reply from u4 to u1", + "in_reply_to_status_id" => a1.id + }) + + {:ok, a2} = CommonAPI.post(u2, %{"status" => "Status"}) + + {:ok, r2_1} = + CommonAPI.post(u1, %{ + "status" => "@#{u2.nickname} reply from u1 to u2", + "in_reply_to_status_id" => a2.id + }) + + {:ok, r2_2} = + CommonAPI.post(u3, %{ + "status" => "@#{u2.nickname} reply from u3 to u2", + "in_reply_to_status_id" => a2.id + }) + + {:ok, r2_3} = + CommonAPI.post(u4, %{ + "status" => "@#{u2.nickname} reply from u4 to u2", + "in_reply_to_status_id" => a2.id + }) + + {:ok, a3} = CommonAPI.post(u3, %{"status" => "Status"}) + + {:ok, r3_1} = + CommonAPI.post(u1, %{ + "status" => "@#{u3.nickname} reply from u1 to u3", + "in_reply_to_status_id" => a3.id + }) + + {:ok, r3_2} = + CommonAPI.post(u2, %{ + "status" => "@#{u3.nickname} reply from u2 to u3", + "in_reply_to_status_id" => a3.id + }) + + {:ok, r3_3} = + CommonAPI.post(u4, %{ + "status" => "@#{u3.nickname} reply from u4 to u3", + "in_reply_to_status_id" => a3.id + }) + + {:ok, a4} = CommonAPI.post(u4, %{"status" => "Status"}) + + {:ok, r4_1} = + CommonAPI.post(u1, %{ + "status" => "@#{u4.nickname} reply from u1 to u4", + "in_reply_to_status_id" => a4.id + }) + + {:ok, r4_2} = + CommonAPI.post(u2, %{ + "status" => "@#{u4.nickname} reply from u2 to u4", + "in_reply_to_status_id" => a4.id + }) + + {:ok, r4_3} = + CommonAPI.post(u3, %{ + "status" => "@#{u4.nickname} reply from u3 to u4", + "in_reply_to_status_id" => a4.id + }) + + {:ok, + users: %{u1: u1, u2: u2, u3: u3, u4: u4}, + activities: %{a1: a1.id, a2: a2.id, a3: a3.id, a4: a4.id}, + u1: %{r1: r1_1.id, r2: r1_2.id, r3: r1_3.id}, + u2: %{r1: r2_1.id, r2: r2_2.id, r3: r2_3.id}, + u3: %{r1: r3_1.id, r2: r3_2.id, r3: r3_3.id}, + u4: %{r1: r4_1.id, r2: r4_2.id, r3: r4_3.id}} + end + + defp private_messages(_) do + [u1, u2, u3, u4] = insert_list(4, :user) + {:ok, u1} = User.follow(u1, u2) + {:ok, u2} = User.follow(u2, u1) + {:ok, u1} = User.follow(u1, u3) + {:ok, u3} = User.follow(u3, u1) + {:ok, u1} = User.follow(u1, u4) + {:ok, u4} = User.follow(u4, u1) + + {:ok, u2} = User.follow(u2, u3) + {:ok, u3} = User.follow(u3, u2) + + {:ok, a1} = CommonAPI.post(u1, %{"status" => "Status", "visibility" => "private"}) + + {:ok, r1_1} = + CommonAPI.post(u2, %{ + "status" => "@#{u1.nickname} reply from u2 to u1", + "in_reply_to_status_id" => a1.id, + "visibility" => "private" + }) + + {:ok, r1_2} = + CommonAPI.post(u3, %{ + "status" => "@#{u1.nickname} reply from u3 to u1", + "in_reply_to_status_id" => a1.id, + "visibility" => "private" + }) + + {:ok, r1_3} = + CommonAPI.post(u4, %{ + "status" => "@#{u1.nickname} reply from u4 to u1", + "in_reply_to_status_id" => a1.id, + "visibility" => "private" + }) + + {:ok, a2} = CommonAPI.post(u2, %{"status" => "Status", "visibility" => "private"}) + + {:ok, r2_1} = + CommonAPI.post(u1, %{ + "status" => "@#{u2.nickname} reply from u1 to u2", + "in_reply_to_status_id" => a2.id, + "visibility" => "private" + }) + + {:ok, r2_2} = + CommonAPI.post(u3, %{ + "status" => "@#{u2.nickname} reply from u3 to u2", + "in_reply_to_status_id" => a2.id, + "visibility" => "private" + }) + + {:ok, a3} = CommonAPI.post(u3, %{"status" => "Status", "visibility" => "private"}) + + {:ok, r3_1} = + CommonAPI.post(u1, %{ + "status" => "@#{u3.nickname} reply from u1 to u3", + "in_reply_to_status_id" => a3.id, + "visibility" => "private" + }) + + {:ok, r3_2} = + CommonAPI.post(u2, %{ + "status" => "@#{u3.nickname} reply from u2 to u3", + "in_reply_to_status_id" => a3.id, + "visibility" => "private" + }) + + {:ok, a4} = CommonAPI.post(u4, %{"status" => "Status", "visibility" => "private"}) + + {:ok, r4_1} = + CommonAPI.post(u1, %{ + "status" => "@#{u4.nickname} reply from u1 to u4", + "in_reply_to_status_id" => a4.id, + "visibility" => "private" + }) + + {:ok, + users: %{u1: u1, u2: u2, u3: u3, u4: u4}, + activities: %{a1: a1.id, a2: a2.id, a3: a3.id, a4: a4.id}, + u1: %{r1: r1_1.id, r2: r1_2.id, r3: r1_3.id}, + u2: %{r1: r2_1.id, r2: r2_2.id}, + u3: %{r1: r3_1.id, r2: r3_2.id}, + u4: %{r1: r4_1.id}} + end end From be34672d6768bdc9ece96669e07e940a98c9d933 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 4 Dec 2019 10:29:26 +0300 Subject: [PATCH 102/137] formatting --- docs/API/differences_in_mastoapi_responses.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index c97fb8c56..92086136f 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -15,6 +15,7 @@ Some apps operate under the assumption that no more than 4 attachments can be re Adding the parameter `with_muted=true` to the timeline queries will also return activities by muted (not by blocked!) users. Adding the parameter `exclude_visibilities` to the timeline queries will exclude the statuses with the given visibilities. The parameter accepts an array of visibility types (`public`, `unlisted`, `private`, `direct`), e.g., `exclude_visibilities[]=direct&exclude_visibilities[]=private`. Adding the parameter `reply_visibility` to the public and friends timelines quieries will filter replies. Possible values: without parameter (default) shows all replies, `following` - replies directed to you or users you follow, `self` - replies directed to you. + ## Statuses - `visibility`: has an additional possible value `list` From 1a75ef63b2f6fef96b9bf9d07b4963fb217d4017 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 24 Apr 2020 09:24:08 +0300 Subject: [PATCH 103/137] updating benchmarks --- benchmarks/load_testing/activities.ex | 2 +- benchmarks/load_testing/fetcher.ex | 85 +++++++++++++-------------- 2 files changed, 41 insertions(+), 46 deletions(-) diff --git a/benchmarks/load_testing/activities.ex b/benchmarks/load_testing/activities.ex index 23ee2b987..2b032943b 100644 --- a/benchmarks/load_testing/activities.ex +++ b/benchmarks/load_testing/activities.ex @@ -313,7 +313,7 @@ defp insert_activity("simple_thread", visibility, group, user, friends, non_frie tasks = get_reply_tasks(visibility, group) {:ok, activity} = - CommonAPI.post(user, %{"status" => "Simple status", "visibility" => "unlisted"}) + CommonAPI.post(user, %{"status" => "Simple status", "visibility" => visibility}) acc = {activity.id, ["@" <> actor.nickname, "reply to status"]} insert_replies(tasks, visibility, user, friends, non_friends, acc) diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex index 3aa82b48a..6503deb41 100644 --- a/benchmarks/load_testing/fetcher.ex +++ b/benchmarks/load_testing/fetcher.ex @@ -41,6 +41,7 @@ defp fetch_timelines(user) do fetch_notifications(user) fetch_favourites(user) fetch_long_thread(user) + fetch_timelines_with_reply_filtering(user) end defp render_views(user) do @@ -496,56 +497,50 @@ defp render_long_thread(user) do ) end - def query_replies(user) do - public_params = %{ - "type" => ["Create", "Announce"], - "local_only" => false, - "blocking_user" => user, - "muting_user" => user, - "count" => 20 - } + defp fetch_timelines_with_reply_filtering(user) do + public_params = opts_for_public_timeline(user) - Benchee.run(%{ - "Public timeline without reply filtering" => fn -> - ActivityPub.fetch_public_activities(public_params) - end, - "Public timeline with reply filtering - following" => fn -> - public_params - |> Map.put("reply_visibility", "following") - |> Map.put("user", user) - |> ActivityPub.fetch_public_activities() - end, - "Public timeline with reply filtering - self" => fn -> - public_params - |> Map.put("reply_visibility", "self") - |> Map.put("user", user) - |> ActivityPub.fetch_public_activities() - end - }) + Benchee.run( + %{ + "Public timeline without reply filtering" => fn -> + ActivityPub.fetch_public_activities(public_params) + end, + "Public timeline with reply filtering - following" => fn -> + public_params + |> Map.put("reply_visibility", "following") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + end, + "Public timeline with reply filtering - self" => fn -> + public_params + |> Map.put("reply_visibility", "self") + |> Map.put("user", user) + |> ActivityPub.fetch_public_activities() + end + }, + formatters: formatters() + ) - private_params = %{ - "type" => ["Create", "Announce"], - "blocking_user" => user, - "muting_user" => user, - "user" => user, - "count" => 20 - } + private_params = opts_for_home_timeline(user) recipients = [user.ap_id | User.following(user)] - Benchee.run(%{ - "Home timeline without reply filtering" => fn -> - ActivityPub.fetch_activities(recipients, private_params) - end, - "Home timeline with reply filtering - following" => fn -> - private_params = Map.put(private_params, "reply_visibility", "following") + Benchee.run( + %{ + "Home timeline without reply filtering" => fn -> + ActivityPub.fetch_activities(recipients, private_params) + end, + "Home timeline with reply filtering - following" => fn -> + private_params = Map.put(private_params, "reply_visibility", "following") - ActivityPub.fetch_activities(recipients, private_params) - end, - "Home timeline with reply filtering - self" => fn -> - private_params = Map.put(private_params, "reply_visibility", "self") - ActivityPub.fetch_activities(recipients, private_params) - end - }) + ActivityPub.fetch_activities(recipients, private_params) + end, + "Home timeline with reply filtering - self" => fn -> + private_params = Map.put(private_params, "reply_visibility", "self") + ActivityPub.fetch_activities(recipients, private_params) + end + }, + formatters: formatters() + ) end end From 375ab05234a3590c161a2a5a4f715fbc61dafb34 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 24 Apr 2020 09:57:30 +0300 Subject: [PATCH 104/137] bench sync --- benchmarks/load_testing/activities.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/load_testing/activities.ex b/benchmarks/load_testing/activities.ex index 2b032943b..482e42fc1 100644 --- a/benchmarks/load_testing/activities.ex +++ b/benchmarks/load_testing/activities.ex @@ -279,7 +279,7 @@ defp insert_activity("like", visibility, group, user, friends, non_friends, opts actor = get_actor(group, user, friends, non_friends) with activity_id when not is_nil(activity_id) <- get_random_create_activity_id(), - {:ok, _activity, _object} <- CommonAPI.favorite(activity_id, actor) do + {:ok, _activity} <- CommonAPI.favorite(actor, activity_id) do :ok else {:error, _} -> From 8480f84615b696965d3c1ca34b5847af99fbdece Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 24 Apr 2020 10:26:54 +0000 Subject: [PATCH 105/137] Update differences_in_mastoapi_responses.md --- docs/API/differences_in_mastoapi_responses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index 92086136f..41ceda26b 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -14,7 +14,7 @@ Some apps operate under the assumption that no more than 4 attachments can be re Adding the parameter `with_muted=true` to the timeline queries will also return activities by muted (not by blocked!) users. Adding the parameter `exclude_visibilities` to the timeline queries will exclude the statuses with the given visibilities. The parameter accepts an array of visibility types (`public`, `unlisted`, `private`, `direct`), e.g., `exclude_visibilities[]=direct&exclude_visibilities[]=private`. -Adding the parameter `reply_visibility` to the public and friends timelines quieries will filter replies. Possible values: without parameter (default) shows all replies, `following` - replies directed to you or users you follow, `self` - replies directed to you. +Adding the parameter `reply_visibility` to the public and home timelines queries will filter replies. Possible values: without parameter (default) shows all replies, `following` - replies directed to you or users you follow, `self` - replies directed to you. ## Statuses From e2f3030c868ca087915294909dee304f7de1730f Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 24 Apr 2020 10:27:51 +0000 Subject: [PATCH 106/137] Apply suggestion to CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index affabcd95..ccc6a5bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). API Changes - Mastodon API: Support for `include_types` in `/api/v1/notifications`. - Mastodon API: Added `/api/v1/notifications/:id/dismiss` endpoint. -- Mastodon API: Add support for filtering replies in public and friends timelines +- Mastodon API: Add support for filtering replies in public and home timelines - Admin API: endpoints for create/update/delete OAuth Apps.
From 00e62161f64802317d7d789e7eac42c33f0540f5 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 24 Apr 2020 16:52:38 +0300 Subject: [PATCH 107/137] [#2409] Tested all auth setup configs in AuthTestControllerTest. Adjusted :skip_plug definitions for some endpoints. --- lib/pleroma/tests/auth_test_controller.ex | 93 +++++++ lib/pleroma/tests/oauth_test_controller.ex | 31 --- lib/pleroma/web/masto_fe_controller.ex | 5 +- .../controllers/account_controller.ex | 13 +- .../controllers/status_controller.ex | 4 +- .../controllers/timeline_controller.ex | 4 +- lib/pleroma/web/oauth/oauth_controller.ex | 5 +- .../controllers/account_controller.ex | 5 +- lib/pleroma/web/router.ex | 21 +- .../web/twitter_api/twitter_api_controller.ex | 8 +- test/web/auth/auth_test_controller_test.exs | 242 ++++++++++++++++++ test/web/auth/oauth_test_controller_test.exs | 49 ---- .../mastodon_api_controller_test.exs | 33 +-- 13 files changed, 392 insertions(+), 121 deletions(-) create mode 100644 lib/pleroma/tests/auth_test_controller.ex delete mode 100644 lib/pleroma/tests/oauth_test_controller.ex create mode 100644 test/web/auth/auth_test_controller_test.exs delete mode 100644 test/web/auth/oauth_test_controller_test.exs diff --git a/lib/pleroma/tests/auth_test_controller.ex b/lib/pleroma/tests/auth_test_controller.ex new file mode 100644 index 000000000..fb04411d9 --- /dev/null +++ b/lib/pleroma/tests/auth_test_controller.ex @@ -0,0 +1,93 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +# A test controller reachable only in :test env. +defmodule Pleroma.Tests.AuthTestController do + @moduledoc false + + use Pleroma.Web, :controller + + alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.User + + # Serves only with proper OAuth token (:api and :authenticated_api) + # Skipping EnsurePublicOrAuthenticatedPlug has no effect in this case + # + # Suggested use case: all :authenticated_api endpoints (makes no sense for :api endpoints) + plug(OAuthScopesPlug, %{scopes: ["read"]} when action == :do_oauth_check) + + # Via :api, keeps :user if token has requested scopes (if :user is dropped, serves if public) + # Via :authenticated_api, serves if token is present and has requested scopes + # + # Suggested use case: vast majority of :api endpoints (no sense for :authenticated_api ones) + plug( + OAuthScopesPlug, + %{scopes: ["read"], fallback: :proceed_unauthenticated} + when action == :fallback_oauth_check + ) + + # Keeps :user if present, executes regardless of token / token scopes + # Fails with no :user for :authenticated_api / no user for :api on private instance + # Note: EnsurePublicOrAuthenticatedPlug is not skipped (private instance fails on no :user) + # Note: Basic Auth processing results in :skip_plug call for OAuthScopesPlug + # + # Suggested use: suppressing OAuth checks for other auth mechanisms (like Basic Auth) + # For controller-level use, see :skip_oauth_skip_publicity_check instead + plug( + :skip_plug, + OAuthScopesPlug when action == :skip_oauth_check + ) + + # (Shouldn't be executed since the plug is skipped) + plug(OAuthScopesPlug, %{scopes: ["admin"]} when action == :skip_oauth_check) + + # Via :api, keeps :user if token has requested scopes, and continues with nil :user otherwise + # Via :authenticated_api, serves if token is present and has requested scopes + # + # Suggested use: as :fallback_oauth_check but open with nil :user for :api on private instances + plug( + :skip_plug, + EnsurePublicOrAuthenticatedPlug when action == :fallback_oauth_skip_publicity_check + ) + + plug( + OAuthScopesPlug, + %{scopes: ["read"], fallback: :proceed_unauthenticated} + when action == :fallback_oauth_skip_publicity_check + ) + + # Via :api, keeps :user if present, serves regardless of token presence / scopes / :user presence + # Via :authenticated_api, serves if :user is set (regardless of token presence and its scopes) + # + # Suggested use: making an :api endpoint always accessible (e.g. email confirmation endpoint) + plug( + :skip_plug, + [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] + when action == :skip_oauth_skip_publicity_check + ) + + # Via :authenticated_api, always fails with 403 (endpoint is insecure) + # Via :api, drops :user if present and serves if public (private instance rejects on no user) + # + # Suggested use: none; please define OAuth rules for all :api / :authenticated_api endpoints + plug(:skip_plug, [] when action == :missing_oauth_check_definition) + + def do_oauth_check(conn, _params), do: conn_state(conn) + + def fallback_oauth_check(conn, _params), do: conn_state(conn) + + def skip_oauth_check(conn, _params), do: conn_state(conn) + + def fallback_oauth_skip_publicity_check(conn, _params), do: conn_state(conn) + + def skip_oauth_skip_publicity_check(conn, _params), do: conn_state(conn) + + def missing_oauth_check_definition(conn, _params), do: conn_state(conn) + + defp conn_state(%{assigns: %{user: %User{} = user}} = conn), + do: json(conn, %{user_id: user.id}) + + defp conn_state(conn), do: json(conn, %{user_id: nil}) +end diff --git a/lib/pleroma/tests/oauth_test_controller.ex b/lib/pleroma/tests/oauth_test_controller.ex deleted file mode 100644 index 58d517f78..000000000 --- a/lib/pleroma/tests/oauth_test_controller.ex +++ /dev/null @@ -1,31 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -# A test controller reachable only in :test env. -# Serves to test OAuth scopes check skipping / enforcement. -defmodule Pleroma.Tests.OAuthTestController do - @moduledoc false - - use Pleroma.Web, :controller - - alias Pleroma.Plugs.OAuthScopesPlug - - plug(:skip_plug, OAuthScopesPlug when action == :skipped_oauth) - - plug(OAuthScopesPlug, %{scopes: ["read"]} when action != :missed_oauth) - - def skipped_oauth(conn, _params) do - noop(conn) - end - - def performed_oauth(conn, _params) do - noop(conn) - end - - def missed_oauth(conn, _params) do - noop(conn) - end - - defp noop(conn), do: json(conn, %{}) -end diff --git a/lib/pleroma/web/masto_fe_controller.ex b/lib/pleroma/web/masto_fe_controller.ex index 9a2ec517a..d0d8bc8eb 100644 --- a/lib/pleroma/web/masto_fe_controller.ex +++ b/lib/pleroma/web/masto_fe_controller.ex @@ -5,12 +5,15 @@ defmodule Pleroma.Web.MastoFEController do use Pleroma.Web, :controller + alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.User plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action == :put_settings) # Note: :index action handles attempt of unauthenticated access to private instance with redirect + plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action == :index) + plug( OAuthScopesPlug, %{scopes: ["read"], fallback: :proceed_unauthenticated} @@ -19,7 +22,7 @@ defmodule Pleroma.Web.MastoFEController do plug( :skip_plug, - Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :manifest] + [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :manifest ) @doc "GET /web/*path" diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index e3465e659..f39825e08 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -14,6 +14,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do skip_relationships?: 1 ] + alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Plugs.RateLimiter alias Pleroma.User @@ -26,18 +27,14 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.OAuth.Token alias Pleroma.Web.TwitterAPI.TwitterAPI - plug(:skip_plug, OAuthScopesPlug when action in [:create, :identity_proofs]) + plug(:skip_plug, [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :create) - plug( - :skip_plug, - Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug - when action in [:create, :show, :statuses] - ) + plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:show, :statuses]) plug( OAuthScopesPlug, %{fallback: :proceed_unauthenticated, scopes: ["read:accounts"]} - when action in [:show, :followers, :following, :endorsements] + when action in [:show, :followers, :following] ) plug( @@ -49,7 +46,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( OAuthScopesPlug, %{scopes: ["read:accounts"]} - when action in [:endorsements, :verify_credentials] + when action in [:verify_credentials, :endorsements, :identity_proofs] ) plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action == :update_credentials) diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index eade83aaf..4fa9a2120 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -24,6 +24,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.ScheduledActivityView + plug(:skip_plug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :show]) + @unauthenticated_access %{fallback: :proceed_unauthenticated, scopes: []} plug( @@ -77,8 +79,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do %{scopes: ["write:bookmarks"]} when action in [:bookmark, :unbookmark] ) - plug(:skip_plug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :show]) - @rate_limited_status_actions ~w(reblog unreblog favourite unfavourite create delete)a plug( diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index 040a0b9dd..fb6b18ed5 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -15,6 +15,8 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub + plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:public, :hashtag]) + # TODO: Replace with a macro when there is a Phoenix release with the following commit in it: # https://github.com/phoenixframework/phoenix/commit/2e8c63c01fec4dde5467dbbbf9705ff9e780735e @@ -33,8 +35,6 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do when action in [:public, :hashtag] ) - plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:public, :hashtag]) - plug(:put_view, Pleroma.Web.MastodonAPI.StatusView) # GET /api/v1/timelines/home diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index 0121cd661..685269877 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -25,9 +25,10 @@ defmodule Pleroma.Web.OAuth.OAuthController do plug(:fetch_session) plug(:fetch_flash) - plug(RateLimiter, [name: :authentication] when action == :create_authorization) - plug(:skip_plug, Pleroma.Plugs.OAuthScopesPlug) + plug(:skip_plug, [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug]) + + plug(RateLimiter, [name: :authentication] when action == :create_authorization) action_fallback(Pleroma.Web.OAuth.FallbackController) diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index d6ffdcbe4..237c8157e 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do only: [json_response: 3, add_link_headers: 2, assign_account_by_id: 2, skip_relationships?: 1] alias Ecto.Changeset + alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Plugs.RateLimiter alias Pleroma.User @@ -17,11 +18,9 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do require Pleroma.Constants - plug(:skip_plug, OAuthScopesPlug when action == :confirmation_resend) - plug( :skip_plug, - Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug when action == :confirmation_resend + [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :confirmation_resend ) plug( diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index db158d366..57efc3314 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -655,11 +655,28 @@ defmodule Pleroma.Web.Router do # Test-only routes needed to test action dispatching and plug chain execution if Pleroma.Config.get(:env) == :test do + @test_actions [ + :do_oauth_check, + :fallback_oauth_check, + :skip_oauth_check, + :fallback_oauth_skip_publicity_check, + :skip_oauth_skip_publicity_check, + :missing_oauth_check_definition + ] + + scope "/test/api", Pleroma.Tests do + pipe_through(:api) + + for action <- @test_actions do + get("/#{action}", AuthTestController, action) + end + end + scope "/test/authenticated_api", Pleroma.Tests do pipe_through(:authenticated_api) - for action <- [:skipped_oauth, :performed_oauth, :missed_oauth] do - get("/#{action}", OAuthTestController, action) + for action <- @test_actions do + get("/#{action}", AuthTestController, action) end end end diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index e4f182b02..c2de26b0b 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -6,6 +6,7 @@ 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 @@ -18,7 +19,12 @@ defmodule Pleroma.Web.TwitterAPI.Controller do %{scopes: ["write:notifications"]} when action == :mark_notifications_as_read ) - plug(:skip_plug, OAuthScopesPlug when action in [:confirm_email, :oauth_tokens, :revoke_token]) + plug( + :skip_plug, + [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :confirm_email + ) + + plug(:skip_plug, OAuthScopesPlug when action in [:oauth_tokens, :revoke_token]) action_fallback(:errors) diff --git a/test/web/auth/auth_test_controller_test.exs b/test/web/auth/auth_test_controller_test.exs new file mode 100644 index 000000000..fed52b7f3 --- /dev/null +++ b/test/web/auth/auth_test_controller_test.exs @@ -0,0 +1,242 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Tests.AuthTestControllerTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + + describe "do_oauth_check" do + test "serves with proper OAuth token (fulfilling requested scopes)" do + %{conn: good_token_conn, user: user} = oauth_access(["read"]) + + assert %{"user_id" => user.id} == + good_token_conn + |> get("/test/authenticated_api/do_oauth_check") + |> json_response(200) + + # Unintended usage (:api) — use with :authenticated_api instead + assert %{"user_id" => user.id} == + good_token_conn + |> get("/test/api/do_oauth_check") + |> json_response(200) + end + + test "fails on no token / missing scope(s)" do + %{conn: bad_token_conn} = oauth_access(["irrelevant_scope"]) + + bad_token_conn + |> get("/test/authenticated_api/do_oauth_check") + |> json_response(403) + + bad_token_conn + |> assign(:token, nil) + |> get("/test/api/do_oauth_check") + |> json_response(403) + end + end + + describe "fallback_oauth_check" do + test "serves with proper OAuth token (fulfilling requested scopes)" do + %{conn: good_token_conn, user: user} = oauth_access(["read"]) + + assert %{"user_id" => user.id} == + good_token_conn + |> get("/test/api/fallback_oauth_check") + |> json_response(200) + + # Unintended usage (:authenticated_api) — use with :api instead + assert %{"user_id" => user.id} == + good_token_conn + |> get("/test/authenticated_api/fallback_oauth_check") + |> json_response(200) + end + + test "for :api on public instance, drops :user and renders on no token / missing scope(s)" do + clear_config([:instance, :public], true) + + %{conn: bad_token_conn} = oauth_access(["irrelevant_scope"]) + + assert %{"user_id" => nil} == + bad_token_conn + |> get("/test/api/fallback_oauth_check") + |> json_response(200) + + assert %{"user_id" => nil} == + bad_token_conn + |> assign(:token, nil) + |> get("/test/api/fallback_oauth_check") + |> json_response(200) + end + + test "for :api on private instance, fails on no token / missing scope(s)" do + clear_config([:instance, :public], false) + + %{conn: bad_token_conn} = oauth_access(["irrelevant_scope"]) + + bad_token_conn + |> get("/test/api/fallback_oauth_check") + |> json_response(403) + + bad_token_conn + |> assign(:token, nil) + |> get("/test/api/fallback_oauth_check") + |> json_response(403) + end + end + + describe "skip_oauth_check" do + test "for :authenticated_api, serves if :user is set (regardless of token / token scopes)" do + user = insert(:user) + + assert %{"user_id" => user.id} == + build_conn() + |> assign(:user, user) + |> get("/test/authenticated_api/skip_oauth_check") + |> json_response(200) + + %{conn: bad_token_conn, user: user} = oauth_access(["irrelevant_scope"]) + + assert %{"user_id" => user.id} == + bad_token_conn + |> get("/test/authenticated_api/skip_oauth_check") + |> json_response(200) + end + + test "serves via :api on public instance if :user is not set" do + clear_config([:instance, :public], true) + + assert %{"user_id" => nil} == + build_conn() + |> get("/test/api/skip_oauth_check") + |> json_response(200) + + build_conn() + |> get("/test/authenticated_api/skip_oauth_check") + |> json_response(403) + end + + test "fails on private instance if :user is not set" do + clear_config([:instance, :public], false) + + build_conn() + |> get("/test/api/skip_oauth_check") + |> json_response(403) + + build_conn() + |> get("/test/authenticated_api/skip_oauth_check") + |> json_response(403) + end + end + + describe "fallback_oauth_skip_publicity_check" do + test "serves with proper OAuth token (fulfilling requested scopes)" do + %{conn: good_token_conn, user: user} = oauth_access(["read"]) + + assert %{"user_id" => user.id} == + good_token_conn + |> get("/test/api/fallback_oauth_skip_publicity_check") + |> json_response(200) + + # Unintended usage (:authenticated_api) + assert %{"user_id" => user.id} == + good_token_conn + |> get("/test/authenticated_api/fallback_oauth_skip_publicity_check") + |> json_response(200) + end + + test "for :api on private / public instance, drops :user and renders on token issue" do + %{conn: bad_token_conn} = oauth_access(["irrelevant_scope"]) + + for is_public <- [true, false] do + clear_config([:instance, :public], is_public) + + assert %{"user_id" => nil} == + bad_token_conn + |> get("/test/api/fallback_oauth_skip_publicity_check") + |> json_response(200) + + assert %{"user_id" => nil} == + bad_token_conn + |> assign(:token, nil) + |> get("/test/api/fallback_oauth_skip_publicity_check") + |> json_response(200) + end + end + end + + describe "skip_oauth_skip_publicity_check" do + test "for :authenticated_api, serves if :user is set (regardless of token / token scopes)" do + user = insert(:user) + + assert %{"user_id" => user.id} == + build_conn() + |> assign(:user, user) + |> get("/test/authenticated_api/skip_oauth_skip_publicity_check") + |> json_response(200) + + %{conn: bad_token_conn, user: user} = oauth_access(["irrelevant_scope"]) + + assert %{"user_id" => user.id} == + bad_token_conn + |> get("/test/authenticated_api/skip_oauth_skip_publicity_check") + |> json_response(200) + end + + test "for :api, serves on private and public instances regardless of whether :user is set" do + user = insert(:user) + + for is_public <- [true, false] do + clear_config([:instance, :public], is_public) + + assert %{"user_id" => nil} == + build_conn() + |> get("/test/api/skip_oauth_skip_publicity_check") + |> json_response(200) + + assert %{"user_id" => user.id} == + build_conn() + |> assign(:user, user) + |> get("/test/api/skip_oauth_skip_publicity_check") + |> json_response(200) + end + end + end + + describe "missing_oauth_check_definition" do + def test_missing_oauth_check_definition_failure(endpoint, expected_error) do + %{conn: conn} = oauth_access(["read", "write", "follow", "push", "admin"]) + + assert %{"error" => expected_error} == + conn + |> get(endpoint) + |> json_response(403) + end + + test "fails if served via :authenticated_api" do + test_missing_oauth_check_definition_failure( + "/test/authenticated_api/missing_oauth_check_definition", + "Security violation: OAuth scopes check was neither handled nor explicitly skipped." + ) + end + + test "fails if served via :api and the instance is private" do + clear_config([:instance, :public], false) + + test_missing_oauth_check_definition_failure( + "/test/api/missing_oauth_check_definition", + "This resource requires authentication." + ) + end + + test "succeeds with dropped :user if served via :api on public instance" do + %{conn: conn} = oauth_access(["read", "write", "follow", "push", "admin"]) + + assert %{"user_id" => nil} == + conn + |> get("/test/api/missing_oauth_check_definition") + |> json_response(200) + end + end +end diff --git a/test/web/auth/oauth_test_controller_test.exs b/test/web/auth/oauth_test_controller_test.exs deleted file mode 100644 index a2f6009ac..000000000 --- a/test/web/auth/oauth_test_controller_test.exs +++ /dev/null @@ -1,49 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Tests.OAuthTestControllerTest do - use Pleroma.Web.ConnCase - - import Pleroma.Factory - - setup %{conn: conn} do - user = insert(:user) - conn = assign(conn, :user, user) - %{conn: conn, user: user} - end - - test "missed_oauth", %{conn: conn} do - res = - conn - |> get("/test/authenticated_api/missed_oauth") - |> json_response(403) - - assert res == - %{ - "error" => - "Security violation: OAuth scopes check was neither handled nor explicitly skipped." - } - end - - test "skipped_oauth", %{conn: conn} do - conn - |> assign(:token, nil) - |> get("/test/authenticated_api/skipped_oauth") - |> json_response(200) - end - - test "performed_oauth", %{user: user} do - %{conn: good_token_conn} = oauth_access(["read"], user: user) - - good_token_conn - |> get("/test/authenticated_api/performed_oauth") - |> json_response(200) - - %{conn: bad_token_conn} = oauth_access(["follow"], user: user) - - bad_token_conn - |> get("/test/authenticated_api/performed_oauth") - |> json_response(403) - end -end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 75f184242..bb4bc4396 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -7,35 +7,28 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do describe "empty_array/2 (stubs)" do test "GET /api/v1/accounts/:id/identity_proofs" do - %{user: user, conn: conn} = oauth_access(["n/a"]) + %{user: user, conn: conn} = oauth_access(["read:accounts"]) - res = - conn - |> assign(:user, user) - |> get("/api/v1/accounts/#{user.id}/identity_proofs") - |> json_response(200) - - assert res == [] + assert [] == + conn + |> get("/api/v1/accounts/#{user.id}/identity_proofs") + |> json_response(200) end test "GET /api/v1/endorsements" do %{conn: conn} = oauth_access(["read:accounts"]) - res = - conn - |> get("/api/v1/endorsements") - |> json_response(200) - - assert res == [] + assert [] == + conn + |> get("/api/v1/endorsements") + |> json_response(200) end test "GET /api/v1/trends", %{conn: conn} do - res = - conn - |> get("/api/v1/trends") - |> json_response(200) - - assert res == [] + assert [] == + conn + |> get("/api/v1/trends") + |> json_response(200) end end end From d89cd0a19733eec27b79b768df2e30a68bfc6d6b Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 24 Apr 2020 18:25:26 +0200 Subject: [PATCH 108/137] Reply Filtering: Refactor. --- benchmarks/load_testing/fetcher.ex | 15 ++- benchmarks/mix/tasks/pleroma/load_testing.ex | 1 + lib/pleroma/web/activity_pub/activity_pub.ex | 114 +++++++----------- .../controllers/timeline_controller.ex | 3 +- test/web/activity_pub/activity_pub_test.exs | 13 +- 5 files changed, 69 insertions(+), 77 deletions(-) diff --git a/benchmarks/load_testing/fetcher.ex b/benchmarks/load_testing/fetcher.ex index 6503deb41..12c30f6f5 100644 --- a/benchmarks/load_testing/fetcher.ex +++ b/benchmarks/load_testing/fetcher.ex @@ -508,13 +508,13 @@ defp fetch_timelines_with_reply_filtering(user) do "Public timeline with reply filtering - following" => fn -> public_params |> Map.put("reply_visibility", "following") - |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) |> ActivityPub.fetch_public_activities() end, "Public timeline with reply filtering - self" => fn -> public_params |> Map.put("reply_visibility", "self") - |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) |> ActivityPub.fetch_public_activities() end }, @@ -531,12 +531,19 @@ defp fetch_timelines_with_reply_filtering(user) do ActivityPub.fetch_activities(recipients, private_params) end, "Home timeline with reply filtering - following" => fn -> - private_params = Map.put(private_params, "reply_visibility", "following") + private_params = + private_params + |> Map.put("reply_filtering_user", user) + |> Map.put("reply_visibility", "following") ActivityPub.fetch_activities(recipients, private_params) end, "Home timeline with reply filtering - self" => fn -> - private_params = Map.put(private_params, "reply_visibility", "self") + private_params = + private_params + |> Map.put("reply_filtering_user", user) + |> Map.put("reply_visibility", "self") + ActivityPub.fetch_activities(recipients, private_params) end }, diff --git a/benchmarks/mix/tasks/pleroma/load_testing.ex b/benchmarks/mix/tasks/pleroma/load_testing.ex index 72b225f09..388883240 100644 --- a/benchmarks/mix/tasks/pleroma/load_testing.ex +++ b/benchmarks/mix/tasks/pleroma/load_testing.ex @@ -44,6 +44,7 @@ defmodule Mix.Tasks.Pleroma.LoadTesting do ] def run(args) do + Logger.configure(level: :error) Mix.Pleroma.start_pleroma() clean_tables() {opts, _} = OptionParser.parse!(args, strict: @switches, aliases: @aliases) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 8b170b7f8..9ec31fb03 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -270,9 +270,9 @@ defp do_create(%{to: to, actor: actor, context: context, object: object} = param ), {:ok, activity} <- insert(create_data, local, fake), {:fake, false, activity} <- {:fake, fake, activity}, - {:quick_insert, false, activity} <- {:quick_insert, quick_insert?, activity}, _ <- increase_replies_count_if_reply(create_data), _ <- increase_poll_votes_if_vote(create_data), + {:quick_insert, false, activity} <- {:quick_insert, quick_insert?, activity}, {:ok, _actor} <- increase_note_count_if_public(actor, activity), :ok <- maybe_federate(activity) do {:ok, activity} @@ -700,14 +700,12 @@ def fetch_activities_for_context_query(context, opts) do do: [opts["user"].ap_id | User.following(opts["user"])] ++ public, else: public - opts = Map.put(opts, "user", opts["user"]) - from(activity in Activity) |> maybe_preload_objects(opts) |> maybe_preload_bookmarks(opts) |> maybe_set_thread_muted_field(opts) |> restrict_blocked(opts) - |> restrict_recipients(recipients, opts) + |> restrict_recipients(recipients, opts["user"]) |> where( [activity], fragment( @@ -742,10 +740,7 @@ def fetch_latest_activity_id_for_context(context, opts \\ %{}) do @spec fetch_public_activities(map(), Pagination.type()) :: [Activity.t()] def fetch_public_activities(opts \\ %{}, pagination \\ :keyset) do - opts = - opts - |> Map.put("reply_user", opts["user"]) - |> Map.delete("user") + opts = Map.drop(opts, ["user"]) [Constants.as_public()] |> fetch_activities_query(opts) @@ -981,65 +976,13 @@ defp restrict_tag(query, %{"tag" => tag}) when is_binary(tag) do defp restrict_tag(query, _), do: query - defp reply_recipients(user, "following") do - [user.ap_id | User.get_cached_user_friends_ap_ids(user)] + defp restrict_recipients(query, [], _user), do: query + + defp restrict_recipients(query, recipients, nil) do + from(activity in query, where: fragment("? && ?", ^recipients, activity.recipients)) end - defp reply_recipients(user, "self"), do: [user.ap_id] - - defp restrict_recipients(query, [], _opts), do: query - - defp restrict_recipients( - query, - recipients, - %{"user" => nil, "reply_user" => user, "reply_visibility" => visibility} - ) - when not is_nil(user) and visibility in ["following", "self"] do - reply_recipients = reply_recipients(user, visibility) - - from([activity, object] in query, - where: - fragment( - "? && ? AND (?->>'inReplyTo' IS NULL OR array_remove(?, ?) && ? OR ? = ?)", - ^recipients, - activity.recipients, - object.data, - activity.recipients, - activity.actor, - ^reply_recipients, - activity.actor, - ^user.ap_id - ) - ) - end - - defp restrict_recipients(query, recipients, %{"user" => nil}) do - from(activity in query, - where: fragment("? && ?", ^recipients, activity.recipients) - ) - end - - defp restrict_recipients(query, recipients, %{"user" => user, "reply_visibility" => visibility}) - when visibility in ["following", "self"] do - reply_recipients = reply_recipients(user, visibility) - - from( - [activity, object] in query, - where: - fragment( - "? && ? AND (?->>'inReplyTo' IS NULL OR array_remove(?, ?) && ?)", - ^recipients, - activity.recipients, - object.data, - activity.recipients, - activity.actor, - ^reply_recipients - ), - or_where: activity.actor == ^user.ap_id - ) - end - - defp restrict_recipients(query, recipients, %{"user" => user}) do + defp restrict_recipients(query, recipients, user) do from( activity in query, where: fragment("? && ?", ^recipients, activity.recipients), @@ -1104,6 +1047,41 @@ defp restrict_replies(query, %{"exclude_replies" => val}) when val == "true" or ) end + defp restrict_replies(query, %{ + "reply_filtering_user" => user, + "reply_visibility" => "self" + }) do + from( + [activity, object] in query, + where: + fragment( + "?->>'inReplyTo' is null OR ? = ANY(?)", + object.data, + ^user.ap_id, + activity.recipients + ) + ) + end + + defp restrict_replies(query, %{ + "reply_filtering_user" => user, + "reply_visibility" => "following" + }) do + from( + [activity, object] in query, + where: + fragment( + "?->>'inReplyTo' is null OR ? && array_remove(?, ?) OR ? = ?", + object.data, + ^[user.ap_id | User.get_cached_user_friends_ap_ids(user)], + activity.recipients, + activity.actor, + activity.actor, + ^user.ap_id + ) + ) + end + defp restrict_replies(query, _), do: query defp restrict_reblogs(query, %{"exclude_reblogs" => val}) when val == "true" or val == "1" do @@ -1311,15 +1289,14 @@ def fetch_activities_query(recipients, opts \\ %{}) do skip_thread_containment: Config.get([:instance, :skip_thread_containment]) } - opts = Map.put(opts, "user", opts["user"]) - Activity |> maybe_preload_objects(opts) |> maybe_preload_bookmarks(opts) |> maybe_preload_report_notes(opts) |> maybe_set_thread_muted_field(opts) |> maybe_order(opts) - |> restrict_recipients(recipients, opts) + |> restrict_recipients(recipients, opts["user"]) + |> restrict_replies(opts) |> restrict_tag(opts) |> restrict_tag_reject(opts) |> restrict_tag_all(opts) @@ -1334,7 +1311,6 @@ def fetch_activities_query(recipients, opts \\ %{}) do |> restrict_media(opts) |> restrict_visibility(opts) |> restrict_thread_visibility(opts, config) - |> restrict_replies(opts) |> restrict_reblogs(opts) |> restrict_pinned(opts) |> restrict_muted_reblogs(restrict_muted_reblogs_opts) diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index a2ac9301e..403d500e0 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -37,6 +37,7 @@ def home(%{assigns: %{user: user}} = conn, params) do |> Map.put("type", ["Create", "Announce"]) |> Map.put("blocking_user", user) |> Map.put("muting_user", user) + |> Map.put("reply_filtering_user", user) |> Map.put("user", user) recipients = [user.ap_id | User.following(user)] @@ -100,7 +101,7 @@ def public(%{assigns: %{user: user}} = conn, params) do |> Map.put("local_only", local_only) |> Map.put("blocking_user", user) |> Map.put("muting_user", user) - |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) |> ActivityPub.fetch_public_activities() conn diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 8a1638a23..edd7dfb22 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1936,7 +1936,7 @@ test "public timeline", %{users: %{u1: user}} do |> Map.put("local_only", false) |> Map.put("blocking_user", user) |> Map.put("muting_user", user) - |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1958,7 +1958,7 @@ test "public timeline with reply_visibility `following`", %{ |> Map.put("blocking_user", user) |> Map.put("muting_user", user) |> Map.put("reply_visibility", "following") - |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -1985,7 +1985,7 @@ test "public timeline with reply_visibility `self`", %{ |> Map.put("blocking_user", user) |> Map.put("muting_user", user) |> Map.put("reply_visibility", "self") - |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -2008,6 +2008,7 @@ test "home timeline", %{ |> Map.put("blocking_user", user) |> Map.put("muting_user", user) |> Map.put("user", user) + |> Map.put("reply_filtering_user", user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -2046,6 +2047,7 @@ test "home timeline with reply_visibility `following`", %{ |> Map.put("muting_user", user) |> Map.put("user", user) |> Map.put("reply_visibility", "following") + |> Map.put("reply_filtering_user", user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -2084,6 +2086,7 @@ test "home timeline with reply_visibility `self`", %{ |> Map.put("muting_user", user) |> Map.put("user", user) |> Map.put("reply_visibility", "self") + |> Map.put("reply_filtering_user", user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -2131,6 +2134,7 @@ test "public timeline with default reply_visibility `following`", %{users: %{u1: |> Map.put("blocking_user", user) |> Map.put("muting_user", user) |> Map.put("reply_visibility", "following") + |> Map.put("reply_filtering_user", user) |> Map.put("user", user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -2146,6 +2150,7 @@ test "public timeline with default reply_visibility `self`", %{users: %{u1: user |> Map.put("blocking_user", user) |> Map.put("muting_user", user) |> Map.put("reply_visibility", "self") + |> Map.put("reply_filtering_user", user) |> Map.put("user", user) |> ActivityPub.fetch_public_activities() |> Enum.map(& &1.id) @@ -2176,6 +2181,7 @@ test "home timeline with default reply_visibility `following`", %{users: %{u1: u |> Map.put("muting_user", user) |> Map.put("user", user) |> Map.put("reply_visibility", "following") + |> Map.put("reply_filtering_user", user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) @@ -2199,6 +2205,7 @@ test "home timeline with default reply_visibility `self`", %{ |> Map.put("muting_user", user) |> Map.put("user", user) |> Map.put("reply_visibility", "self") + |> Map.put("reply_filtering_user", user) activities_ids = ActivityPub.fetch_activities([user.ap_id | User.following(user)], params) From b4139cc5472079a34f0256ac9991a0222844d44c Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 24 Apr 2020 22:25:27 +0300 Subject: [PATCH 109/137] [#2409] Made `GET /api/v1/accounts/:id/favourites` auth-optional, adjusted tests. --- .../controllers/status_controller.ex | 2 +- .../controllers/account_controller.ex | 5 ++++- lib/pleroma/web/router.ex | 7 ++++++- .../controllers/account_controller_test.exs | 20 ++++++++++++------- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index 4fa9a2120..45601ff59 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -357,7 +357,7 @@ def context(%{assigns: %{user: user}} = conn, %{"id" => id}) do end @doc "GET /api/v1/favourites" - def favourites(%{assigns: %{user: user}} = conn, params) do + def favourites(%{assigns: %{user: %User{} = user}} = conn, params) do activities = ActivityPub.fetch_favourites( user, diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index 237c8157e..be7477867 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -39,7 +39,10 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do ] ) - plug(OAuthScopesPlug, %{scopes: ["read:favourites"]} when action == :favourites) + plug( + OAuthScopesPlug, + %{scopes: ["read:favourites"], fallback: :proceed_unauthenticated} when action == :favourites + ) plug(RateLimiter, [name: :account_confirmation_resend] when action == :confirmation_resend) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 57efc3314..becce3098 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -312,10 +312,14 @@ defmodule Pleroma.Web.Router do post("/scrobble", ScrobbleController, :new_scrobble) end + scope [] do + pipe_through(:api) + get("/accounts/:id/favourites", AccountController, :favourites) + end + scope [] do pipe_through(:authenticated_api) - get("/accounts/:id/favourites", AccountController, :favourites) post("/accounts/:id/subscribe", AccountController, :subscribe) post("/accounts/:id/unsubscribe", AccountController, :unsubscribe) end @@ -404,6 +408,7 @@ defmodule Pleroma.Web.Router do put("/scheduled_statuses/:id", ScheduledActivityController, :update) delete("/scheduled_statuses/:id", ScheduledActivityController, :delete) + # Unlike `GET /api/v1/accounts/:id/favourites`, demands authentication get("/favourites", StatusController, :favourites) get("/bookmarks", StatusController, :bookmarks) diff --git a/test/web/pleroma_api/controllers/account_controller_test.exs b/test/web/pleroma_api/controllers/account_controller_test.exs index ae5334015..6b671a667 100644 --- a/test/web/pleroma_api/controllers/account_controller_test.exs +++ b/test/web/pleroma_api/controllers/account_controller_test.exs @@ -151,15 +151,18 @@ test "returns list of statuses favorited by specified user", %{ assert like["id"] == activity.id end - test "does not return favorites for specified user_id when user is not logged in", %{ + test "returns favorites for specified user_id when requester is not logged in", %{ user: user } do activity = insert(:note_activity) CommonAPI.favorite(user, activity.id) - build_conn() - |> get("/api/v1/pleroma/accounts/#{user.id}/favourites") - |> json_response(403) + response = + build_conn() + |> get("/api/v1/pleroma/accounts/#{user.id}/favourites") + |> json_response(200) + + assert length(response) == 1 end test "returns favorited DM only when user is logged in and he is one of recipients", %{ @@ -185,9 +188,12 @@ test "returns favorited DM only when user is logged in and he is one of recipien assert length(response) == 1 end - build_conn() - |> get("/api/v1/pleroma/accounts/#{user.id}/favourites") - |> json_response(403) + response = + build_conn() + |> get("/api/v1/pleroma/accounts/#{user.id}/favourites") + |> json_response(200) + + assert length(response) == 0 end test "does not return others' favorited DM when user is not one of recipients", %{ From 0d05e1fe397d75d4381d9059bd1c049ab7030085 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 25 Apr 2020 18:24:10 +0300 Subject: [PATCH 110/137] [#1706] Prevented error on unresolved activity actors for timeline actions. --- lib/pleroma/web/admin_api/views/status_view.ex | 18 +++--------------- .../web/mastodon_api/views/status_view.ex | 13 ++++++++++--- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/lib/pleroma/web/admin_api/views/status_view.ex b/lib/pleroma/web/admin_api/views/status_view.ex index 360ddc22c..3637dee24 100644 --- a/lib/pleroma/web/admin_api/views/status_view.ex +++ b/lib/pleroma/web/admin_api/views/status_view.ex @@ -8,15 +8,16 @@ defmodule Pleroma.Web.AdminAPI.StatusView do require Pleroma.Constants alias Pleroma.User + alias Pleroma.Web.MastodonAPI.StatusView def render("index.json", opts) do safe_render_many(opts.activities, __MODULE__, "show.json", opts) end def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} = opts) do - user = get_user(activity.data["actor"]) + user = StatusView.get_user(activity.data["actor"]) - Pleroma.Web.MastodonAPI.StatusView.render("show.json", opts) + StatusView.render("show.json", opts) |> Map.merge(%{account: merge_account_views(user)}) end @@ -26,17 +27,4 @@ defp merge_account_views(%User{} = user) do end defp merge_account_views(_), do: %{} - - defp get_user(ap_id) do - cond do - user = User.get_cached_by_ap_id(ap_id) -> - user - - user = User.get_by_guessed_nickname(ap_id) -> - user - - true -> - User.error_user(ap_id) - end - end end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index b5850e1ae..b0c53acd9 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -45,7 +45,7 @@ defp get_replied_to_activities(activities) do end) end - defp get_user(ap_id) do + def get_user(ap_id, fake_record_fallback \\ true) do cond do user = User.get_cached_by_ap_id(ap_id) -> user @@ -53,8 +53,11 @@ defp get_user(ap_id) do user = User.get_by_guessed_nickname(ap_id) -> user - true -> + fake_record_fallback -> + # TODO: refactor (fake records is never a good idea) User.error_user(ap_id) + + true -> nil end end @@ -97,7 +100,11 @@ def render("index.json", opts) do UserRelationship.view_relationships_option(nil, []) true -> - actors = Enum.map(activities ++ parent_activities, &get_user(&1.data["actor"])) + # Note: unresolved users are filtered out + actors = + (activities ++ parent_activities) + |> Enum.map(&get_user(&1.data["actor"], false)) + |> Enum.filter(& &1) UserRelationship.view_relationships_option(reading_user, actors, source_mutes_only: opts[:skip_relationships] From e16437ff191f17b7ec59504d3c38e582ba76eedc Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 25 Apr 2020 18:42:08 +0300 Subject: [PATCH 111/137] [#1706] Formatting fix. --- lib/pleroma/web/mastodon_api/views/status_view.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index b0c53acd9..1d9082c09 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -57,7 +57,8 @@ def get_user(ap_id, fake_record_fallback \\ true) do # TODO: refactor (fake records is never a good idea) User.error_user(ap_id) - true -> nil + true -> + nil end end From 1bd9749a8f31e5f087b0d0ca75b13f4baf461997 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 26 Apr 2020 00:28:57 -0500 Subject: [PATCH 112/137] Let blob: pass CSP --- docs/configuration/hardening.md | 2 +- lib/pleroma/plugs/http_security_plug.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration/hardening.md b/docs/configuration/hardening.md index b54c28850..d3bfc4e4a 100644 --- a/docs/configuration/hardening.md +++ b/docs/configuration/hardening.md @@ -36,7 +36,7 @@ content-security-policy: default-src 'none'; base-uri 'self'; frame-ancestors 'none'; - img-src 'self' data: https:; + img-src 'self' data: blob: https:; media-src 'self' https:; style-src 'self' 'unsafe-inline'; font-src 'self'; diff --git a/lib/pleroma/plugs/http_security_plug.ex b/lib/pleroma/plugs/http_security_plug.ex index 81e6b4f2a..6462797b6 100644 --- a/lib/pleroma/plugs/http_security_plug.ex +++ b/lib/pleroma/plugs/http_security_plug.ex @@ -75,7 +75,7 @@ defp csp_string do "default-src 'none'", "base-uri 'self'", "frame-ancestors 'none'", - "img-src 'self' data: https:", + "img-src 'self' data: blob: https:", "media-src 'self' https:", "style-src 'self' 'unsafe-inline'", "font-src 'self'", From a626cb682cc8fd6cad91484db064ed22646960af Mon Sep 17 00:00:00 2001 From: fence Date: Mon, 27 Apr 2020 17:55:33 +0200 Subject: [PATCH 113/137] secure mongoose auth endpoint --- .../web/mongooseim/mongoose_im_controller.ex | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex index 04d823b36..744cf5227 100644 --- a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex +++ b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex @@ -26,21 +26,36 @@ def user_exists(conn, %{"user" => username}) do end def check_password(conn, %{"user" => username, "pass" => password}) do - with %User{password_hash: password_hash} <- - Repo.get_by(User, nickname: username, local: true), - true <- Pbkdf2.checkpw(password, password_hash) do - conn - |> json(true) - else - false -> - conn - |> put_status(:forbidden) - |> json(false) + user = Repo.get_by(User, nickname: username, local: true) - _ -> + case User.account_status(user) do + :deactivated -> conn |> put_status(:not_found) |> json(false) + + :confirmation_pending -> + conn + |> put_status(:not_found) + |> json(false) + + _ -> + with %User{password_hash: password_hash} <- + user, + true <- Pbkdf2.checkpw(password, password_hash) do + conn + |> json(true) + else + false -> + conn + |> put_status(:forbidden) + |> json(false) + + _ -> + conn + |> put_status(:not_found) + |> json(false) + end end end end From 5c7cc109172c84b991fad7eebbdd51e75f0c5382 Mon Sep 17 00:00:00 2001 From: fence Date: Mon, 27 Apr 2020 18:31:00 +0200 Subject: [PATCH 114/137] add tests for deactivated users for mongoose auth --- lib/pleroma/web/mongooseim/mongoose_im_controller.ex | 7 ++++++- test/web/mongooseim/mongoose_im_controller_test.exs | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex index 744cf5227..c15b4bfb8 100644 --- a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex +++ b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex @@ -27,8 +27,13 @@ def user_exists(conn, %{"user" => username}) do def check_password(conn, %{"user" => username, "pass" => password}) do user = Repo.get_by(User, nickname: username, local: true) + + state = case user do + nil -> nil + _ -> User.account_status(user) + end - case User.account_status(user) do + case state do :deactivated -> conn |> put_status(:not_found) diff --git a/test/web/mongooseim/mongoose_im_controller_test.exs b/test/web/mongooseim/mongoose_im_controller_test.exs index 291ae54fc..5987111e5 100644 --- a/test/web/mongooseim/mongoose_im_controller_test.exs +++ b/test/web/mongooseim/mongoose_im_controller_test.exs @@ -34,6 +34,7 @@ test "/user_exists", %{conn: conn} do test "/check_password", %{conn: conn} do user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt("cool")) + _deactivated_user = insert(:user, nickname: "konata", local: false, deactivated: true) res = conn @@ -49,6 +50,14 @@ test "/check_password", %{conn: conn} do assert res == false + res = + conn + |> get(mongoose_im_path(conn, :check_password), user: "konata", pass: "1337") + |> json_response(404) + + assert res == false + + res = conn |> get(mongoose_im_path(conn, :check_password), user: "nobody", pass: "cool") From 2efc00b3cf5413ae7f8e8411ee1372343ee2618a Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 27 Apr 2020 20:46:52 +0400 Subject: [PATCH 115/137] Use `json_response_and_validate_schema/2` in tests to validate OpenAPI schema --- .../api_spec/operations/account_operation.ex | 27 +- lib/pleroma/web/api_spec/schemas/account.ex | 2 +- lib/pleroma/web/controller_helper.ex | 5 +- .../controllers/account_controller.ex | 4 +- test/support/conn_case.ex | 21 +- .../update_credentials_test.exs | 60 +- .../controllers/account_controller_test.exs | 569 ++++++++---------- 7 files changed, 330 insertions(+), 358 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index fcf030037..bf8d21059 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias OpenApiSpex.Reference alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.Account + alias Pleroma.Web.ApiSpec.Schemas.ApiError alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse alias Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest @@ -38,7 +39,10 @@ def create_operation do operationId: "AccountController.create", requestBody: request_body("Parameters", AccountCreateRequest, required: true), responses: %{ - 200 => Operation.response("Account", "application/json", AccountCreateResponse) + 200 => Operation.response("Account", "application/json", AccountCreateResponse), + 400 => Operation.response("Error", "application/json", ApiError), + 403 => Operation.response("Error", "application/json", ApiError), + 429 => Operation.response("Error", "application/json", ApiError) } } end @@ -65,7 +69,8 @@ def update_credentials_operation do security: [%{"oAuth" => ["write:accounts"]}], requestBody: request_body("Parameters", AccountUpdateCredentialsRequest, required: true), responses: %{ - 200 => Operation.response("Account", "application/json", Account) + 200 => Operation.response("Account", "application/json", Account), + 403 => Operation.response("Error", "application/json", ApiError) } } end @@ -102,7 +107,8 @@ def show_operation do description: "View information about a profile.", parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], responses: %{ - 200 => Operation.response("Account", "application/json", Account) + 200 => Operation.response("Account", "application/json", Account), + 404 => Operation.response("Error", "application/json", ApiError) } } end @@ -140,7 +146,8 @@ def statuses_operation do ) ] ++ pagination_params(), responses: %{ - 200 => Operation.response("Statuses", "application/json", StatusesResponse) + 200 => Operation.response("Statuses", "application/json", StatusesResponse), + 404 => Operation.response("Error", "application/json", ApiError) } } end @@ -204,7 +211,9 @@ def follow_operation do ) ], responses: %{ - 200 => Operation.response("Relationship", "application/json", AccountRelationship) + 200 => Operation.response("Relationship", "application/json", AccountRelationship), + 400 => Operation.response("Error", "application/json", ApiError), + 404 => Operation.response("Error", "application/json", ApiError) } } end @@ -218,7 +227,9 @@ def unfollow_operation do description: "Unfollow the given account", parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], responses: %{ - 200 => Operation.response("Relationship", "application/json", AccountRelationship) + 200 => Operation.response("Relationship", "application/json", AccountRelationship), + 400 => Operation.response("Error", "application/json", ApiError), + 404 => Operation.response("Error", "application/json", ApiError) } } end @@ -298,7 +309,9 @@ def follows_operation do security: [%{"oAuth" => ["follow", "write:follows"]}], requestBody: request_body("Parameters", AccountFollowsRequest, required: true), responses: %{ - 200 => Operation.response("Account", "application/json", AccountRelationship) + 200 => Operation.response("Account", "application/json", AccountRelationship), + 400 => Operation.response("Error", "application/json", ApiError), + 404 => Operation.response("Error", "application/json", ApiError) } } end diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex index f57015254..d128feb30 100644 --- a/lib/pleroma/web/api_spec/schemas/account.ex +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -41,7 +41,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do type: :object, properties: %{ allow_following_move: %Schema{type: :boolean}, - background_image: %Schema{type: :boolean, nullable: true}, + background_image: %Schema{type: :string, nullable: true}, chat_token: %Schema{type: :string}, confirmation_pending: %Schema{type: :boolean}, hide_favorites: %Schema{type: :boolean}, diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 4780081b2..eb97ae975 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -82,8 +82,9 @@ def add_link_headers(conn, activities, extra_params) do end end - def assign_account_by_id(%{params: %{"id" => id}} = conn, _) do - case Pleroma.User.get_cached_by_id(id) do + def assign_account_by_id(conn, _) do + # TODO: use `conn.params[:id]` only after moving to OpenAPI + case Pleroma.User.get_cached_by_id(conn.params[:id] || conn.params["id"]) do %Pleroma.User{} = account -> assign(conn, :account, account) nil -> Pleroma.Web.MastodonAPI.FallbackController.call(conn, {:error, :not_found}) |> halt() end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 93df79645..b1513001b 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -26,6 +26,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.OAuth.Token alias Pleroma.Web.TwitterAPI.TwitterAPI + plug(OpenApiSpex.Plug.CastAndValidate, render_error: Pleroma.Web.ApiSpec.RenderError) + plug(:skip_plug, OAuthScopesPlug when action == :identity_proofs) plug( @@ -83,8 +85,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug(RateLimiter, [name: :app_account_creation] when action == :create) plug(:assign_account_by_id when action in @needs_account) - plug(OpenApiSpex.Plug.CastAndValidate, render_error: Pleroma.Web.ApiSpec.RenderError) - action_fallback(Pleroma.Web.MastodonAPI.FallbackController) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.AccountOperation diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 8099461cc..fa30a0c41 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -56,7 +56,14 @@ defp request_content_type(%{conn: conn}) do [conn: conn] end - defp json_response_and_validate_schema(conn, status \\ nil) do + defp json_response_and_validate_schema( + %{ + private: %{ + open_api_spex: %{operation_id: op_id, operation_lookup: lookup, spec: spec} + } + } = conn, + status + ) do content_type = conn |> Plug.Conn.get_resp_header("content-type") @@ -64,10 +71,12 @@ defp json_response_and_validate_schema(conn, status \\ nil) do |> String.split(";") |> List.first() - status = status || conn.status + status = Plug.Conn.Status.code(status) - %{private: %{open_api_spex: %{operation_id: op_id, operation_lookup: lookup, spec: spec}}} = - conn + unless lookup[op_id].responses[status] do + err = "Response schema not found for #{conn.status} #{conn.method} #{conn.request_path}" + flunk(err) + end schema = lookup[op_id].responses[status].content[content_type].schema json = json_response(conn, status) @@ -92,6 +101,10 @@ defp json_response_and_validate_schema(conn, status \\ nil) do end end + defp json_response_and_validate_schema(conn, _status) do + flunk("Response schema not found for #{conn.method} #{conn.request_path} #{conn.status}") + end + defp ensure_federating_or_authenticated(conn, url, user) do initial_setting = Config.get([:instance, :federating]) on_exit(fn -> Config.put([:instance, :federating], initial_setting) end) diff --git a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs index a3356c12f..fdb6d4c5d 100644 --- a/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs @@ -26,7 +26,7 @@ test "sets user settings in a generic way", %{conn: conn} do } }) - assert user_data = json_response(res_conn, 200) + assert user_data = json_response_and_validate_schema(res_conn, 200) assert user_data["pleroma"]["settings_store"] == %{"pleroma_fe" => %{"theme" => "bla"}} user = Repo.get(User, user_data["id"]) @@ -42,7 +42,7 @@ test "sets user settings in a generic way", %{conn: conn} do } }) - assert user_data = json_response(res_conn, 200) + assert user_data = json_response_and_validate_schema(res_conn, 200) assert user_data["pleroma"]["settings_store"] == %{ @@ -63,7 +63,7 @@ test "sets user settings in a generic way", %{conn: conn} do } }) - assert user_data = json_response(res_conn, 200) + assert user_data = json_response_and_validate_schema(res_conn, 200) assert user_data["pleroma"]["settings_store"] == %{ @@ -80,7 +80,7 @@ test "updates the user's bio", %{conn: conn} do "note" => "I drink #cofe with @#{user2.nickname}\n\nsuya.." }) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["note"] == ~s(I drink #cofe with %{"pleroma" => %{"discoverable" => true}}} = conn |> patch("/api/v1/accounts/update_credentials", %{discoverable: "true"}) - |> json_response(:ok) + |> json_response_and_validate_schema(:ok) assert %{"source" => %{"pleroma" => %{"discoverable" => false}}} = conn |> patch("/api/v1/accounts/update_credentials", %{discoverable: "false"}) - |> json_response(:ok) + |> json_response_and_validate_schema(:ok) end test "updates the user's hide_followers_count and hide_follows_count", %{conn: conn} do @@ -138,7 +138,7 @@ test "updates the user's hide_followers_count and hide_follows_count", %{conn: c hide_follows_count: "true" }) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["pleroma"]["hide_followers_count"] == true assert user_data["pleroma"]["hide_follows_count"] == true end @@ -147,7 +147,7 @@ test "updates the user's skip_thread_containment option", %{user: user, conn: co response = conn |> patch("/api/v1/accounts/update_credentials", %{skip_thread_containment: "true"}) - |> json_response(200) + |> json_response_and_validate_schema(200) assert response["pleroma"]["skip_thread_containment"] == true assert refresh_record(user).skip_thread_containment @@ -156,28 +156,28 @@ test "updates the user's skip_thread_containment option", %{user: user, conn: co test "updates the user's hide_follows status", %{conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{hide_follows: "true"}) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["pleroma"]["hide_follows"] == true end test "updates the user's hide_favorites status", %{conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{hide_favorites: "true"}) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["pleroma"]["hide_favorites"] == true end test "updates the user's show_role status", %{conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{show_role: "false"}) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["source"]["pleroma"]["show_role"] == false end test "updates the user's no_rich_text status", %{conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{no_rich_text: "true"}) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["source"]["pleroma"]["no_rich_text"] == true end @@ -185,7 +185,7 @@ test "updates the user's name", %{conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{"display_name" => "markorepairs"}) - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["display_name"] == "markorepairs" end @@ -198,7 +198,7 @@ test "updates the user's avatar", %{user: user, conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{"avatar" => new_avatar}) - assert user_response = json_response(conn, 200) + assert user_response = json_response_and_validate_schema(conn, 200) assert user_response["avatar"] != User.avatar_url(user) end @@ -211,7 +211,7 @@ test "updates the user's banner", %{user: user, conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{"header" => new_header}) - assert user_response = json_response(conn, 200) + assert user_response = json_response_and_validate_schema(conn, 200) assert user_response["header"] != User.banner_url(user) end @@ -227,7 +227,7 @@ test "updates the user's background", %{conn: conn} do "pleroma_background_image" => new_header }) - assert user_response = json_response(conn, 200) + assert user_response = json_response_and_validate_schema(conn, 200) assert user_response["pleroma"]["background_image"] end @@ -244,9 +244,9 @@ test "requires 'write:accounts' permission" do if token == token1 do assert %{"error" => "Insufficient permissions: write:accounts."} == - json_response(conn, 403) + json_response_and_validate_schema(conn, 403) else - assert json_response(conn, 200) + assert json_response_and_validate_schema(conn, 200) end end end @@ -261,11 +261,11 @@ test "updates profile emojos", %{user: user, conn: conn} do "display_name" => name }) - assert json_response(ret_conn, 200) + assert json_response_and_validate_schema(ret_conn, 200) conn = get(conn, "/api/v1/accounts/#{user.id}") - assert user_data = json_response(conn, 200) + assert user_data = json_response_and_validate_schema(conn, 200) assert user_data["note"] == note assert user_data["display_name"] == name @@ -281,7 +281,7 @@ test "update fields", %{conn: conn} do account_data = conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response(200) + |> json_response_and_validate_schema(200) assert account_data["fields"] == [ %{"name" => "foo", "value" => "bar"}, @@ -314,7 +314,7 @@ test "update fields via x-www-form-urlencoded", %{conn: conn} do conn |> put_req_header("content-type", "application/x-www-form-urlencoded") |> patch("/api/v1/accounts/update_credentials", fields) - |> json_response(200) + |> json_response_and_validate_schema(200) assert account["fields"] == [ %{"name" => "foo", "value" => "bar"}, @@ -339,7 +339,7 @@ test "update fields with empty name", %{conn: conn} do account = conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response(200) + |> json_response_and_validate_schema(200) assert account["fields"] == [ %{"name" => "foo", "value" => ""} @@ -358,14 +358,14 @@ test "update fields when invalid request", %{conn: conn} do assert %{"error" => "Invalid request"} == conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response(403) + |> json_response_and_validate_schema(403) fields = [%{"name" => long_name, "value" => "bar"}] assert %{"error" => "Invalid request"} == conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response(403) + |> json_response_and_validate_schema(403) Pleroma.Config.put([:instance, :max_account_fields], 1) @@ -377,7 +377,7 @@ test "update fields when invalid request", %{conn: conn} do assert %{"error" => "Invalid request"} == conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response(403) + |> json_response_and_validate_schema(403) end end end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index d885b5e08..ba70ba66c 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -10,54 +10,46 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.InternalFetchActor - alias Pleroma.Web.ApiSpec alias Pleroma.Web.CommonAPI alias Pleroma.Web.OAuth.Token - import OpenApiSpex.TestAssertions import Pleroma.Factory describe "account fetching" do setup do: clear_config([:instance, :limit_to_local_content]) test "works by id" do - user = insert(:user) + %User{id: user_id} = insert(:user) - conn = - build_conn() - |> get("/api/v1/accounts/#{user.id}") + assert %{"id" => ^user_id} = + build_conn() + |> get("/api/v1/accounts/#{user_id}") + |> json_response_and_validate_schema(200) - assert %{"id" => id} = json_response(conn, 200) - assert id == to_string(user.id) - - conn = - build_conn() - |> get("/api/v1/accounts/-1") - - assert %{"error" => "Can't find user"} = json_response(conn, 404) + assert %{"error" => "Can't find user"} = + build_conn() + |> get("/api/v1/accounts/-1") + |> json_response_and_validate_schema(404) end test "works by nickname" do user = insert(:user) - conn = - build_conn() - |> get("/api/v1/accounts/#{user.nickname}") - - assert %{"id" => id} = json_response(conn, 200) - assert id == user.id + assert %{"id" => user_id} = + build_conn() + |> get("/api/v1/accounts/#{user.nickname}") + |> json_response_and_validate_schema(200) end test "works by nickname for remote users" do Config.put([:instance, :limit_to_local_content], false) + user = insert(:user, nickname: "user@example.com", local: false) - conn = - build_conn() - |> get("/api/v1/accounts/#{user.nickname}") - - assert %{"id" => id} = json_response(conn, 200) - assert id == user.id + assert %{"id" => user_id} = + build_conn() + |> get("/api/v1/accounts/#{user.nickname}") + |> json_response_and_validate_schema(200) end test "respects limit_to_local_content == :all for remote user nicknames" do @@ -65,11 +57,9 @@ test "respects limit_to_local_content == :all for remote user nicknames" do user = insert(:user, nickname: "user@example.com", local: false) - conn = - build_conn() - |> get("/api/v1/accounts/#{user.nickname}") - - assert json_response(conn, 404) + assert build_conn() + |> get("/api/v1/accounts/#{user.nickname}") + |> json_response_and_validate_schema(404) end test "respects limit_to_local_content == :unauthenticated for remote user nicknames" do @@ -82,7 +72,7 @@ test "respects limit_to_local_content == :unauthenticated for remote user nickna build_conn() |> get("/api/v1/accounts/#{user.nickname}") - assert json_response(conn, 404) + assert json_response_and_validate_schema(conn, 404) conn = build_conn() @@ -90,7 +80,7 @@ test "respects limit_to_local_content == :unauthenticated for remote user nickna |> assign(:token, insert(:oauth_token, user: reading_user, scopes: ["read:accounts"])) |> get("/api/v1/accounts/#{user.nickname}") - assert %{"id" => id} = json_response(conn, 200) + assert %{"id" => id} = json_response_and_validate_schema(conn, 200) assert id == user.id end @@ -101,21 +91,21 @@ test "accounts fetches correct account for nicknames beginning with numbers", %{ user_one = insert(:user, %{id: 1212}) user_two = insert(:user, %{nickname: "#{user_one.id}garbage"}) - resp_one = + acc_one = conn |> get("/api/v1/accounts/#{user_one.id}") + |> json_response_and_validate_schema(:ok) - resp_two = + acc_two = conn |> get("/api/v1/accounts/#{user_two.nickname}") + |> json_response_and_validate_schema(:ok) - resp_three = + acc_three = conn |> get("/api/v1/accounts/#{user_two.id}") + |> json_response_and_validate_schema(:ok) - acc_one = json_response(resp_one, 200) - acc_two = json_response(resp_two, 200) - acc_three = json_response(resp_three, 200) refute acc_one == acc_two assert acc_two == acc_three end @@ -123,23 +113,19 @@ test "accounts fetches correct account for nicknames beginning with numbers", %{ test "returns 404 when user is invisible", %{conn: conn} do user = insert(:user, %{invisible: true}) - resp = - conn - |> get("/api/v1/accounts/#{user.nickname}") - |> json_response(404) - - assert %{"error" => "Can't find user"} = resp + assert %{"error" => "Can't find user"} = + conn + |> get("/api/v1/accounts/#{user.nickname}") + |> json_response_and_validate_schema(404) end test "returns 404 for internal.fetch actor", %{conn: conn} do %User{nickname: "internal.fetch"} = InternalFetchActor.get_actor() - resp = - conn - |> get("/api/v1/accounts/internal.fetch") - |> json_response(404) - - assert %{"error" => "Can't find user"} = resp + assert %{"error" => "Can't find user"} = + conn + |> get("/api/v1/accounts/internal.fetch") + |> json_response_and_validate_schema(404) end end @@ -157,27 +143,25 @@ defp local_and_remote_users do setup do: clear_config([:restrict_unauthenticated, :profiles, :remote], true) test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do - res_conn = get(conn, "/api/v1/accounts/#{local.id}") + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{local.id}") + |> json_response_and_validate_schema(:not_found) - assert json_response(res_conn, :not_found) == %{ - "error" => "Can't find user" - } - - res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - - assert json_response(res_conn, :not_found) == %{ - "error" => "Can't find user" - } + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{remote.id}") + |> json_response_and_validate_schema(:not_found) end test "if user is authenticated", %{local: local, remote: remote} do %{conn: conn} = oauth_access(["read"]) res_conn = get(conn, "/api/v1/accounts/#{local.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) end end @@ -189,22 +173,22 @@ test "if user is authenticated", %{local: local, remote: remote} do test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}") - assert json_response(res_conn, :not_found) == %{ + assert json_response_and_validate_schema(res_conn, :not_found) == %{ "error" => "Can't find user" } res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) end test "if user is authenticated", %{local: local, remote: remote} do %{conn: conn} = oauth_access(["read"]) res_conn = get(conn, "/api/v1/accounts/#{local.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) end end @@ -215,11 +199,11 @@ test "if user is authenticated", %{local: local, remote: remote} do test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - assert json_response(res_conn, :not_found) == %{ + assert json_response_and_validate_schema(res_conn, :not_found) == %{ "error" => "Can't find user" } end @@ -228,10 +212,10 @@ test "if user is authenticated", %{local: local, remote: remote} do %{conn: conn} = oauth_access(["read"]) res_conn = get(conn, "/api/v1/accounts/#{local.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) res_conn = get(conn, "/api/v1/accounts/#{remote.id}") - assert %{"id" => _} = json_response(res_conn, 200) + assert %{"id" => _} = json_response_and_validate_schema(res_conn, 200) end end @@ -247,28 +231,37 @@ test "respects blocks", %{user: user_one, conn: conn} do {:ok, activity} = CommonAPI.post(user_two, %{"status" => "User one sux0rz"}) {:ok, repeat, _} = CommonAPI.repeat(activity.id, user_three) - assert resp = get(conn, "/api/v1/accounts/#{user_two.id}/statuses") |> json_response(200) + assert resp = + conn + |> get("/api/v1/accounts/#{user_two.id}/statuses") + |> json_response_and_validate_schema(200) + assert [%{"id" => id}] = resp - assert_schema(resp, "StatusesResponse", ApiSpec.spec()) assert id == activity.id # Even a blocked user will deliver the full user timeline, there would be # no point in looking at a blocked users timeline otherwise - assert resp = get(conn, "/api/v1/accounts/#{user_two.id}/statuses") |> json_response(200) + assert resp = + conn + |> get("/api/v1/accounts/#{user_two.id}/statuses") + |> json_response_and_validate_schema(200) + assert [%{"id" => id}] = resp assert id == activity.id - assert_schema(resp, "StatusesResponse", ApiSpec.spec()) # Third user's timeline includes the repeat when viewed by unauthenticated user - resp = get(build_conn(), "/api/v1/accounts/#{user_three.id}/statuses") |> json_response(200) + resp = + build_conn() + |> get("/api/v1/accounts/#{user_three.id}/statuses") + |> json_response_and_validate_schema(200) + assert [%{"id" => id}] = resp assert id == repeat.id - assert_schema(resp, "StatusesResponse", ApiSpec.spec()) # When viewing a third user's timeline, the blocked users' statuses will NOT be shown resp = get(conn, "/api/v1/accounts/#{user_three.id}/statuses") - assert [] = json_response(resp, 200) + assert [] == json_response_and_validate_schema(resp, 200) end test "gets users statuses", %{conn: conn} do @@ -289,34 +282,36 @@ test "gets users statuses", %{conn: conn} do {:ok, private_activity} = CommonAPI.post(user_one, %{"status" => "private", "visibility" => "private"}) - resp = get(conn, "/api/v1/accounts/#{user_one.id}/statuses") |> json_response(200) + # TODO!!! + resp = + conn + |> get("/api/v1/accounts/#{user_one.id}/statuses") + |> json_response_and_validate_schema(200) + assert [%{"id" => id}] = resp assert id == to_string(activity.id) - assert_schema(resp, "StatusesResponse", ApiSpec.spec()) resp = conn |> assign(:user, user_two) |> assign(:token, insert(:oauth_token, user: user_two, scopes: ["read:statuses"])) |> get("/api/v1/accounts/#{user_one.id}/statuses") - |> json_response(200) + |> json_response_and_validate_schema(200) assert [%{"id" => id_one}, %{"id" => id_two}] = resp assert id_one == to_string(direct_activity.id) assert id_two == to_string(activity.id) - assert_schema(resp, "StatusesResponse", ApiSpec.spec()) resp = conn |> assign(:user, user_three) |> assign(:token, insert(:oauth_token, user: user_three, scopes: ["read:statuses"])) |> get("/api/v1/accounts/#{user_one.id}/statuses") - |> json_response(200) + |> json_response_and_validate_schema(200) assert [%{"id" => id_one}, %{"id" => id_two}] = resp assert id_one == to_string(private_activity.id) assert id_two == to_string(activity.id) - assert_schema(resp, "StatusesResponse", ApiSpec.spec()) end test "unimplemented pinned statuses feature", %{conn: conn} do @@ -325,7 +320,7 @@ test "unimplemented pinned statuses feature", %{conn: conn} do conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?pinned=true") - assert json_response(conn, 200) == [] + assert json_response_and_validate_schema(conn, 200) == [] end test "gets an users media", %{conn: conn} do @@ -340,61 +335,48 @@ test "gets an users media", %{conn: conn} do {:ok, %{id: media_id}} = ActivityPub.upload(file, actor: user.ap_id) - {:ok, image_post} = CommonAPI.post(user, %{"status" => "cofe", "media_ids" => [media_id]}) + {:ok, %{id: image_post_id}} = + CommonAPI.post(user, %{"status" => "cofe", "media_ids" => [media_id]}) conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?only_media=true") - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(image_post.id) - assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) + assert [%{"id" => ^image_post_id}] = json_response_and_validate_schema(conn, 200) conn = get(build_conn(), "/api/v1/accounts/#{user.id}/statuses?only_media=1") - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(image_post.id) - assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) + assert [%{"id" => ^image_post_id}] = json_response_and_validate_schema(conn, 200) end test "gets a user's statuses without reblogs", %{user: user, conn: conn} do - {:ok, post} = CommonAPI.post(user, %{"status" => "HI!!!"}) - {:ok, _, _} = CommonAPI.repeat(post.id, user) + {:ok, %{id: post_id}} = CommonAPI.post(user, %{"status" => "HI!!!"}) + {:ok, _, _} = CommonAPI.repeat(post_id, user) conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?exclude_reblogs=true") - - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(post.id) - assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) + assert [%{"id" => ^post_id}] = json_response_and_validate_schema(conn, 200) conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?exclude_reblogs=1") - - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(post.id) - assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) + assert [%{"id" => ^post_id}] = json_response_and_validate_schema(conn, 200) end test "filters user's statuses by a hashtag", %{user: user, conn: conn} do - {:ok, post} = CommonAPI.post(user, %{"status" => "#hashtag"}) + {:ok, %{id: post_id}} = CommonAPI.post(user, %{"status" => "#hashtag"}) {:ok, _post} = CommonAPI.post(user, %{"status" => "hashtag"}) conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?tagged=hashtag") - - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(post.id) - assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) + assert [%{"id" => ^post_id}] = json_response_and_validate_schema(conn, 200) end test "the user views their own timelines and excludes direct messages", %{ user: user, conn: conn } do - {:ok, public_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "public"}) + {:ok, %{id: public_activity_id}} = + CommonAPI.post(user, %{"status" => ".", "visibility" => "public"}) + {:ok, _direct_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) conn = get(conn, "/api/v1/accounts/#{user.id}/statuses?exclude_visibilities[]=direct") - - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(public_activity.id) - assert_schema(json_response(conn, 200), "StatusesResponse", ApiSpec.spec()) + assert [%{"id" => ^public_activity_id}] = json_response_and_validate_schema(conn, 200) end end @@ -414,29 +396,25 @@ defp local_and_remote_activities(%{local: local, remote: remote}) do setup do: clear_config([:restrict_unauthenticated, :profiles, :remote], true) test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do - res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{local.id}/statuses") + |> json_response_and_validate_schema(:not_found) - assert json_response(res_conn, :not_found) == %{ - "error" => "Can't find user" - } - - res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") - - assert json_response(res_conn, :not_found) == %{ - "error" => "Can't find user" - } + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{remote.id}/statuses") + |> json_response_and_validate_schema(:not_found) end test "if user is authenticated", %{local: local, remote: remote} do %{conn: conn} = oauth_access(["read"]) res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 end end @@ -447,27 +425,23 @@ test "if user is authenticated", %{local: local, remote: remote} do setup do: clear_config([:restrict_unauthenticated, :profiles, :local], true) test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do - res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") - - assert json_response(res_conn, :not_found) == %{ - "error" => "Can't find user" - } + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{local.id}/statuses") + |> json_response_and_validate_schema(:not_found) res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 end test "if user is authenticated", %{local: local, remote: remote} do %{conn: conn} = oauth_access(["read"]) res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 end end @@ -479,26 +453,22 @@ test "if user is authenticated", %{local: local, remote: remote} do test "if user is unauthenticated", %{conn: conn, local: local, remote: remote} do res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 - res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") - - assert json_response(res_conn, :not_found) == %{ - "error" => "Can't find user" - } + assert %{"error" => "Can't find user"} == + conn + |> get("/api/v1/accounts/#{remote.id}/statuses") + |> json_response_and_validate_schema(:not_found) end test "if user is authenticated", %{local: local, remote: remote} do %{conn: conn} = oauth_access(["read"]) res_conn = get(conn, "/api/v1/accounts/#{local.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 res_conn = get(conn, "/api/v1/accounts/#{remote.id}/statuses") - assert length(json_response(res_conn, 200)) == 1 - assert_schema(json_response(res_conn, 200), "StatusesResponse", ApiSpec.spec()) + assert length(json_response_and_validate_schema(res_conn, 200)) == 1 end end @@ -507,13 +477,11 @@ test "if user is authenticated", %{local: local, remote: remote} do test "getting followers", %{user: user, conn: conn} do other_user = insert(:user) - {:ok, user} = User.follow(user, other_user) + {:ok, %{id: user_id}} = User.follow(user, other_user) conn = get(conn, "/api/v1/accounts/#{other_user.id}/followers") - assert [%{"id" => id}] = json_response(conn, 200) - assert id == to_string(user.id) - assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) + assert [%{"id" => ^user_id}] = json_response_and_validate_schema(conn, 200) end test "getting followers, hide_followers", %{user: user, conn: conn} do @@ -522,7 +490,7 @@ test "getting followers, hide_followers", %{user: user, conn: conn} do conn = get(conn, "/api/v1/accounts/#{other_user.id}/followers") - assert [] == json_response(conn, 200) + assert [] == json_response_and_validate_schema(conn, 200) end test "getting followers, hide_followers, same user requesting" do @@ -536,40 +504,31 @@ test "getting followers, hide_followers, same user requesting" do |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["read:accounts"])) |> get("/api/v1/accounts/#{other_user.id}/followers") - refute [] == json_response(conn, 200) - assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) + refute [] == json_response_and_validate_schema(conn, 200) end test "getting followers, pagination", %{user: user, conn: conn} do - follower1 = insert(:user) - follower2 = insert(:user) - follower3 = insert(:user) - {:ok, _} = User.follow(follower1, user) - {:ok, _} = User.follow(follower2, user) - {:ok, _} = User.follow(follower3, user) + {:ok, %User{id: follower1_id}} = :user |> insert() |> User.follow(user) + {:ok, %User{id: follower2_id}} = :user |> insert() |> User.follow(user) + {:ok, %User{id: follower3_id}} = :user |> insert() |> User.follow(user) - res_conn = get(conn, "/api/v1/accounts/#{user.id}/followers?since_id=#{follower1.id}") + assert [%{"id" => ^follower3_id}, %{"id" => ^follower2_id}] = + conn + |> get("/api/v1/accounts/#{user.id}/followers?since_id=#{follower1_id}") + |> json_response_and_validate_schema(200) - assert [%{"id" => id3}, %{"id" => id2}] = json_response(res_conn, 200) - assert id3 == follower3.id - assert id2 == follower2.id - assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) + assert [%{"id" => ^follower2_id}, %{"id" => ^follower1_id}] = + conn + |> get("/api/v1/accounts/#{user.id}/followers?max_id=#{follower3_id}") + |> json_response_and_validate_schema(200) - res_conn = get(conn, "/api/v1/accounts/#{user.id}/followers?max_id=#{follower3.id}") + res_conn = get(conn, "/api/v1/accounts/#{user.id}/followers?limit=1&max_id=#{follower3_id}") - assert [%{"id" => id2}, %{"id" => id1}] = json_response(res_conn, 200) - assert id2 == follower2.id - assert id1 == follower1.id - - res_conn = get(conn, "/api/v1/accounts/#{user.id}/followers?limit=1&max_id=#{follower3.id}") - - assert [%{"id" => id2}] = json_response(res_conn, 200) - assert id2 == follower2.id + assert [%{"id" => ^follower2_id}] = json_response_and_validate_schema(res_conn, 200) assert [link_header] = get_resp_header(res_conn, "link") - assert link_header =~ ~r/min_id=#{follower2.id}/ - assert link_header =~ ~r/max_id=#{follower2.id}/ - assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) + assert link_header =~ ~r/min_id=#{follower2_id}/ + assert link_header =~ ~r/max_id=#{follower2_id}/ end end @@ -582,9 +541,8 @@ test "getting following", %{user: user, conn: conn} do conn = get(conn, "/api/v1/accounts/#{user.id}/following") - assert [%{"id" => id}] = json_response(conn, 200) + assert [%{"id" => id}] = json_response_and_validate_schema(conn, 200) assert id == to_string(other_user.id) - assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) end test "getting following, hide_follows, other user requesting" do @@ -598,8 +556,7 @@ test "getting following, hide_follows, other user requesting" do |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["read:accounts"])) |> get("/api/v1/accounts/#{user.id}/following") - assert [] == json_response(conn, 200) - assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) + assert [] == json_response_and_validate_schema(conn, 200) end test "getting following, hide_follows, same user requesting" do @@ -613,7 +570,7 @@ test "getting following, hide_follows, same user requesting" do |> assign(:token, insert(:oauth_token, user: user, scopes: ["read:accounts"])) |> get("/api/v1/accounts/#{user.id}/following") - refute [] == json_response(conn, 200) + refute [] == json_response_and_validate_schema(conn, 200) end test "getting following, pagination", %{user: user, conn: conn} do @@ -626,28 +583,25 @@ test "getting following, pagination", %{user: user, conn: conn} do res_conn = get(conn, "/api/v1/accounts/#{user.id}/following?since_id=#{following1.id}") - assert [%{"id" => id3}, %{"id" => id2}] = json_response(res_conn, 200) + assert [%{"id" => id3}, %{"id" => id2}] = json_response_and_validate_schema(res_conn, 200) assert id3 == following3.id assert id2 == following2.id - assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{user.id}/following?max_id=#{following3.id}") - assert [%{"id" => id2}, %{"id" => id1}] = json_response(res_conn, 200) + assert [%{"id" => id2}, %{"id" => id1}] = json_response_and_validate_schema(res_conn, 200) assert id2 == following2.id assert id1 == following1.id - assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) res_conn = get(conn, "/api/v1/accounts/#{user.id}/following?limit=1&max_id=#{following3.id}") - assert [%{"id" => id2}] = json_response(res_conn, 200) + assert [%{"id" => id2}] = json_response_and_validate_schema(res_conn, 200) assert id2 == following2.id assert [link_header] = get_resp_header(res_conn, "link") assert link_header =~ ~r/min_id=#{following2.id}/ assert link_header =~ ~r/max_id=#{following2.id}/ - assert_schema(json_response(res_conn, 200), "AccountsResponse", ApiSpec.spec()) end end @@ -655,40 +609,37 @@ test "getting following, pagination", %{user: user, conn: conn} do setup do: oauth_access(["follow"]) test "following / unfollowing a user", %{conn: conn} do - other_user = insert(:user) + %{id: other_user_id, nickname: other_user_nickname} = insert(:user) - ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/follow") + assert %{"id" => _id, "following" => true} = + conn + |> post("/api/v1/accounts/#{other_user_id}/follow") + |> json_response_and_validate_schema(200) - assert %{"id" => _id, "following" => true} = json_response(ret_conn, 200) - assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "following" => false} = + conn + |> post("/api/v1/accounts/#{other_user_id}/unfollow") + |> json_response_and_validate_schema(200) - ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/unfollow") - - assert %{"id" => _id, "following" => false} = json_response(ret_conn, 200) - assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) - - conn = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/follows", %{"uri" => other_user.nickname}) - - assert %{"id" => id} = json_response(conn, 200) - assert id == to_string(other_user.id) - assert_schema(json_response(conn, 200), "Account", ApiSpec.spec()) + assert %{"id" => ^other_user_id} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/follows", %{"uri" => other_user_nickname}) + |> json_response_and_validate_schema(200) end test "cancelling follow request", %{conn: conn} do %{id: other_user_id} = insert(:user, %{locked: true}) - resp = conn |> post("/api/v1/accounts/#{other_user_id}/follow") |> json_response(:ok) + assert %{"id" => ^other_user_id, "following" => false, "requested" => true} = + conn + |> post("/api/v1/accounts/#{other_user_id}/follow") + |> json_response_and_validate_schema(:ok) - assert %{"id" => ^other_user_id, "following" => false, "requested" => true} = resp - assert_schema(resp, "AccountRelationship", ApiSpec.spec()) - - resp = conn |> post("/api/v1/accounts/#{other_user_id}/unfollow") |> json_response(:ok) - - assert %{"id" => ^other_user_id, "following" => false, "requested" => false} = resp - assert_schema(resp, "AccountRelationship", ApiSpec.spec()) + assert %{"id" => ^other_user_id, "following" => false, "requested" => false} = + conn + |> post("/api/v1/accounts/#{other_user_id}/unfollow") + |> json_response_and_validate_schema(:ok) end test "following without reblogs" do @@ -698,50 +649,53 @@ test "following without reblogs" do ret_conn = post(conn, "/api/v1/accounts/#{followed.id}/follow?reblogs=false") - assert %{"showing_reblogs" => false} = json_response(ret_conn, 200) - assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) + assert %{"showing_reblogs" => false} = json_response_and_validate_schema(ret_conn, 200) {:ok, activity} = CommonAPI.post(other_user, %{"status" => "hey"}) - {:ok, reblog, _} = CommonAPI.repeat(activity.id, followed) + {:ok, %{id: reblog_id}, _} = CommonAPI.repeat(activity.id, followed) - ret_conn = get(conn, "/api/v1/timelines/home") + assert [] == + conn + |> get("/api/v1/timelines/home") + |> json_response(200) - assert [] == json_response(ret_conn, 200) + assert %{"showing_reblogs" => true} = + conn + |> post("/api/v1/accounts/#{followed.id}/follow?reblogs=true") + |> json_response_and_validate_schema(200) - ret_conn = post(conn, "/api/v1/accounts/#{followed.id}/follow?reblogs=true") - - assert %{"showing_reblogs" => true} = json_response(ret_conn, 200) - assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) - - conn = get(conn, "/api/v1/timelines/home") - - expected_activity_id = reblog.id - assert [%{"id" => ^expected_activity_id}] = json_response(conn, 200) + assert [%{"id" => ^reblog_id}] = + conn + |> get("/api/v1/timelines/home") + |> json_response(200) end test "following / unfollowing errors", %{user: user, conn: conn} do # self follow conn_res = post(conn, "/api/v1/accounts/#{user.id}/follow") - assert %{"error" => "Can not follow yourself"} = json_response(conn_res, 400) + + assert %{"error" => "Can not follow yourself"} = + json_response_and_validate_schema(conn_res, 400) # self unfollow user = User.get_cached_by_id(user.id) conn_res = post(conn, "/api/v1/accounts/#{user.id}/unfollow") - assert %{"error" => "Can not unfollow yourself"} = json_response(conn_res, 400) + + assert %{"error" => "Can not unfollow yourself"} = + json_response_and_validate_schema(conn_res, 400) # self follow via uri user = User.get_cached_by_id(user.id) - conn_res = - conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/v1/follows", %{"uri" => user.nickname}) - - assert %{"error" => "Can not follow yourself"} = json_response(conn_res, 400) + assert %{"error" => "Can not follow yourself"} = + conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v1/follows", %{"uri" => user.nickname}) + |> json_response_and_validate_schema(400) # follow non existing user conn_res = post(conn, "/api/v1/accounts/doesntexist/follow") - assert %{"error" => "Record not found"} = json_response(conn_res, 404) + assert %{"error" => "Record not found"} = json_response_and_validate_schema(conn_res, 404) # follow non existing user via uri conn_res = @@ -749,11 +703,11 @@ test "following / unfollowing errors", %{user: user, conn: conn} do |> put_req_header("content-type", "multipart/form-data") |> post("/api/v1/follows", %{"uri" => "doesntexist"}) - assert %{"error" => "Record not found"} = json_response(conn_res, 404) + assert %{"error" => "Record not found"} = json_response_and_validate_schema(conn_res, 404) # unfollow non existing user conn_res = post(conn, "/api/v1/accounts/doesntexist/unfollow") - assert %{"error" => "Record not found"} = json_response(conn_res, 404) + assert %{"error" => "Record not found"} = json_response_and_validate_schema(conn_res, 404) end end @@ -763,21 +717,16 @@ test "following / unfollowing errors", %{user: user, conn: conn} do test "with notifications", %{conn: conn} do other_user = insert(:user) - ret_conn = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/accounts/#{other_user.id}/mute") - - response = json_response(ret_conn, 200) - - assert %{"id" => _id, "muting" => true, "muting_notifications" => true} = response - assert_schema(response, "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "muting" => true, "muting_notifications" => true} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/accounts/#{other_user.id}/mute") + |> json_response_and_validate_schema(200) conn = post(conn, "/api/v1/accounts/#{other_user.id}/unmute") - response = json_response(conn, 200) - assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = response - assert_schema(response, "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = + json_response_and_validate_schema(conn, 200) end test "without notifications", %{conn: conn} do @@ -788,16 +737,13 @@ test "without notifications", %{conn: conn} do |> put_req_header("content-type", "multipart/form-data") |> post("/api/v1/accounts/#{other_user.id}/mute", %{"notifications" => "false"}) - response = json_response(ret_conn, 200) - - assert %{"id" => _id, "muting" => true, "muting_notifications" => false} = response - assert_schema(response, "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "muting" => true, "muting_notifications" => false} = + json_response_and_validate_schema(ret_conn, 200) conn = post(conn, "/api/v1/accounts/#{other_user.id}/unmute") - response = json_response(conn, 200) - assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = response - assert_schema(response, "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "muting" => false, "muting_notifications" => false} = + json_response_and_validate_schema(conn, 200) end end @@ -810,17 +756,13 @@ test "without notifications", %{conn: conn} do [conn: conn, user: user, activity: activity] end - test "returns pinned statuses", %{conn: conn, user: user, activity: activity} do - {:ok, _} = CommonAPI.pin(activity.id, user) + test "returns pinned statuses", %{conn: conn, user: user, activity: %{id: activity_id}} do + {:ok, _} = CommonAPI.pin(activity_id, user) - result = - conn - |> get("/api/v1/accounts/#{user.id}/statuses?pinned=true") - |> json_response(200) - - id_str = to_string(activity.id) - - assert [%{"id" => ^id_str, "pinned" => true}] = result + assert [%{"id" => ^activity_id, "pinned" => true}] = + conn + |> get("/api/v1/accounts/#{user.id}/statuses?pinned=true") + |> json_response_and_validate_schema(200) end end @@ -830,13 +772,11 @@ test "blocking / unblocking a user" do ret_conn = post(conn, "/api/v1/accounts/#{other_user.id}/block") - assert %{"id" => _id, "blocking" => true} = json_response(ret_conn, 200) - assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "blocking" => true} = json_response_and_validate_schema(ret_conn, 200) conn = post(conn, "/api/v1/accounts/#{other_user.id}/unblock") - assert %{"id" => _id, "blocking" => false} = json_response(conn, 200) - assert_schema(json_response(ret_conn, 200), "AccountRelationship", ApiSpec.spec()) + assert %{"id" => _id, "blocking" => false} = json_response_and_validate_schema(conn, 200) end describe "create account by app" do @@ -863,15 +803,15 @@ test "Account registration via Application", %{conn: conn} do scopes: "read, write, follow" }) - %{ - "client_id" => client_id, - "client_secret" => client_secret, - "id" => _, - "name" => "client_name", - "redirect_uri" => "urn:ietf:wg:oauth:2.0:oob", - "vapid_key" => _, - "website" => nil - } = json_response(conn, 200) + assert %{ + "client_id" => client_id, + "client_secret" => client_secret, + "id" => _, + "name" => "client_name", + "redirect_uri" => "urn:ietf:wg:oauth:2.0:oob", + "vapid_key" => _, + "website" => nil + } = json_response_and_validate_schema(conn, 200) conn = post(conn, "/oauth/token", %{ @@ -906,7 +846,7 @@ test "Account registration via Application", %{conn: conn} do "created_at" => _created_at, "scope" => _scope, "token_type" => "Bearer" - } = json_response(conn, 200) + } = json_response_and_validate_schema(conn, 200) token_from_db = Repo.get_by(Token, token: token) assert token_from_db @@ -926,7 +866,9 @@ test "returns error when user already registred", %{conn: conn, valid_params: va |> put_req_header("content-type", "application/json") |> post("/api/v1/accounts", valid_params) - assert json_response(res, 400) == %{"error" => "{\"email\":[\"has already been taken\"]}"} + assert json_response_and_validate_schema(res, 400) == %{ + "error" => "{\"email\":[\"has already been taken\"]}" + } end test "returns bad_request if missing required params", %{ @@ -941,7 +883,7 @@ test "returns bad_request if missing required params", %{ |> put_req_header("content-type", "application/json") res = post(conn, "/api/v1/accounts", valid_params) - assert json_response(res, 200) + assert json_response_and_validate_schema(res, 200) [{127, 0, 0, 1}, {127, 0, 0, 2}, {127, 0, 0, 3}, {127, 0, 0, 4}] |> Stream.zip(Map.delete(valid_params, :email)) @@ -950,7 +892,7 @@ test "returns bad_request if missing required params", %{ conn |> Map.put(:remote_ip, ip) |> post("/api/v1/accounts", Map.delete(valid_params, attr)) - |> json_response(400) + |> json_response_and_validate_schema(400) assert res == %{ "error" => "Missing field: #{attr}.", @@ -983,14 +925,16 @@ test "returns bad_request if missing email params when :account_activation_requi |> Map.put(:remote_ip, {127, 0, 0, 5}) |> post("/api/v1/accounts", Map.delete(valid_params, :email)) - assert json_response(res, 400) == %{"error" => "Missing parameters"} + assert json_response_and_validate_schema(res, 400) == %{"error" => "Missing parameters"} res = conn |> Map.put(:remote_ip, {127, 0, 0, 6}) |> post("/api/v1/accounts", Map.put(valid_params, :email, "")) - assert json_response(res, 400) == %{"error" => "{\"email\":[\"can't be blank\"]}"} + assert json_response_and_validate_schema(res, 400) == %{ + "error" => "{\"email\":[\"can't be blank\"]}" + } end test "allow registration without an email", %{conn: conn, valid_params: valid_params} do @@ -1003,7 +947,7 @@ test "allow registration without an email", %{conn: conn, valid_params: valid_pa |> Map.put(:remote_ip, {127, 0, 0, 7}) |> post("/api/v1/accounts", Map.delete(valid_params, :email)) - assert json_response(res, 200) + assert json_response_and_validate_schema(res, 200) end test "allow registration with an empty email", %{conn: conn, valid_params: valid_params} do @@ -1016,7 +960,7 @@ test "allow registration with an empty email", %{conn: conn, valid_params: valid |> Map.put(:remote_ip, {127, 0, 0, 8}) |> post("/api/v1/accounts", Map.put(valid_params, :email, "")) - assert json_response(res, 200) + assert json_response_and_validate_schema(res, 200) end test "returns forbidden if token is invalid", %{conn: conn, valid_params: valid_params} do @@ -1026,7 +970,7 @@ test "returns forbidden if token is invalid", %{conn: conn, valid_params: valid_ |> put_req_header("content-type", "multipart/form-data") |> post("/api/v1/accounts", valid_params) - assert json_response(res, 403) == %{"error" => "Invalid credentials"} + assert json_response_and_validate_schema(res, 403) == %{"error" => "Invalid credentials"} end test "registration from trusted app" do @@ -1056,7 +1000,7 @@ test "registration from trusted app" do password: "some_password", confirm: "some_password" }) - |> json_response(200) + |> json_response_and_validate_schema(200) assert %{ "access_token" => access_token, @@ -1069,7 +1013,7 @@ test "registration from trusted app" do build_conn() |> Plug.Conn.put_req_header("authorization", "Bearer " <> access_token) |> get("/api/v1/accounts/verify_credentials") - |> json_response(200) + |> json_response_and_validate_schema(200) assert %{ "acct" => "Lain", @@ -1125,7 +1069,7 @@ test "respects rate limit setting", %{conn: conn} do "created_at" => _created_at, "scope" => _scope, "token_type" => "Bearer" - } = json_response(conn, 200) + } = json_response_and_validate_schema(conn, 200) token_from_db = Repo.get_by(Token, token: token) assert token_from_db @@ -1143,7 +1087,9 @@ test "respects rate limit setting", %{conn: conn} do agreement: true }) - assert json_response(conn, :too_many_requests) == %{"error" => "Throttled"} + assert json_response_and_validate_schema(conn, :too_many_requests) == %{ + "error" => "Throttled" + } end end @@ -1151,16 +1097,13 @@ test "respects rate limit setting", %{conn: conn} do test "returns lists to which the account belongs" do %{user: user, conn: conn} = oauth_access(["read:lists"]) other_user = insert(:user) - assert {:ok, %Pleroma.List{} = list} = Pleroma.List.create("Test List", user) + assert {:ok, %Pleroma.List{id: list_id} = list} = Pleroma.List.create("Test List", user) {:ok, %{following: _following}} = Pleroma.List.follow(list, other_user) - res = - conn - |> get("/api/v1/accounts/#{other_user.id}/lists") - |> json_response(200) - - assert res == [%{"id" => to_string(list.id), "title" => "Test List"}] - assert_schema(res, "ListsResponse", ApiSpec.spec()) + assert [%{"id" => list_id, "title" => "Test List"}] = + conn + |> get("/api/v1/accounts/#{other_user.id}/lists") + |> json_response_and_validate_schema(200) end end @@ -1169,7 +1112,7 @@ test "verify_credentials" do %{user: user, conn: conn} = oauth_access(["read:accounts"]) conn = get(conn, "/api/v1/accounts/verify_credentials") - response = json_response(conn, 200) + response = json_response_and_validate_schema(conn, 200) assert %{"id" => id, "source" => %{"privacy" => "public"}} = response assert response["pleroma"]["chat_token"] @@ -1182,7 +1125,9 @@ test "verify_credentials default scope unlisted" do conn = get(conn, "/api/v1/accounts/verify_credentials") - assert %{"id" => id, "source" => %{"privacy" => "unlisted"}} = json_response(conn, 200) + assert %{"id" => id, "source" => %{"privacy" => "unlisted"}} = + json_response_and_validate_schema(conn, 200) + assert id == to_string(user.id) end @@ -1192,7 +1137,9 @@ test "locked accounts" do conn = get(conn, "/api/v1/accounts/verify_credentials") - assert %{"id" => id, "source" => %{"privacy" => "private"}} = json_response(conn, 200) + assert %{"id" => id, "source" => %{"privacy" => "private"}} = + json_response_and_validate_schema(conn, 200) + assert id == to_string(user.id) end end @@ -1207,18 +1154,18 @@ test "returns the relationships for the current user", %{user: user, conn: conn} assert [%{"id" => ^other_user_id}] = conn |> get("/api/v1/accounts/relationships?id=#{other_user.id}") - |> json_response(200) + |> json_response_and_validate_schema(200) assert [%{"id" => ^other_user_id}] = conn |> get("/api/v1/accounts/relationships?id[]=#{other_user.id}") - |> json_response(200) + |> json_response_and_validate_schema(200) end test "returns an empty list on a bad request", %{conn: conn} do conn = get(conn, "/api/v1/accounts/relationships", %{}) - assert [] = json_response(conn, 200) + assert [] = json_response_and_validate_schema(conn, 200) end end @@ -1231,8 +1178,7 @@ test "getting a list of mutes" do conn = get(conn, "/api/v1/mutes") other_user_id = to_string(other_user.id) - assert [%{"id" => ^other_user_id}] = json_response(conn, 200) - assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) + assert [%{"id" => ^other_user_id}] = json_response_and_validate_schema(conn, 200) end test "getting a list of blocks" do @@ -1247,7 +1193,6 @@ test "getting a list of blocks" do |> get("/api/v1/blocks") other_user_id = to_string(other_user.id) - assert [%{"id" => ^other_user_id}] = json_response(conn, 200) - assert_schema(json_response(conn, 200), "AccountsResponse", ApiSpec.spec()) + assert [%{"id" => ^other_user_id}] = json_response_and_validate_schema(conn, 200) end end From cc1e2e8d0f5fa27d051a0a21740a8052b95ce1a5 Mon Sep 17 00:00:00 2001 From: fence Date: Mon, 27 Apr 2020 19:11:03 +0200 Subject: [PATCH 116/137] requested changes to mongoose_im_controller.ex --- .../web/mongooseim/mongoose_im_controller.ex | 45 ++++++------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex index c15b4bfb8..7123153c5 100644 --- a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex +++ b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Web.MongooseIM.MongooseIMController do plug(RateLimiter, [name: :authentication, params: ["user"]] when action == :check_password) def user_exists(conn, %{"user" => username}) do - with %User{} <- Repo.get_by(User, nickname: username, local: true) do + with %User{} <- Repo.get_by(User, nickname: username, local: true, deactivated: false) do conn |> json(true) else @@ -26,41 +26,22 @@ def user_exists(conn, %{"user" => username}) do end def check_password(conn, %{"user" => username, "pass" => password}) do - user = Repo.get_by(User, nickname: username, local: true) - - state = case user do - nil -> nil - _ -> User.account_status(user) - end - - case state do - :deactivated -> + with %User{password_hash: password_hash, deactivated: false} <- + Repo.get_by(User, nickname: username, local: true), + true <- Pbkdf2.checkpw(password, password_hash) do + conn + |> json(true) + else + false -> conn - |> put_status(:not_found) - |> json(false) - - :confirmation_pending -> - conn - |> put_status(:not_found) + |> put_status(:forbidden) |> json(false) _ -> - with %User{password_hash: password_hash} <- - user, - true <- Pbkdf2.checkpw(password, password_hash) do - conn - |> json(true) - else - false -> - conn - |> put_status(:forbidden) - |> json(false) - - _ -> - conn - |> put_status(:not_found) - |> json(false) - end + conn + |> put_status(:not_found) + |> json(false) end end end + From 935ca2c1329fd4b4f2b40a5ed7f2c1fa5f95b9bd Mon Sep 17 00:00:00 2001 From: fence Date: Mon, 27 Apr 2020 19:16:05 +0200 Subject: [PATCH 117/137] requested changes to mongoose test --- test/web/mongooseim/mongoose_im_controller_test.exs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/web/mongooseim/mongoose_im_controller_test.exs b/test/web/mongooseim/mongoose_im_controller_test.exs index 5987111e5..2b4d124af 100644 --- a/test/web/mongooseim/mongoose_im_controller_test.exs +++ b/test/web/mongooseim/mongoose_im_controller_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Web.MongooseIMController do test "/user_exists", %{conn: conn} do _user = insert(:user, nickname: "lain") _remote_user = insert(:user, nickname: "alice", local: false) + _deactivated_user = insert(:user, nickname: "konata", deactivated: true) res = conn @@ -30,11 +31,18 @@ test "/user_exists", %{conn: conn} do |> json_response(404) assert res == false + + res = + conn + |> get(mongoose_im_path(conn, :user_exists), user: "konata") + |> json_response(404) + + assert res == false end test "/check_password", %{conn: conn} do user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt("cool")) - _deactivated_user = insert(:user, nickname: "konata", local: false, deactivated: true) + _deactivated_user = insert(:user, nickname: "konata", deactivated: true) res = conn @@ -52,7 +60,7 @@ test "/check_password", %{conn: conn} do res = conn - |> get(mongoose_im_path(conn, :check_password), user: "konata", pass: "1337") + |> get(mongoose_im_path(conn, :check_password), user: "konata", pass: "cool") |> json_response(404) assert res == false From d607b4d84002ff14f51713f1ac74a4971e2dffac Mon Sep 17 00:00:00 2001 From: fence Date: Mon, 27 Apr 2020 19:32:58 +0200 Subject: [PATCH 118/137] mongooseim test: explicitly set password for the deactivated used --- test/web/mongooseim/mongoose_im_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/mongooseim/mongoose_im_controller_test.exs b/test/web/mongooseim/mongoose_im_controller_test.exs index 2b4d124af..d17f8dbb4 100644 --- a/test/web/mongooseim/mongoose_im_controller_test.exs +++ b/test/web/mongooseim/mongoose_im_controller_test.exs @@ -42,7 +42,7 @@ test "/user_exists", %{conn: conn} do test "/check_password", %{conn: conn} do user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt("cool")) - _deactivated_user = insert(:user, nickname: "konata", deactivated: true) + _deactivated_user = insert(:user, nickname: "konata", deactivated: true, password_hash: Comeonin.Pbkdf2.hashpwsalt("cool")) res = conn From dda65f7799e9dfa2e7b87389848eeee10993a858 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 27 Apr 2020 22:55:05 +0400 Subject: [PATCH 119/137] Move single used schemas to operation schema --- .../api_spec/operations/account_operation.ex | 376 +++++++++++++++++- .../operations/custom_emoji_operation.ex | 35 +- lib/pleroma/web/api_spec/schemas/account.ex | 4 +- .../schemas/account_create_request.ex | 60 --- .../schemas/account_create_response.ex | 27 -- .../schemas/account_field_attribute.ex | 24 -- .../schemas/account_follows_request.ex | 18 - .../api_spec/schemas/account_mute_request.ex | 24 -- .../schemas/account_relationships_response.ex | 58 --- .../account_update_credentials_request.ex | 125 ------ .../web/api_spec/schemas/accounts_response.ex | 13 - .../schemas/{list.ex => api_error.ex} | 14 +- .../web/api_spec/schemas/custom_emoji.ex | 30 -- .../schemas/{account_emoji.ex => emoji.ex} | 6 +- .../web/api_spec/schemas/lists_response.ex | 16 - lib/pleroma/web/api_spec/schemas/poll.ex | 4 +- lib/pleroma/web/api_spec/schemas/status.ex | 4 +- .../web/api_spec/schemas/statuses_response.ex | 13 - .../controllers/account_controller.ex | 11 +- test/web/api_spec/account_operation_test.exs | 141 ------- .../custom_emoji_controller_test.exs | 3 - 21 files changed, 402 insertions(+), 604 deletions(-) delete mode 100644 lib/pleroma/web/api_spec/schemas/account_create_request.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/account_create_response.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/account_field_attribute.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/account_follows_request.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/account_mute_request.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/account_relationships_response.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/accounts_response.ex rename lib/pleroma/web/api_spec/schemas/{list.ex => api_error.ex} (52%) delete mode 100644 lib/pleroma/web/api_spec/schemas/custom_emoji.ex rename lib/pleroma/web/api_spec/schemas/{account_emoji.ex => emoji.ex} (85%) delete mode 100644 lib/pleroma/web/api_spec/schemas/lists_response.ex delete mode 100644 lib/pleroma/web/api_spec/schemas/statuses_response.ex delete mode 100644 test/web/api_spec/account_operation_test.exs diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index bf8d21059..2efe6e901 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -7,18 +7,11 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias OpenApiSpex.Reference alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.Account - alias Pleroma.Web.ApiSpec.Schemas.ApiError - alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest - alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse - alias Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest - alias Pleroma.Web.ApiSpec.Schemas.AccountMuteRequest alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship - alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse - alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse - alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest + alias Pleroma.Web.ApiSpec.Schemas.ActorType + alias Pleroma.Web.ApiSpec.Schemas.ApiError alias Pleroma.Web.ApiSpec.Schemas.BooleanLike - alias Pleroma.Web.ApiSpec.Schemas.ListsResponse - alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse + alias Pleroma.Web.ApiSpec.Schemas.Status alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope import Pleroma.Web.ApiSpec.Helpers @@ -37,9 +30,9 @@ def create_operation do description: "Creates a user and account records. Returns an account access token for the app that initiated the request. The app should save this token for later, and should wait for the user to confirm their account by clicking a link in their email inbox.", operationId: "AccountController.create", - requestBody: request_body("Parameters", AccountCreateRequest, required: true), + requestBody: request_body("Parameters", create_request(), required: true), responses: %{ - 200 => Operation.response("Account", "application/json", AccountCreateResponse), + 200 => Operation.response("Account", "application/json", create_response()), 400 => Operation.response("Error", "application/json", ApiError), 403 => Operation.response("Error", "application/json", ApiError), 429 => Operation.response("Error", "application/json", ApiError) @@ -67,7 +60,7 @@ def update_credentials_operation do description: "Update the user's display and preferences.", operationId: "AccountController.update_credentials", security: [%{"oAuth" => ["write:accounts"]}], - requestBody: request_body("Parameters", AccountUpdateCredentialsRequest, required: true), + requestBody: request_body("Parameters", update_creadentials_request(), required: true), responses: %{ 200 => Operation.response("Account", "application/json", Account), 403 => Operation.response("Error", "application/json", ApiError) @@ -94,7 +87,7 @@ def relationships_operation do ) ], responses: %{ - 200 => Operation.response("Account", "application/json", AccountRelationshipsResponse) + 200 => Operation.response("Account", "application/json", array_of_relationships()) } } end @@ -146,7 +139,7 @@ def statuses_operation do ) ] ++ pagination_params(), responses: %{ - 200 => Operation.response("Statuses", "application/json", StatusesResponse), + 200 => Operation.response("Statuses", "application/json", array_of_statuses()), 404 => Operation.response("Error", "application/json", ApiError) } } @@ -163,7 +156,7 @@ def followers_operation do parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(), responses: %{ - 200 => Operation.response("Accounts", "application/json", AccountsResponse) + 200 => Operation.response("Accounts", "application/json", array_of_accounts()) } } end @@ -178,7 +171,7 @@ def following_operation do "Accounts which the given account is following, if network is not hidden by the account owner.", parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(), - responses: %{200 => Operation.response("Accounts", "application/json", AccountsResponse)} + responses: %{200 => Operation.response("Accounts", "application/json", array_of_accounts())} } end @@ -190,7 +183,7 @@ def lists_operation do security: [%{"oAuth" => ["read:lists"]}], description: "User lists that you have added this account to.", parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], - responses: %{200 => Operation.response("Lists", "application/json", ListsResponse)} + responses: %{200 => Operation.response("Lists", "application/json", array_of_lists())} } end @@ -240,7 +233,7 @@ def mute_operation do summary: "Mute", operationId: "AccountController.mute", security: [%{"oAuth" => ["follow", "write:mutes"]}], - requestBody: request_body("Parameters", AccountMuteRequest), + requestBody: request_body("Parameters", mute_request()), description: "Mute the given account. Clients should filter statuses and notifications from this account, if received (e.g. due to a boost in the Home timeline).", parameters: [ @@ -307,7 +300,7 @@ def follows_operation do summary: "Follows", operationId: "AccountController.follows", security: [%{"oAuth" => ["follow", "write:follows"]}], - requestBody: request_body("Parameters", AccountFollowsRequest, required: true), + requestBody: request_body("Parameters", follows_request(), required: true), responses: %{ 200 => Operation.response("Account", "application/json", AccountRelationship), 400 => Operation.response("Error", "application/json", ApiError), @@ -324,7 +317,7 @@ def mutes_operation do description: "Accounts the user has muted.", security: [%{"oAuth" => ["follow", "read:mutes"]}], responses: %{ - 200 => Operation.response("Accounts", "application/json", AccountsResponse) + 200 => Operation.response("Accounts", "application/json", array_of_accounts()) } } end @@ -337,7 +330,7 @@ def blocks_operation do description: "View your blocks. See also accounts/:id/{block,unblock}", security: [%{"oAuth" => ["read:blocks"]}], responses: %{ - 200 => Operation.response("Accounts", "application/json", AccountsResponse) + 200 => Operation.response("Accounts", "application/json", array_of_accounts()) } } end @@ -366,4 +359,343 @@ def identity_proofs_operation do } } end + + defp create_request do + %Schema{ + title: "AccountCreateRequest", + description: "POST body for creating an account", + type: :object, + properties: %{ + reason: %Schema{ + type: :string, + description: + "Text that will be reviewed by moderators if registrations require manual approval" + }, + username: %Schema{type: :string, description: "The desired username for the account"}, + email: %Schema{ + type: :string, + description: + "The email address to be used for login. Required when `account_activation_required` is enabled.", + format: :email + }, + password: %Schema{ + type: :string, + description: "The password to be used for login", + format: :password + }, + agreement: %Schema{ + type: :boolean, + description: + "Whether the user agrees to the local rules, terms, and policies. These should be presented to the user in order to allow them to consent before setting this parameter to TRUE." + }, + locale: %Schema{ + type: :string, + description: "The language of the confirmation email that will be sent" + }, + # Pleroma-specific properties: + fullname: %Schema{type: :string, description: "Full name"}, + bio: %Schema{type: :string, description: "Bio", default: ""}, + captcha_solution: %Schema{ + type: :string, + description: "Provider-specific captcha solution" + }, + captcha_token: %Schema{type: :string, description: "Provider-specific captcha token"}, + captcha_answer_data: %Schema{type: :string, description: "Provider-specific captcha data"}, + token: %Schema{ + type: :string, + description: "Invite token required when the registrations aren't public" + } + }, + required: [:username, :password, :agreement], + example: %{ + "username" => "cofe", + "email" => "cofe@example.com", + "password" => "secret", + "agreement" => "true", + "bio" => "☕️" + } + } + end + + defp create_response do + %Schema{ + title: "AccountCreateResponse", + description: "Response schema for an account", + type: :object, + properties: %{ + token_type: %Schema{type: :string}, + access_token: %Schema{type: :string}, + scope: %Schema{type: :array, items: %Schema{type: :string}}, + created_at: %Schema{type: :integer, format: :"date-time"} + }, + example: %{ + "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk", + "created_at" => 1_585_918_714, + "scope" => ["read", "write", "follow", "push"], + "token_type" => "Bearer" + } + } + end + + defp update_creadentials_request do + %Schema{ + title: "AccountUpdateCredentialsRequest", + description: "POST body for creating an account", + type: :object, + properties: %{ + bot: %Schema{ + type: :boolean, + description: "Whether the account has a bot flag." + }, + display_name: %Schema{ + type: :string, + description: "The display name to use for the profile." + }, + note: %Schema{type: :string, description: "The account bio."}, + avatar: %Schema{ + type: :string, + description: "Avatar image encoded using multipart/form-data", + format: :binary + }, + header: %Schema{ + type: :string, + description: "Header image encoded using multipart/form-data", + format: :binary + }, + locked: %Schema{ + type: :boolean, + description: "Whether manual approval of follow requests is required." + }, + fields_attributes: %Schema{ + oneOf: [ + %Schema{type: :array, items: attribute_field()}, + %Schema{type: :object, additionalProperties: %Schema{type: attribute_field()}} + ] + }, + # NOTE: `source` field is not supported + # + # source: %Schema{ + # type: :object, + # properties: %{ + # privacy: %Schema{type: :string}, + # sensitive: %Schema{type: :boolean}, + # language: %Schema{type: :string} + # } + # }, + + # Pleroma-specific fields + no_rich_text: %Schema{ + type: :boolean, + description: "html tags are stripped from all statuses requested from the API" + }, + hide_followers: %Schema{type: :boolean, description: "user's followers will be hidden"}, + hide_follows: %Schema{type: :boolean, description: "user's follows will be hidden"}, + hide_followers_count: %Schema{ + type: :boolean, + description: "user's follower count will be hidden" + }, + hide_follows_count: %Schema{ + type: :boolean, + description: "user's follow count will be hidden" + }, + hide_favorites: %Schema{ + type: :boolean, + description: "user's favorites timeline will be hidden" + }, + show_role: %Schema{ + type: :boolean, + description: "user's role (e.g admin, moderator) will be exposed to anyone in the + API" + }, + default_scope: VisibilityScope, + pleroma_settings_store: %Schema{ + type: :object, + description: "Opaque user settings to be saved on the backend." + }, + skip_thread_containment: %Schema{ + type: :boolean, + description: "Skip filtering out broken threads" + }, + allow_following_move: %Schema{ + type: :boolean, + description: "Allows automatically follow moved following accounts" + }, + pleroma_background_image: %Schema{ + type: :string, + description: "Sets the background image of the user.", + format: :binary + }, + discoverable: %Schema{ + type: :boolean, + description: + "Discovery of this account in search results and other services is allowed." + }, + actor_type: ActorType + }, + example: %{ + bot: false, + display_name: "cofe", + note: "foobar", + fields_attributes: [%{name: "foo", value: "bar"}], + no_rich_text: false, + hide_followers: true, + hide_follows: false, + hide_followers_count: false, + hide_follows_count: false, + hide_favorites: false, + show_role: false, + default_scope: "private", + pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}}, + skip_thread_containment: false, + allow_following_move: false, + discoverable: false, + actor_type: "Person" + } + } + end + + defp array_of_accounts do + %Schema{ + title: "ArrayOfAccounts", + type: :array, + items: Account + } + end + + defp array_of_relationships do + %Schema{ + title: "ArrayOfRelationships", + description: "Response schema for account relationships", + type: :array, + items: AccountRelationship, + example: [ + %{ + "id" => "1", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => false, + "blocked_by" => true, + "muting" => false, + "muting_notifications" => false, + "requested" => false, + "domain_blocking" => false, + "subscribing" => false, + "endorsed" => true + }, + %{ + "id" => "2", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => false, + "blocked_by" => true, + "muting" => true, + "muting_notifications" => false, + "requested" => true, + "domain_blocking" => false, + "subscribing" => false, + "endorsed" => false + }, + %{ + "id" => "3", + "following" => true, + "showing_reblogs" => true, + "followed_by" => true, + "blocking" => true, + "blocked_by" => false, + "muting" => true, + "muting_notifications" => false, + "requested" => false, + "domain_blocking" => true, + "subscribing" => true, + "endorsed" => false + } + ] + } + end + + defp follows_request do + %Schema{ + title: "AccountFollowsRequest", + description: "POST body for muting an account", + type: :object, + properties: %{ + uri: %Schema{type: :string, format: :uri} + }, + required: [:uri] + } + end + + defp mute_request do + %Schema{ + title: "AccountMuteRequest", + description: "POST body for muting an account", + type: :object, + properties: %{ + notifications: %Schema{ + type: :boolean, + description: "Mute notifications in addition to statuses? Defaults to true.", + default: true + } + }, + example: %{ + "notifications" => true + } + } + end + + defp list do + %Schema{ + title: "List", + description: "Response schema for a list", + type: :object, + properties: %{ + id: %Schema{type: :string}, + title: %Schema{type: :string} + }, + example: %{ + "id" => "123", + "title" => "my list" + } + } + end + + defp array_of_lists do + %Schema{ + title: "ArrayOfLists", + description: "Response schema for lists", + type: :array, + items: list(), + example: [ + %{"id" => "123", "title" => "my list"}, + %{"id" => "1337", "title" => "anotehr list"} + ] + } + end + + defp array_of_statuses do + %Schema{ + title: "ArrayOfStatuses", + type: :array, + items: Status + } + end + + defp attribute_field do + %Schema{ + title: "AccountAttributeField", + description: "Request schema for account custom fields", + type: :object, + properties: %{ + name: %Schema{type: :string}, + value: %Schema{type: :string} + }, + required: [:name, :value], + example: %{ + "name" => "Website", + "value" => "https://pleroma.com" + } + } + end end diff --git a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex index a117fe460..2f812ac77 100644 --- a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex +++ b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.ApiSpec.CustomEmojiOperation do alias OpenApiSpex.Operation alias OpenApiSpex.Schema - alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji + alias Pleroma.Web.ApiSpec.Schemas.Emoji def open_api_operation(action) do operation = String.to_existing_atom("#{action}_operation") @@ -19,17 +19,17 @@ def index_operation do description: "Returns custom emojis that are available on the server.", operationId: "CustomEmojiController.index", responses: %{ - 200 => Operation.response("Custom Emojis", "application/json", custom_emojis_resposnse()) + 200 => Operation.response("Custom Emojis", "application/json", resposnse()) } } end - defp custom_emojis_resposnse do + defp resposnse do %Schema{ title: "CustomEmojisResponse", description: "Response schema for custom emojis", type: :array, - items: CustomEmoji, + items: custom_emoji(), example: [ %{ "category" => "Fun", @@ -58,4 +58,31 @@ defp custom_emojis_resposnse do ] } end + + defp custom_emoji do + %Schema{ + title: "CustomEmoji", + description: "Schema for a CustomEmoji", + allOf: [ + Emoji, + %Schema{ + type: :object, + properties: %{ + category: %Schema{type: :string}, + tags: %Schema{type: :array} + } + } + ], + example: %{ + "category" => "Fun", + "shortcode" => "aaaa", + "url" => + "https://files.mastodon.social/custom_emojis/images/000/007/118/original/aaaa.png", + "static_url" => + "https://files.mastodon.social/custom_emojis/images/000/007/118/static/aaaa.png", + "visible_in_picker" => true, + "tags" => ["Gif", "Fun"] + } + } + end end diff --git a/lib/pleroma/web/api_spec/schemas/account.ex b/lib/pleroma/web/api_spec/schemas/account.ex index d128feb30..d54e2158d 100644 --- a/lib/pleroma/web/api_spec/schemas/account.ex +++ b/lib/pleroma/web/api_spec/schemas/account.ex @@ -4,10 +4,10 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do alias OpenApiSpex.Schema - alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji alias Pleroma.Web.ApiSpec.Schemas.AccountField alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship alias Pleroma.Web.ApiSpec.Schemas.ActorType + alias Pleroma.Web.ApiSpec.Schemas.Emoji alias Pleroma.Web.ApiSpec.Schemas.FlakeID alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope @@ -24,7 +24,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do bot: %Schema{type: :boolean}, created_at: %Schema{type: :string, format: "date-time"}, display_name: %Schema{type: :string}, - emojis: %Schema{type: :array, items: AccountEmoji}, + emojis: %Schema{type: :array, items: Emoji}, fields: %Schema{type: :array, items: AccountField}, follow_requests_count: %Schema{type: :integer}, followers_count: %Schema{type: :integer}, diff --git a/lib/pleroma/web/api_spec/schemas/account_create_request.ex b/lib/pleroma/web/api_spec/schemas/account_create_request.ex deleted file mode 100644 index 49fa12159..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_create_request.ex +++ /dev/null @@ -1,60 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest do - alias OpenApiSpex.Schema - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountCreateRequest", - description: "POST body for creating an account", - type: :object, - properties: %{ - reason: %Schema{ - type: :string, - description: - "Text that will be reviewed by moderators if registrations require manual approval" - }, - username: %Schema{type: :string, description: "The desired username for the account"}, - email: %Schema{ - type: :string, - description: - "The email address to be used for login. Required when `account_activation_required` is enabled.", - format: :email - }, - password: %Schema{ - type: :string, - description: "The password to be used for login", - format: :password - }, - agreement: %Schema{ - type: :boolean, - description: - "Whether the user agrees to the local rules, terms, and policies. These should be presented to the user in order to allow them to consent before setting this parameter to TRUE." - }, - locale: %Schema{ - type: :string, - description: "The language of the confirmation email that will be sent" - }, - # Pleroma-specific properties: - fullname: %Schema{type: :string, description: "Full name"}, - bio: %Schema{type: :string, description: "Bio", default: ""}, - captcha_solution: %Schema{type: :string, description: "Provider-specific captcha solution"}, - captcha_token: %Schema{type: :string, description: "Provider-specific captcha token"}, - captcha_answer_data: %Schema{type: :string, description: "Provider-specific captcha data"}, - token: %Schema{ - type: :string, - description: "Invite token required when the registrations aren't public" - } - }, - required: [:username, :password, :agreement], - example: %{ - "username" => "cofe", - "email" => "cofe@example.com", - "password" => "secret", - "agreement" => "true", - "bio" => "☕️" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_create_response.ex b/lib/pleroma/web/api_spec/schemas/account_create_response.ex deleted file mode 100644 index 2237351a2..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_create_response.ex +++ /dev/null @@ -1,27 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse do - alias OpenApiSpex.Schema - - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountCreateResponse", - description: "Response schema for an account", - type: :object, - properties: %{ - token_type: %Schema{type: :string}, - access_token: %Schema{type: :string}, - scope: %Schema{type: :array, items: %Schema{type: :string}}, - created_at: %Schema{type: :integer, format: :"date-time"} - }, - example: %{ - "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk", - "created_at" => 1_585_918_714, - "scope" => ["read", "write", "follow", "push"], - "token_type" => "Bearer" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex b/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex deleted file mode 100644 index 89e483655..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex +++ /dev/null @@ -1,24 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountAttributeField do - alias OpenApiSpex.Schema - - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountAttributeField", - description: "Request schema for account custom fields", - type: :object, - properties: %{ - name: %Schema{type: :string}, - value: %Schema{type: :string} - }, - required: [:name, :value], - example: %{ - "name" => "Website", - "value" => "https://pleroma.com" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_follows_request.ex b/lib/pleroma/web/api_spec/schemas/account_follows_request.ex deleted file mode 100644 index 19dce0cb2..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_follows_request.ex +++ /dev/null @@ -1,18 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest do - alias OpenApiSpex.Schema - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountFollowsRequest", - description: "POST body for muting an account", - type: :object, - properties: %{ - uri: %Schema{type: :string, format: :uri} - }, - required: [:uri] - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_mute_request.ex b/lib/pleroma/web/api_spec/schemas/account_mute_request.ex deleted file mode 100644 index a61f6d04c..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_mute_request.ex +++ /dev/null @@ -1,24 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountMuteRequest do - alias OpenApiSpex.Schema - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountMuteRequest", - description: "POST body for muting an account", - type: :object, - properties: %{ - notifications: %Schema{ - type: :boolean, - description: "Mute notifications in addition to statuses? Defaults to true.", - default: true - } - }, - example: %{ - "notifications" => true - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex b/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex deleted file mode 100644 index 960e14db1..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex +++ /dev/null @@ -1,58 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse do - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountRelationshipsResponse", - description: "Response schema for account relationships", - type: :array, - items: Pleroma.Web.ApiSpec.Schemas.AccountRelationship, - example: [ - %{ - "id" => "1", - "following" => true, - "showing_reblogs" => true, - "followed_by" => true, - "blocking" => false, - "blocked_by" => true, - "muting" => false, - "muting_notifications" => false, - "requested" => false, - "domain_blocking" => false, - "subscribing" => false, - "endorsed" => true - }, - %{ - "id" => "2", - "following" => true, - "showing_reblogs" => true, - "followed_by" => true, - "blocking" => false, - "blocked_by" => true, - "muting" => true, - "muting_notifications" => false, - "requested" => true, - "domain_blocking" => false, - "subscribing" => false, - "endorsed" => false - }, - %{ - "id" => "3", - "following" => true, - "showing_reblogs" => true, - "followed_by" => true, - "blocking" => true, - "blocked_by" => false, - "muting" => true, - "muting_notifications" => false, - "requested" => false, - "domain_blocking" => true, - "subscribing" => true, - "endorsed" => false - } - ] - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex deleted file mode 100644 index 35220c78a..000000000 --- a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex +++ /dev/null @@ -1,125 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest do - alias OpenApiSpex.Schema - alias Pleroma.Web.ApiSpec.Schemas.AccountAttributeField - alias Pleroma.Web.ApiSpec.Schemas.ActorType - alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountUpdateCredentialsRequest", - description: "POST body for creating an account", - type: :object, - properties: %{ - bot: %Schema{ - type: :boolean, - description: "Whether the account has a bot flag." - }, - display_name: %Schema{ - type: :string, - description: "The display name to use for the profile." - }, - note: %Schema{type: :string, description: "The account bio."}, - avatar: %Schema{ - type: :string, - description: "Avatar image encoded using multipart/form-data", - format: :binary - }, - header: %Schema{ - type: :string, - description: "Header image encoded using multipart/form-data", - format: :binary - }, - locked: %Schema{ - type: :boolean, - description: "Whether manual approval of follow requests is required." - }, - fields_attributes: %Schema{ - oneOf: [ - %Schema{type: :array, items: AccountAttributeField}, - %Schema{type: :object, additionalProperties: %Schema{type: AccountAttributeField}} - ] - }, - # NOTE: `source` field is not supported - # - # source: %Schema{ - # type: :object, - # properties: %{ - # privacy: %Schema{type: :string}, - # sensitive: %Schema{type: :boolean}, - # language: %Schema{type: :string} - # } - # }, - - # Pleroma-specific fields - no_rich_text: %Schema{ - type: :boolean, - description: "html tags are stripped from all statuses requested from the API" - }, - hide_followers: %Schema{type: :boolean, description: "user's followers will be hidden"}, - hide_follows: %Schema{type: :boolean, description: "user's follows will be hidden"}, - hide_followers_count: %Schema{ - type: :boolean, - description: "user's follower count will be hidden" - }, - hide_follows_count: %Schema{ - type: :boolean, - description: "user's follow count will be hidden" - }, - hide_favorites: %Schema{ - type: :boolean, - description: "user's favorites timeline will be hidden" - }, - show_role: %Schema{ - type: :boolean, - description: "user's role (e.g admin, moderator) will be exposed to anyone in the - API" - }, - default_scope: VisibilityScope, - pleroma_settings_store: %Schema{ - type: :object, - description: "Opaque user settings to be saved on the backend." - }, - skip_thread_containment: %Schema{ - type: :boolean, - description: "Skip filtering out broken threads" - }, - allow_following_move: %Schema{ - type: :boolean, - description: "Allows automatically follow moved following accounts" - }, - pleroma_background_image: %Schema{ - type: :string, - description: "Sets the background image of the user.", - format: :binary - }, - discoverable: %Schema{ - type: :boolean, - description: "Discovery of this account in search results and other services is allowed." - }, - actor_type: ActorType - }, - example: %{ - bot: false, - display_name: "cofe", - note: "foobar", - fields_attributes: [%{name: "foo", value: "bar"}], - no_rich_text: false, - hide_followers: true, - hide_follows: false, - hide_followers_count: false, - hide_follows_count: false, - hide_favorites: false, - show_role: false, - default_scope: "private", - pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}}, - skip_thread_containment: false, - allow_following_move: false, - discoverable: false, - actor_type: "Person" - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/accounts_response.ex b/lib/pleroma/web/api_spec/schemas/accounts_response.ex deleted file mode 100644 index b714f59e7..000000000 --- a/lib/pleroma/web/api_spec/schemas/accounts_response.ex +++ /dev/null @@ -1,13 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.AccountsResponse do - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "AccountsResponse", - type: :array, - items: Pleroma.Web.ApiSpec.Schemas.Account - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/list.ex b/lib/pleroma/web/api_spec/schemas/api_error.ex similarity index 52% rename from lib/pleroma/web/api_spec/schemas/list.ex rename to lib/pleroma/web/api_spec/schemas/api_error.ex index f85fac2b8..5815df94c 100644 --- a/lib/pleroma/web/api_spec/schemas/list.ex +++ b/lib/pleroma/web/api_spec/schemas/api_error.ex @@ -2,22 +2,18 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ApiSpec.Schemas.List do +defmodule Pleroma.Web.ApiSpec.Schemas.ApiError do alias OpenApiSpex.Schema require OpenApiSpex OpenApiSpex.schema(%{ - title: "List", - description: "Response schema for a list", + title: "ApiError", + description: "Response schema for API error", type: :object, - properties: %{ - id: %Schema{type: :string}, - title: %Schema{type: :string} - }, + properties: %{error: %Schema{type: :string}}, example: %{ - "id" => "123", - "title" => "my list" + "error" => "Something went wrong" } }) end diff --git a/lib/pleroma/web/api_spec/schemas/custom_emoji.ex b/lib/pleroma/web/api_spec/schemas/custom_emoji.ex deleted file mode 100644 index 5531b2081..000000000 --- a/lib/pleroma/web/api_spec/schemas/custom_emoji.ex +++ /dev/null @@ -1,30 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.CustomEmoji do - alias OpenApiSpex.Schema - - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "CustomEmoji", - description: "Response schema for an CustomEmoji", - type: :object, - properties: %{ - shortcode: %Schema{type: :string}, - url: %Schema{type: :string}, - static_url: %Schema{type: :string}, - visible_in_picker: %Schema{type: :boolean}, - category: %Schema{type: :string}, - tags: %Schema{type: :array} - }, - example: %{ - "shortcode" => "aaaa", - "url" => "https://files.mastodon.social/custom_emojis/images/000/007/118/original/aaaa.png", - "static_url" => - "https://files.mastodon.social/custom_emojis/images/000/007/118/static/aaaa.png", - "visible_in_picker" => true - } - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/account_emoji.ex b/lib/pleroma/web/api_spec/schemas/emoji.ex similarity index 85% rename from lib/pleroma/web/api_spec/schemas/account_emoji.ex rename to lib/pleroma/web/api_spec/schemas/emoji.ex index 6c1d4d95c..26f35e648 100644 --- a/lib/pleroma/web/api_spec/schemas/account_emoji.ex +++ b/lib/pleroma/web/api_spec/schemas/emoji.ex @@ -2,14 +2,14 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ApiSpec.Schemas.AccountEmoji do +defmodule Pleroma.Web.ApiSpec.Schemas.Emoji do alias OpenApiSpex.Schema require OpenApiSpex OpenApiSpex.schema(%{ - title: "AccountEmoji", - description: "Response schema for account custom fields", + title: "Emoji", + description: "Response schema for an emoji", type: :object, properties: %{ shortcode: %Schema{type: :string}, diff --git a/lib/pleroma/web/api_spec/schemas/lists_response.ex b/lib/pleroma/web/api_spec/schemas/lists_response.ex deleted file mode 100644 index 132454579..000000000 --- a/lib/pleroma/web/api_spec/schemas/lists_response.ex +++ /dev/null @@ -1,16 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.ListsResponse do - alias Pleroma.Web.ApiSpec.Schemas.List - - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "ListsResponse", - description: "Response schema for lists", - type: :array, - items: List - }) -end diff --git a/lib/pleroma/web/api_spec/schemas/poll.ex b/lib/pleroma/web/api_spec/schemas/poll.ex index 5fc9e889f..0474b550b 100644 --- a/lib/pleroma/web/api_spec/schemas/poll.ex +++ b/lib/pleroma/web/api_spec/schemas/poll.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do alias OpenApiSpex.Schema - alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + alias Pleroma.Web.ApiSpec.Schemas.Emoji alias Pleroma.Web.ApiSpec.Schemas.FlakeID require OpenApiSpex @@ -20,7 +20,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do multiple: %Schema{type: :boolean}, votes_count: %Schema{type: :integer}, voted: %Schema{type: :boolean}, - emojis: %Schema{type: :array, items: AccountEmoji}, + emojis: %Schema{type: :array, items: Emoji}, options: %Schema{ type: :array, items: %Schema{ diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex index bf5f04691..aef0588d4 100644 --- a/lib/pleroma/web/api_spec/schemas/status.ex +++ b/lib/pleroma/web/api_spec/schemas/status.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do alias OpenApiSpex.Schema alias Pleroma.Web.ApiSpec.Schemas.Account - alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji + alias Pleroma.Web.ApiSpec.Schemas.Emoji alias Pleroma.Web.ApiSpec.Schemas.FlakeID alias Pleroma.Web.ApiSpec.Schemas.Poll alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope @@ -41,7 +41,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do }, content: %Schema{type: :string, format: :html}, created_at: %Schema{type: :string, format: "date-time"}, - emojis: %Schema{type: :array, items: AccountEmoji}, + emojis: %Schema{type: :array, items: Emoji}, favourited: %Schema{type: :boolean}, favourites_count: %Schema{type: :integer}, id: FlakeID, diff --git a/lib/pleroma/web/api_spec/schemas/statuses_response.ex b/lib/pleroma/web/api_spec/schemas/statuses_response.ex deleted file mode 100644 index fb7c7e0aa..000000000 --- a/lib/pleroma/web/api_spec/schemas/statuses_response.ex +++ /dev/null @@ -1,13 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.Schemas.StatusesResponse do - require OpenApiSpex - - OpenApiSpex.schema(%{ - title: "StatusesResponse", - type: :array, - items: Pleroma.Web.ApiSpec.Schemas.Status - }) -end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index b1513001b..37adeec5f 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -104,8 +104,7 @@ def create(%{assigns: %{app: app}, body_params: params} = conn, _params) do :fullname ]) |> Map.put(:nickname, params.username) - |> Map.put(:fullname, params.fullname || params.username) - |> Map.put(:bio, params.bio || "") + |> Map.put(:fullname, Map.get(params, :fullname, params.username)) |> Map.put(:confirm, params.password) |> Map.put(:trusted_app, app.trusted) @@ -158,7 +157,6 @@ def update_credentials(%{assigns: %{user: original_user}, body_params: params} = params = params - |> Map.from_struct() |> Enum.filter(fn {_, value} -> not is_nil(value) end) |> Enum.into(%{}) @@ -217,11 +215,8 @@ defp normalize_fields_attributes(fields) do Enum.map(fields, fn {_, v} -> v end) else Enum.map(fields, fn - %Pleroma.Web.ApiSpec.Schemas.AccountAttributeField{} = field -> - %{"name" => field.name, "value" => field.value} - - field -> - field + %{} = field -> %{"name" => field.name, "value" => field.value} + field -> field end) end end diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs deleted file mode 100644 index 892ade71c..000000000 --- a/test/web/api_spec/account_operation_test.exs +++ /dev/null @@ -1,141 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ApiSpec.AccountOperationTest do - use Pleroma.Web.ConnCase - - alias Pleroma.Web.ApiSpec - alias Pleroma.Web.ApiSpec.Schemas.Account - alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest - alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse - alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse - alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest - - import OpenApiSpex.TestAssertions - import Pleroma.Factory - - test "Account example matches schema" do - api_spec = ApiSpec.spec() - schema = Account.schema() - assert_schema(schema.example, "Account", api_spec) - end - - test "AccountCreateRequest example matches schema" do - api_spec = ApiSpec.spec() - schema = AccountCreateRequest.schema() - assert_schema(schema.example, "AccountCreateRequest", api_spec) - end - - test "AccountCreateResponse example matches schema" do - api_spec = ApiSpec.spec() - schema = AccountCreateResponse.schema() - assert_schema(schema.example, "AccountCreateResponse", api_spec) - end - - test "AccountUpdateCredentialsRequest example matches schema" do - api_spec = ApiSpec.spec() - schema = AccountUpdateCredentialsRequest.schema() - assert_schema(schema.example, "AccountUpdateCredentialsRequest", api_spec) - end - - test "AccountController produces a AccountCreateResponse", %{conn: conn} do - api_spec = ApiSpec.spec() - app_token = insert(:oauth_token, user: nil) - - json = - conn - |> put_req_header("authorization", "Bearer " <> app_token.token) - |> put_req_header("content-type", "application/json") - |> post( - "/api/v1/accounts", - %{ - username: "foo", - email: "bar@example.org", - password: "qwerty", - agreement: true - } - ) - |> json_response(200) - - assert_schema(json, "AccountCreateResponse", api_spec) - end - - test "AccountUpdateCredentialsRequest produces an Account", %{conn: conn} do - api_spec = ApiSpec.spec() - token = insert(:oauth_token, scopes: ["read", "write"]) - - json = - conn - |> put_req_header("authorization", "Bearer " <> token.token) - |> put_req_header("content-type", "application/json") - |> patch( - "/api/v1/accounts/update_credentials", - %{ - hide_followers_count: "true", - hide_follows_count: "true", - skip_thread_containment: "true", - hide_follows: "true", - pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}}, - note: "foobar", - fields_attributes: [%{name: "foo", value: "bar"}] - } - ) - |> json_response(200) - - assert_schema(json, "Account", api_spec) - end - - test "AccountRelationshipsResponse example matches schema" do - api_spec = ApiSpec.spec() - schema = AccountRelationshipsResponse.schema() - assert_schema(schema.example, "AccountRelationshipsResponse", api_spec) - end - - test "/api/v1/accounts/relationships produces AccountRelationshipsResponse", %{ - conn: conn - } do - token = insert(:oauth_token, scopes: ["read", "write"]) - other_user = insert(:user) - {:ok, _user} = Pleroma.User.follow(token.user, other_user) - api_spec = ApiSpec.spec() - - assert [relationship] = - conn - |> put_req_header("authorization", "Bearer " <> token.token) - |> get("/api/v1/accounts/relationships?id=#{other_user.id}") - |> json_response(:ok) - - assert_schema([relationship], "AccountRelationshipsResponse", api_spec) - end - - test "/api/v1/accounts/:id produces Account", %{ - conn: conn - } do - user = insert(:user) - api_spec = ApiSpec.spec() - - assert resp = - conn - |> get("/api/v1/accounts/#{user.id}") - |> json_response(:ok) - - assert_schema(resp, "Account", api_spec) - end - - test "/api/v1/accounts/:id/statuses produces StatusesResponse", %{ - conn: conn - } do - user = insert(:user) - Pleroma.Web.CommonAPI.post(user, %{"status" => "foobar"}) - - api_spec = ApiSpec.spec() - - assert resp = - conn - |> get("/api/v1/accounts/#{user.id}/statuses") - |> json_response(:ok) - - assert_schema(resp, "StatusesResponse", api_spec) - end -end diff --git a/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs b/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs index 4222556a4..ab0027f90 100644 --- a/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs +++ b/test/web/mastodon_api/controllers/custom_emoji_controller_test.exs @@ -4,8 +4,6 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiControllerTest do use Pleroma.Web.ConnCase, async: true - alias Pleroma.Web.ApiSpec - import OpenApiSpex.TestAssertions test "with tags", %{conn: conn} do assert resp = @@ -21,6 +19,5 @@ test "with tags", %{conn: conn} do assert Map.has_key?(emoji, "category") assert Map.has_key?(emoji, "url") assert Map.has_key?(emoji, "visible_in_picker") - assert_schema(emoji, "CustomEmoji", ApiSpec.spec()) end end From 5ff20793e739daa962cdc1623c01dc6ec1ff8a61 Mon Sep 17 00:00:00 2001 From: fence Date: Tue, 28 Apr 2020 01:29:31 +0200 Subject: [PATCH 120/137] formating --- lib/pleroma/web/mongooseim/mongoose_im_controller.ex | 1 - test/web/mongooseim/mongoose_im_controller_test.exs | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex index 7123153c5..1ed6ee521 100644 --- a/lib/pleroma/web/mongooseim/mongoose_im_controller.ex +++ b/lib/pleroma/web/mongooseim/mongoose_im_controller.ex @@ -44,4 +44,3 @@ def check_password(conn, %{"user" => username, "pass" => password}) do end end end - diff --git a/test/web/mongooseim/mongoose_im_controller_test.exs b/test/web/mongooseim/mongoose_im_controller_test.exs index d17f8dbb4..1ac2f2c27 100644 --- a/test/web/mongooseim/mongoose_im_controller_test.exs +++ b/test/web/mongooseim/mongoose_im_controller_test.exs @@ -42,7 +42,13 @@ test "/user_exists", %{conn: conn} do test "/check_password", %{conn: conn} do user = insert(:user, password_hash: Comeonin.Pbkdf2.hashpwsalt("cool")) - _deactivated_user = insert(:user, nickname: "konata", deactivated: true, password_hash: Comeonin.Pbkdf2.hashpwsalt("cool")) + + _deactivated_user = + insert(:user, + nickname: "konata", + deactivated: true, + password_hash: Comeonin.Pbkdf2.hashpwsalt("cool") + ) res = conn @@ -65,7 +71,6 @@ test "/check_password", %{conn: conn} do assert res == false - res = conn |> get(mongoose_im_path(conn, :check_password), user: "nobody", pass: "cool") From 4b3298133b78ad67b61b07e2f267e5587ceef7bf Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 28 Apr 2020 10:13:58 -0500 Subject: [PATCH 121/137] Document DELETE /api/v1/notifications/destroy_multiple --- docs/API/differences_in_mastoapi_responses.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index 921995510..289f85930 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -120,6 +120,18 @@ Accepts additional parameters: - `exclude_visibilities`: will exclude the notifications for activities with the given visibilities. The parameter accepts an array of visibility types (`public`, `unlisted`, `private`, `direct`). Usage example: `GET /api/v1/notifications?exclude_visibilities[]=direct&exclude_visibilities[]=private`. - `include_types`: will include the notifications for activities with the given types. The parameter accepts an array of types (`mention`, `follow`, `reblog`, `favourite`, `move`, `pleroma:emoji_reaction`). Usage example: `GET /api/v1/notifications?include_types[]=mention&include_types[]=reblog`. +## DELETE `/api/v1/notifications/destroy_multiple` + +An endpoint to delete multiple statuses by IDs. + +Required parameters: + +- `ids`: array of activity ids + +Usage example: `DELETE /api/v1/notifications/destroy_multiple/?ids[]=1&ids[]=2`. + +Returns on success: 200 OK `{}` + ## POST `/api/v1/statuses` Additional parameters can be added to the JSON body/Form data: From 4c0e53367acd74de04de070a5e33380f5e457163 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 28 Apr 2020 20:04:25 +0300 Subject: [PATCH 122/137] [#2349] Post-merge fix. --- lib/pleroma/web/api_spec/operations/account_operation.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 2efe6e901..64e2e43c4 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -294,13 +294,13 @@ def unblock_operation do } end - def follows_operation do + def follow_by_uri_operation do %Operation{ tags: ["accounts"], - summary: "Follows", + summary: "Follow by URI", operationId: "AccountController.follows", security: [%{"oAuth" => ["follow", "write:follows"]}], - requestBody: request_body("Parameters", follows_request(), required: true), + requestBody: request_body("Parameters", follow_by_uri_request(), required: true), responses: %{ 200 => Operation.response("Account", "application/json", AccountRelationship), 400 => Operation.response("Error", "application/json", ApiError), @@ -615,7 +615,7 @@ defp array_of_relationships do } end - defp follows_request do + defp follow_by_uri_request do %Schema{ title: "AccountFollowsRequest", description: "POST body for muting an account", From 3ead44a9aa14daebfb63de089d047f4fe9ee3bdd Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 29 Apr 2020 15:49:48 -0500 Subject: [PATCH 123/137] Update AdminFE build in preparation for the 2.0.3 release --- .../{app.85534e14.css => app.796ca6d4.css} | Bin 12836 -> 12837 bytes ...a.5a5f973d.css => chunk-0558.af0d89cd.css} | Bin priv/static/adminfe/chunk-0778.d9e7180a.css | Bin 0 -> 2340 bytes ...c.90dffac4.css => chunk-0961.d3692214.css} | Bin priv/static/adminfe/chunk-0d8f.d85f5a29.css | Bin 3433 -> 0 bytes priv/static/adminfe/chunk-13e9.98eaadba.css | Bin 1071 -> 0 bytes priv/static/adminfe/chunk-22d2.813009b9.css | Bin 0 -> 6282 bytes priv/static/adminfe/chunk-2b9c.feb61a2b.css | Bin 5580 -> 0 bytes ...a.f1130f8e.css => chunk-3384.2278f87c.css} | Bin 4946 -> 5550 bytes priv/static/adminfe/chunk-4011.c4799067.css | Bin 0 -> 23982 bytes priv/static/adminfe/chunk-46ef.145de4f9.css | Bin 1790 -> 0 bytes priv/static/adminfe/chunk-6b68.0cc00484.css | Bin 0 -> 692 bytes ...b.dd09fe2e.css => chunk-6e81.0e80d020.css} | Bin priv/static/adminfe/chunk-7637.941c4edb.css | Bin 0 -> 1347 bytes priv/static/adminfe/chunk-87b3.3c6ede9c.css | Bin 9575 -> 0 bytes priv/static/adminfe/chunk-88c9.184084df.css | Bin 5731 -> 0 bytes priv/static/adminfe/chunk-970d.f59cca8c.css | Bin 0 -> 6173 bytes priv/static/adminfe/chunk-cf57.26596375.css | Bin 3244 -> 0 bytes priv/static/adminfe/chunk-d38a.cabdc22e.css | Bin 0 -> 3332 bytes priv/static/adminfe/chunk-e458.f88bafea.css | Bin 0 -> 3156 bytes priv/static/adminfe/index.html | 2 +- priv/static/adminfe/static/js/app.203f69f8.js | Bin 0 -> 187722 bytes .../adminfe/static/js/app.203f69f8.js.map | Bin 0 -> 416278 bytes priv/static/adminfe/static/js/app.d898cc2b.js | Bin 185128 -> 0 bytes .../adminfe/static/js/app.d898cc2b.js.map | Bin 410154 -> 0 bytes ...5fa.34070731.js => chunk-0558.75954137.js} | Bin 7919 -> 7919 bytes ...0731.js.map => chunk-0558.75954137.js.map} | Bin 17438 -> 17438 bytes .../adminfe/static/js/chunk-0778.b17650df.js | Bin 0 -> 9756 bytes .../static/js/chunk-0778.b17650df.js.map | Bin 0 -> 32393 bytes ...76c.e4ceccca.js => chunk-0961.ef33e81b.js} | Bin 5112 -> 5112 bytes ...ccca.js.map => chunk-0961.ef33e81b.js.map} | Bin 19744 -> 19744 bytes .../adminfe/static/js/chunk-0d8f.6d50ff86.js | Bin 33538 -> 0 bytes .../static/js/chunk-0d8f.6d50ff86.js.map | Bin 116201 -> 0 bytes .../adminfe/static/js/chunk-136a.c4719e3e.js | Bin 19553 -> 0 bytes .../static/js/chunk-136a.c4719e3e.js.map | Bin 69090 -> 0 bytes .../adminfe/static/js/chunk-13e9.79da1569.js | Bin 9528 -> 0 bytes .../static/js/chunk-13e9.79da1569.js.map | Bin 40125 -> 0 bytes .../adminfe/static/js/chunk-22d2.a0cf7976.js | Bin 0 -> 30624 bytes .../static/js/chunk-22d2.a0cf7976.js.map | Bin 0 -> 103450 bytes .../adminfe/static/js/chunk-2b9c.cf321c74.js | Bin 28194 -> 0 bytes .../static/js/chunk-2b9c.cf321c74.js.map | Bin 95810 -> 0 bytes .../adminfe/static/js/chunk-3384.458ffaf1.js | Bin 0 -> 23953 bytes .../static/js/chunk-3384.458ffaf1.js.map | Bin 0 -> 85906 bytes .../adminfe/static/js/chunk-4011.67fb1692.js | Bin 0 -> 117521 bytes .../static/js/chunk-4011.67fb1692.js.map | Bin 0 -> 397967 bytes .../adminfe/static/js/chunk-46ef.671cac7d.js | Bin 7765 -> 0 bytes .../static/js/chunk-46ef.671cac7d.js.map | Bin 26170 -> 0 bytes .../adminfe/static/js/chunk-6b68.fbc0f684.js | Bin 0 -> 14790 bytes .../static/js/chunk-6b68.fbc0f684.js.map | Bin 0 -> 40172 bytes ...ffb.0e8f3772.js => chunk-6e81.3733ace2.js} | Bin 2080 -> 2080 bytes ...3772.js.map => chunk-6e81.3733ace2.js.map} | Bin 9090 -> 9090 bytes .../adminfe/static/js/chunk-7637.8f5fb36e.js | Bin 0 -> 10877 bytes .../static/js/chunk-7637.8f5fb36e.js.map | Bin 0 -> 44563 bytes .../adminfe/static/js/chunk-87b3.3c11ef09.js | Bin 103449 -> 0 bytes .../static/js/chunk-87b3.3c11ef09.js.map | Bin 358904 -> 0 bytes .../adminfe/static/js/chunk-88c9.e3583744.js | Bin 24234 -> 0 bytes .../static/js/chunk-88c9.e3583744.js.map | Bin 92387 -> 0 bytes .../adminfe/static/js/chunk-970d.2457e066.js | Bin 0 -> 26608 bytes .../static/js/chunk-970d.2457e066.js.map | Bin 0 -> 100000 bytes .../adminfe/static/js/chunk-cf57.3e45f57f.js | Bin 29728 -> 0 bytes .../static/js/chunk-cf57.3e45f57f.js.map | Bin 89855 -> 0 bytes .../adminfe/static/js/chunk-d38a.a851004a.js | Bin 0 -> 20205 bytes .../static/js/chunk-d38a.a851004a.js.map | Bin 0 -> 81345 bytes .../adminfe/static/js/chunk-e458.4e5aad44.js | Bin 0 -> 16756 bytes .../static/js/chunk-e458.4e5aad44.js.map | Bin 0 -> 55666 bytes .../adminfe/static/js/runtime.1b4f6ce0.js | Bin 0 -> 4032 bytes .../adminfe/static/js/runtime.1b4f6ce0.js.map | Bin 0 -> 16879 bytes .../adminfe/static/js/runtime.cb26bbd1.js | Bin 3969 -> 0 bytes .../adminfe/static/js/runtime.cb26bbd1.js.map | Bin 16759 -> 0 bytes 69 files changed, 1 insertion(+), 1 deletion(-) rename priv/static/adminfe/{app.85534e14.css => app.796ca6d4.css} (68%) rename priv/static/adminfe/{chunk-15fa.5a5f973d.css => chunk-0558.af0d89cd.css} (100%) create mode 100644 priv/static/adminfe/chunk-0778.d9e7180a.css rename priv/static/adminfe/{chunk-876c.90dffac4.css => chunk-0961.d3692214.css} (100%) delete mode 100644 priv/static/adminfe/chunk-0d8f.d85f5a29.css delete mode 100644 priv/static/adminfe/chunk-13e9.98eaadba.css create mode 100644 priv/static/adminfe/chunk-22d2.813009b9.css delete mode 100644 priv/static/adminfe/chunk-2b9c.feb61a2b.css rename priv/static/adminfe/{chunk-136a.f1130f8e.css => chunk-3384.2278f87c.css} (64%) create mode 100644 priv/static/adminfe/chunk-4011.c4799067.css delete mode 100644 priv/static/adminfe/chunk-46ef.145de4f9.css create mode 100644 priv/static/adminfe/chunk-6b68.0cc00484.css rename priv/static/adminfe/{chunk-4ffb.dd09fe2e.css => chunk-6e81.0e80d020.css} (100%) create mode 100644 priv/static/adminfe/chunk-7637.941c4edb.css delete mode 100644 priv/static/adminfe/chunk-87b3.3c6ede9c.css delete mode 100644 priv/static/adminfe/chunk-88c9.184084df.css create mode 100644 priv/static/adminfe/chunk-970d.f59cca8c.css delete mode 100644 priv/static/adminfe/chunk-cf57.26596375.css create mode 100644 priv/static/adminfe/chunk-d38a.cabdc22e.css create mode 100644 priv/static/adminfe/chunk-e458.f88bafea.css create mode 100644 priv/static/adminfe/static/js/app.203f69f8.js create mode 100644 priv/static/adminfe/static/js/app.203f69f8.js.map delete mode 100644 priv/static/adminfe/static/js/app.d898cc2b.js delete mode 100644 priv/static/adminfe/static/js/app.d898cc2b.js.map rename priv/static/adminfe/static/js/{chunk-15fa.34070731.js => chunk-0558.75954137.js} (98%) rename priv/static/adminfe/static/js/{chunk-15fa.34070731.js.map => chunk-0558.75954137.js.map} (99%) create mode 100644 priv/static/adminfe/static/js/chunk-0778.b17650df.js create mode 100644 priv/static/adminfe/static/js/chunk-0778.b17650df.js.map rename priv/static/adminfe/static/js/{chunk-876c.e4ceccca.js => chunk-0961.ef33e81b.js} (97%) rename priv/static/adminfe/static/js/{chunk-876c.e4ceccca.js.map => chunk-0961.ef33e81b.js.map} (99%) delete mode 100644 priv/static/adminfe/static/js/chunk-0d8f.6d50ff86.js delete mode 100644 priv/static/adminfe/static/js/chunk-0d8f.6d50ff86.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-136a.c4719e3e.js delete mode 100644 priv/static/adminfe/static/js/chunk-136a.c4719e3e.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-13e9.79da1569.js delete mode 100644 priv/static/adminfe/static/js/chunk-13e9.79da1569.js.map create mode 100644 priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js create mode 100644 priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-2b9c.cf321c74.js delete mode 100644 priv/static/adminfe/static/js/chunk-2b9c.cf321c74.js.map create mode 100644 priv/static/adminfe/static/js/chunk-3384.458ffaf1.js create mode 100644 priv/static/adminfe/static/js/chunk-3384.458ffaf1.js.map create mode 100644 priv/static/adminfe/static/js/chunk-4011.67fb1692.js create mode 100644 priv/static/adminfe/static/js/chunk-4011.67fb1692.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-46ef.671cac7d.js delete mode 100644 priv/static/adminfe/static/js/chunk-46ef.671cac7d.js.map create mode 100644 priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js create mode 100644 priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js.map rename priv/static/adminfe/static/js/{chunk-4ffb.0e8f3772.js => chunk-6e81.3733ace2.js} (85%) rename priv/static/adminfe/static/js/{chunk-4ffb.0e8f3772.js.map => chunk-6e81.3733ace2.js.map} (98%) create mode 100644 priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js create mode 100644 priv/static/adminfe/static/js/chunk-7637.8f5fb36e.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-87b3.3c11ef09.js delete mode 100644 priv/static/adminfe/static/js/chunk-87b3.3c11ef09.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-88c9.e3583744.js delete mode 100644 priv/static/adminfe/static/js/chunk-88c9.e3583744.js.map create mode 100644 priv/static/adminfe/static/js/chunk-970d.2457e066.js create mode 100644 priv/static/adminfe/static/js/chunk-970d.2457e066.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-cf57.3e45f57f.js delete mode 100644 priv/static/adminfe/static/js/chunk-cf57.3e45f57f.js.map create mode 100644 priv/static/adminfe/static/js/chunk-d38a.a851004a.js create mode 100644 priv/static/adminfe/static/js/chunk-d38a.a851004a.js.map create mode 100644 priv/static/adminfe/static/js/chunk-e458.4e5aad44.js create mode 100644 priv/static/adminfe/static/js/chunk-e458.4e5aad44.js.map create mode 100644 priv/static/adminfe/static/js/runtime.1b4f6ce0.js create mode 100644 priv/static/adminfe/static/js/runtime.1b4f6ce0.js.map delete mode 100644 priv/static/adminfe/static/js/runtime.cb26bbd1.js delete mode 100644 priv/static/adminfe/static/js/runtime.cb26bbd1.js.map diff --git a/priv/static/adminfe/app.85534e14.css b/priv/static/adminfe/app.796ca6d4.css similarity index 68% rename from priv/static/adminfe/app.85534e14.css rename to priv/static/adminfe/app.796ca6d4.css index 473ec1b86bbe0189960fea70c7be503c65500663..1b83a8a391196c79f9b66eb7f280d9fb6d3844d0 100644 GIT binary patch delta 208 zcmZ3IvNUA_6FaM^fq{YbWIJB5$#I;*n+@2fOR*bSq@Px# delta 197 zcmZ3QvLs~#6FaM+fq|j*WIJB5$#I;*n+@2fOR*bTS{j?1Sxi2s=nQ8|D9wViV^#Gg zKUb20^SPAu;cN$GH#oaj*&WWlt?UG6J19#`wo&0?w3zIn(f}7duhI@@$Eqg5*~e7# Q;B0HPei(c6MYRxa0L^GKaR2}S diff --git a/priv/static/adminfe/chunk-15fa.5a5f973d.css b/priv/static/adminfe/chunk-0558.af0d89cd.css similarity index 100% rename from priv/static/adminfe/chunk-15fa.5a5f973d.css rename to priv/static/adminfe/chunk-0558.af0d89cd.css diff --git a/priv/static/adminfe/chunk-0778.d9e7180a.css b/priv/static/adminfe/chunk-0778.d9e7180a.css new file mode 100644 index 0000000000000000000000000000000000000000..9d730019aebaadd93fb66d1e0052885357ab91dc GIT binary patch literal 2340 zcmb`I-Hw|u5QSgGQngYm)d-SJ8kw8E$;!YG+!#ADPC|I108LTzbRSVC^&i^y!j)|(KYcjQ?n)SgB7@vNYN zOIM9%f=j(`x+0tK1Sl2|&`6o9yi^(b=_`-kz+Mo`5;sr601e zhiwuGeQzkD{;tfs90=6i@EX(VWoahUVNlBx34QmXFno#oiH2lxrhWcda0(?C@^b@y ztoCmM?XoIb0MEeOJ@+w#O-(gZ{Aj9K)Z>F`g-_dZFck{u*%Wf!q*`jjzHGPKI7jTz zO8f>Ep^9UP1j6pLLRhUZFwPYxyQIv!tDLA?b?4fYt>vGq&p@Iz;_QSrQZpZn2lqaY zUY#y~mVh20TFEP^5E7sWR~h+Q@|t#5e%;|MzcoIn{9ml@Tz97P(?&Q{p21j=ayeVe zgn<_7Okrc(;(*=z3J&E|s@S0$#XRiqqtkTtMllO#WupaoKnqwqt+ zhv%;Sjs-pp1%1k0Dl-7@HvTNfJoh8OsatIZ-Z##taIX#}U U1qspzJ$c0Q{jXO{x^TPw0XQsYNB{r; literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/chunk-876c.90dffac4.css b/priv/static/adminfe/chunk-0961.d3692214.css similarity index 100% rename from priv/static/adminfe/chunk-876c.90dffac4.css rename to priv/static/adminfe/chunk-0961.d3692214.css diff --git a/priv/static/adminfe/chunk-0d8f.d85f5a29.css b/priv/static/adminfe/chunk-0d8f.d85f5a29.css deleted file mode 100644 index 931620872e43d5af521a39992bbca6d4bf41b75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3433 zcmds4?TXtt6n&MzGO&fpIG#zG+OX_?OjKv{XpY z%Qv|&$BJH3a)SIIEM|VrhO^p`qJs1I%>B+r#^gxZA^oc{Ruq?vbT_7_-B%w5NShkG z10)A~!j`oWRD^4F7rdpJH>n#Q5La^<2nM&6?Z|hqZSz7+mxlali8q2Ui zpl^koocbR`Sg1`J3|pV01IDr*9VAF7NaBGZ71^uTJ3vVN@s+7c>GZd4yiK;-EXUrK zS~Zem8U2T%C^FV)gGRKmDl|{fN|j%}&?4OO1 zPj;^wOTwku-S`25_A=0g(-_bMl>?*h^klbrYNLM@tOMW$RAOwUs5FAkdY-?G_*lZ5nni?#cnax{5tLcT%UCZ|hE zb~7Z6S8JRftD7Ld0zpCQDfSY71SC^|(v0!@WIn`kknUi)a?0rSj_rXR<`-|m*n9kd z?qd9NekZa@Dj^R&!vlMdN_e5^cpajdbKs95f@9T~o_HgHJyK&%N^_#YfF)KPKz3%B zKSuK6BDrTZ<)52>QFvo8b}<}!E?{ouDM%bI8%B%W3j2lcGT|86*U*?9hC93PV+Y*=98*IN( z)y7Juv~bH34r?nIttP_6g~lD(5klffbszi1>-Ghi-P97n31=)zZ{MAUQR+0xaRn=J zC#PP0sMhL4+*qMegFs9$ji2KJObwq2w0ToQ5QVSeO{I1*$fO`eX489AT?}{vZj3>;6Nn=2UX!3G2~CuA(G7@Ue%|+H zqPme}(W}OQZb~Q`<53y1pAtR77E+lmIFFOBeT}wMMsOCVZ9i1;&5W40J>zT!H4KdT#!W2q9HwR)hX#K@tz)rUey`g-UE}$wHkK< zI?C6|L*De+DONjJY3k2o<9BwJ93&NM@x5_gt#%nq6_?TJ??DC`FI=c0$jNs^W(MjA zZBac3xp8E{k*31W3s1W{t|hy0>p1P6L!NpMs8wl%Rb}OesKsy#hqIXvJIgKtE7{?r zCaI7$M(>y_Y(QpcBzvu~hoh8a85Z}pe}3aJ=Pxt=9`$0p)X9r9owvEah9nGrfNaU* UKsNCzbK)JNf8hO1=l|jU0J@ZQ&j0`b diff --git a/priv/static/adminfe/chunk-22d2.813009b9.css b/priv/static/adminfe/chunk-22d2.813009b9.css new file mode 100644 index 0000000000000000000000000000000000000000..f0a98583e59dd947126cbeb683627f927da831df GIT binary patch literal 6282 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 diff --git a/priv/static/adminfe/chunk-136a.f1130f8e.css b/priv/static/adminfe/chunk-3384.2278f87c.css similarity index 64% rename from priv/static/adminfe/chunk-136a.f1130f8e.css rename to priv/static/adminfe/chunk-3384.2278f87c.css index f492b37d0b450faae11e4d8a0dd6936e67654081..96e3273eb0687ee7f7725d5e672f46a965cf116a 100644 GIT binary patch delta 397 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 V3sznseF?(P0`aKf$5tzk$6uM0m0th= diff --git a/priv/static/adminfe/chunk-6b68.0cc00484.css b/priv/static/adminfe/chunk-6b68.0cc00484.css new file mode 100644 index 0000000000000000000000000000000000000000..7061b3d03b3023484f1736d388aa22e32dbd6e25 GIT binary patch literal 692 zcmd5)TaLmo3_Q$!8}U%9RdSToex!|4yo9()Tv~*A~*>cPhC(Ro#>IQ?A5MX_ml38wG=wF$;EZG+ypHLF%&Sq z?zEJ8Z_WxvYz`#Q@T7mSV*=-KddBXxej-C}+JpKTl8`%Vm?xI#+%0Ed5S8)_LW43Q zhU*GF*vP%*@r`EZ*@%kN?WHg&YXP(*uTqXCb`+p+Rdu&PO!u#~FN}OVw#^1%{4;Wa zmI6rdnAC&#(0C8Vs~>YDW<$0m7=dBWr#C@R1-`WGIjWC(U2p4JH~F_+V`(_& NbUVb9NoEkf-T+8Z{RaR5 literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/chunk-4ffb.dd09fe2e.css b/priv/static/adminfe/chunk-6e81.0e80d020.css similarity index 100% rename from priv/static/adminfe/chunk-4ffb.dd09fe2e.css rename to priv/static/adminfe/chunk-6e81.0e80d020.css diff --git a/priv/static/adminfe/chunk-7637.941c4edb.css b/priv/static/adminfe/chunk-7637.941c4edb.css new file mode 100644 index 0000000000000000000000000000000000000000..be1d183a984c8bffa271e431edaf059001594512 GIT binary patch literal 1347 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 diff --git a/priv/static/adminfe/chunk-88c9.184084df.css b/priv/static/adminfe/chunk-88c9.184084df.css deleted file mode 100644 index f3299f33b6d5a298703ac10d8263b82ebccb2592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5731 zcmdT|+iu%95d9Sb#R4r*8nR=zS?Oi}V^I{eMBCg*qCnEIy@vmNhr^+6mQ$xq3M_)e zG4C^T=FB0**~z2hh0L`PPU$+`*M&5ts^w)?YbW_m3TQa%@=ZAx)Ud;4T<8*Ko4w{3pItT&hr zmCM>mGd>cv_74=A`bXfksN}g4W~=Hn$>^YqMR(9=;e_F;+MW-paJzKAYL0On{vRfD zgC;^JEx*>q>DLX^MuBnZvoucSq8u1sC?j(WU#(5$J7Y|`o?Msvs?IP{<5oIoE=)ll zfIvH^E3`58YVd9C&KvmTR{bmcodlCMWF1`Eki|2-7{*5APw78<>(u7dSutp(UY>{Z zq!xN5UrTq8vcCLP$wCRH>+-~GZlH;Yx?mqGapWOv%SQm;r}Ipf+#CG;JDt4|MWO0# zI)`pH|JsI+x(N_|@&Gpe7y|OZj6B!H|E+xUt_ZlytP^f;(I+EQyhjH8Y$ozt?*R-q z=_B*p0PKOeu=oO*(!UAplz9CNyIAg2g_r3#C4P-4z;Rk;_gWRitWplUJUNPVg>Ww zBeUPL&J401MG|<&xY2bqw2fsGUax6*cL$~dG+HL0Cp6;!^jOkcgSb7!DS8w5gF*>} z0ikTs$|7oqlH)Tqx7{P*lQ1NnxIE@ckA;WHio|dWw!V^K0qC+JBAfXF7Qavd^O~fA z3L9$?)?TcJ0Avu(x#Jrp%i`|>US9Y!mwEp1WwR3Bh#wzTo;mJ^<2`F4=MGKwiFL;= zkI5X~73j60)v(J)-+I2wo)zfb&U5XK4&M)uhb^c*=-RGi*1%b`>pzdIgdQ7n}4xRHg`cx`|vb z*3n}|;6X5Z;+|YHEC?rrN0b*=>k8W9@l{}tN50Dmz9t0WhE?QxE>Xxm5G22XLw$B$ F{sT2wVJrXu diff --git a/priv/static/adminfe/chunk-970d.f59cca8c.css b/priv/static/adminfe/chunk-970d.f59cca8c.css new file mode 100644 index 0000000000000000000000000000000000000000..15511f12f3b51b534a28c41450eb357386b270d7 GIT binary patch literal 6173 zcmdT|+iv4F5d9SaivqjA(vY1vO{JIqN3mGY5^b}QM1i8?xQ73|GeeH<&N{nEfg(s8 z^D^Xc&YU@R}vb|;;1%H+KG*M5wg&`D%r?J z;kZuLqZ!s-DsrH7lli9KD)oeFuiihmoeM!iul^Ww>nW^az7G!~F>0OVHe zLZP-Up;+|%i`ZFqqSM?ICVNV6CZAd3K5m}uX3ftt;GC`h z1Fy~PJKL-530R0B;`y2qes=gQ?@jPMf^4vqt3o-I2hwz>LM7S(Sh6$}3uo$Nnhs(1 zdojm=KbeQcp!IcD<$OWHY?J4x-QFA=6YCl7XBTxkO z41#q7n~%pkxeE}$2t@bri=Xj)Bm-5Dw^#XoutfL*0tbXuGvp;&@#;!6;U^^nSN@}w zb%K9<$#1{Td-q;Q``{YIe0{a-To$sUPu5DTSV_|SfIqu>k?UuT(l-zyDm=tSt}vjm z2xK*ADr1wKRVTu!mlH&bt(YKM8G~~JDraY*faU-vH1TOG@h5Gkp$1t|*~Pi0C}iEJ z^Tt@%5o@!`pi1xclh|(c3`^}%?FE?6O$uu29CpBK@b)$I3u!GBS)$7!cft~6lSXBQ zfvpZa!K3rC3S3IFgKfa)+GrH(m;F5-ajUw$`m(Av)%xLJS$T>UeN5Z1yrY$0Uy6(iBm;M0U54pX0CivsiwCO}>a9 zj|x8X6@=2DGPLPtT4mCH76z;!PM_4t5AJ!?)1Z_GVYt(-=U4}kMLf{DG`*11mz3QXrSuC1(WXDJZD9d`cwFJ>Q`xm(m!#z%; zKg&NLc${!;QBh48E>L6O)`9vDn-XvFULtb>d0iQJ4niBnbpMIu!I{ef7l%?-*1US` zfztHVOfLqv-@v?kADG}DS&atCPf`jF$-2>{)whks6h%vs`xYv{$gM&+PO z3I=$D<&3|Ca)!#KhC0lZi7GVJM!+-3>&%I*Rz?0-4(~JKS*R?#d)Th!w?LD3Yb21{ zQF)6^qTZp)m|r)n@)$4S^&z}Tv`Y8>5nInU`LhO9+?`ze{D5)W7{kfUr?Hg}@pAnT zf8+C`_l-0_BW5*(JaWY-7GZed(*+dkF5px9!6b1c(GtF$MfjDuiA6;VMR;xC*As@_ z4J$EHXJ>mM+u5D&lUeVlWrNSiH{SK9bnz>%Tp?F~@&q_il!sRWzh6#IjzKdE6e!S~ z@Zr8THPBUw06;;>jP+~QrZ)(|gr}xgt#x&M_4uY_=Ph?Qe8q7rjb6rHIkX?8ARi#m fF<2m5HzweHwOyrs$O~{j zbN4*=+^q;TLdg#0y)jDuV8jsgh_-jP>2AHrf1V9L8boSQN?h~8WCy`ag}1k9d(2wG zn2;r2!{V}vJt3;3AwqIJ_sK-p*5riIf#-W+P_B;IxYu;3sQGcaXV=-p7`24%@k8Gk zQJga5pNMz;sk;W326ylbM>#hK&gEsrYs9o_nK~@QT-1sftVLNFXDJ{S#F;SjP#U63 zA(6Aiw>Axil>c??Q6dLmDI|#NYa*jvw?M-1ro)5b5Thl=JRhDCJ|P=N45?719v6s! z-S(NPT50@gm+m&ZU6up3rB=OUkVbb<6h%gR-GLG5jk>HlLrmWxN;Err0CENNZ9Eev z=Lyh~f-^G^nQ^K#v5d#?0{UmUNu7ShO{Xh_M=Lm6z+ z&r7F?Xi9IfPG=@vr4Fc38rbM+E`(sqYoJi{KEDWIjCJzX+KIp&YbV-Wf_(8#kDwMB z*=WPHgml@=Yen~7E7njJnNP3#Kd+fZ=L2p?l7=t4AN=4nINxk$V0p*6VyDr^L`Ytz zI!X(xB*0`ND5;}DVnTDLq*yB5*u$Vo*At*~-^k3W8G5?=ghnAD6{mYp!a$KhX1+Za zrj=Z{;d#PeoBOByUVazjH8-63hs~+xSQuae%{*R4wRm0*{-zZtP)_g9@%xoMqz=R( z36*;grc%8L&0rqm<$DAAP7)>SQ_@ilJt85JC0`nHL_@9L+<};VJ=@OF@UF8W(17v} zhj+HhuP3&nc>!=I(Vf7|D%btJ&)Kw#ChIx4U=KaTQ@|pS+`z~FrprirsknBbKp!uX zu1!T(@{72GPv7|Lo80j5M%Y7z95iXM{TfPRTrNlVubB3s)f}$Qp-Y81=p2Af6DxyD zCP}ppS+_G)@`7cc_SJomL;IBLyVR@4upFD)Sddwa8i2rABAb?!0$pJ~6gETr&!4M-37Zs4r>g=WeW>0Mil}?%cRAf@h&i z(rhvo`=RLX739yjIQTvmmye`>$oRlv$mfvkLhzbR<|1zfV(DhLp(Yk_aZ}XgH`H>$ A761SM diff --git a/priv/static/adminfe/chunk-d38a.cabdc22e.css b/priv/static/adminfe/chunk-d38a.cabdc22e.css new file mode 100644 index 0000000000000000000000000000000000000000..4a2bf472b1fdbbd2da544df3686ccf35964f5ad1 GIT binary patch literal 3332 zcmd5mHCa9?JDFwRvgF>R%5A}rMV{!(vG#&m6|T1!IEMQnOSr7@k>fR0&5$QJXPE0cY* z?!%;3IcQh9-)q?-VsdX`YYD5wO414no1Gn3*5NkwxQ&GquB2r`g5KxCG!@%XvVrAV zSUiz!b{wk>DJs~WkGbF3*<{i%zNWuhV@0vcNQ~%@#;<-?kd_*Z0kQzo)mJiBpy#B`{RlXKJH&CP!`bMn_KSQ`I$Tm@ylrbE3h3C04DWJ6R+HqC9gb zkIm})+8hNo32PiDyYmQElml02QYb#!N<hGiJqr zz2rap=f^rAty8$d7+jlg9m4;og4kP{my;~p^-+$RS((sJgea`w` ze3{0HglJQjA1^yd=&QcFygv8H)sJ^mrG@K|=x|nWR`q;87aA{YPGS--Kkj4KZBJj& z2isaAFJX&Nbo1lriTx~|x)@nn18}Q!l4`_Nf8q*WT`Ss3gVGQL@6~Y3u z>H+odKpY3qwa0iNL!gh>DIuLJl4Yg%I`+Em0*oF!Y@q{g;@RNRu9@LKLUJZopl^q~ zyqITN&cT@OJ{=s&No^Q8?v^7HLvDkP85!m}xVtbUuMoyXzi9-HXYX)=MLNZ2M|_On YbE12UxY7NElyC8Ia^~N&C%iBI1vz}&N&o-= literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/chunk-e458.f88bafea.css b/priv/static/adminfe/chunk-e458.f88bafea.css new file mode 100644 index 0000000000000000000000000000000000000000..085bdf076634d1c32de700c691be2e9f1edc326f GIT binary patch literal 3156 zcmcIn+j8145d9Usbf%rD7(>!Dm0$WN86huN#g;s>9H0#U-jysF85}YpmK$j?@m)TQ)h%6BuuI3>_dE%vypn6h1Skt8 zr(wl-)Q3=Mp>9LqS(fomuiSD&UAFNGQh79&l@^=42WgHuVNZ-KYe#eUc$0pnxHX(JIe_6o*I!K)Ffg)|^Muaq{mn~cbwW`wS~TIH@H z^n7$0U{QkDU^OE}ddPmhm8L-6;tdZ8e;xMc{GL9mfC?-WVX@s;z@$Ych&V{p) zAyAts@DnK6b$NkNwvkg|^v*qY*CekOEZLJ!ozCumG3~Buj#mflQYgy43bD``aW*&=Ldtopv+HE!O61Vw zhV7#rx>ddnM)ydr5TqQtrN72XR@e%Xpy=fvGRk1^53YYE3+YI@gDH+iuL^p!*-gDG z_!o2SVL;TtQfusqS#&hMc(Sp9zB zv*4zH-iATC!wCEvN|NN;aD06E_tas)5aA+O?w?!fT|Z#4?-SSa`@Y1zr$0oF^&&?+ zdvdKLR7LV|3}NwcdxeMTGjob{Y5DJ(Sb9)jebkGwr&gX0`p@B=>0d=YHlf$KdWh?> b6PhJYvmPA(kHG{0WHuIj@XBDa+41-f3@WKn literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/index.html b/priv/static/adminfe/index.html index 3651c1cf0..a236dd0f7 100644 --- a/priv/static/adminfe/index.html +++ b/priv/static/adminfe/index.html @@ -1 +1 @@ -Admin FE
\ No newline at end of file +Admin FE
\ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.203f69f8.js b/priv/static/adminfe/static/js/app.203f69f8.js new file mode 100644 index 0000000000000000000000000000000000000000..d06fdf71def65f514bd5f24044db9870982f1d86 GIT binary patch literal 187722 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%0AE>uF}n}!WG#3I$qthG6CDXZy415 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%0A9Sc56>yA#9K(iUyI*^PC+jxhxe?dtlz0)qwi z6|iPuYzNRR0SS%M=W=lI3~#~mXM|HS{Z-HY9WY-6AOovt2lnLeX@|d{;4A>Q7jOHG z=9s?%f#BCr=s0gpZyqZS+IV^i3_#_ZWYJ;YL2TjPu#)M~A|ZpfMH=Zc1R6&CiAH2E zY8oqP#Kh6DP9R_stqrHMoSVcJ657#WA1(hm3c+nil>kVoA8*)3@O0?!O?)Xo%&_O0 zOfSVR2|lksieNG!-&~(cXo3XvGE?N`BRjn$YCN05YjWtO=Iz@Ex9$z(T!+ui^gODO z(E2wsMZ=@SmXLOFQgiMZn3AOWe3ZAkn?;5FIXz!JhEX zA3jg^s&5GETc6q~J8(1LS~a!Xx2MMB`^g*KEg5N|()oXbl_hOO?3)N+7oxVu7`0Kt+?g9j@r?P+CV%&3tkR zzHX*=SedO^YjwL99qM=haL`iqMp{1Ose0_W>cadMM7Eim@whth>KVtfxu(3O0|r6* zPqF1qtm<5XiB7fVF0F9&=mvGO7e181f(2!nk3(4&3?qN2j(kz+%XQ{WL*KK*;=B!Z zsIi7U@Zji5T;O7S{RHaWZ|xYBnZ*p#amOtkS>rX9z4QQKn}Mw|O!SU5gLM;m_)2oE z;1!K z&nhiT0KYU?Hm4<1|lzP)&))M+0>%g1m!@bnCg^V@;OfH`U()j6)h^wrUq zxsR-)sM-Fl!Kj>5ZNmPLzH)3NGY$vs=+G&96gCr%+F)K#f>soE+y-9$2cL+4jsrw( zh2Z`xo6m~{aB;V_#bz~sPwe)QO8Ijo--}u`G)5i|2AT~exBKJ})S`5>Z+sh4b-0sI z7RdTdM+ZChgFCzYfD{_!3b3eLtErp`2K;)>v&%W{3ce8j#@tg_5Ctf4Vz|iX3Q9lhzI~a<2s=b-& z-ToF`(+nq(>W}R#9o?V-xj3F!(keks&Nx zK>su1FLvye?SS0J-$JC8$>w%KMG7&=mL(*f^L;Wouw9Z%d*R+!#_eS2w3O-CUnc#ar(DQ$iU~E%+Llz@h6$xi$H);oF>$ zohJ7I$KatHQQwguX!GTcLFp0Nav2|Vggf)FFOAHq(LTh^$f7ly8i?0G>+|lzFO`rw ztU1?_jhgG1UflCJcOLRNQ-4CV(CS+p@6-fM?5H ziI~tFjK#YaizhE1om&<>5mo#=G{F_B`75**o4zj@E2i>t=x*KOhikZs9h-Recpci* zYis5JKU(+V4XT0(<6kSRK=_16rNiV5>VNgakWCGxByiKN(<>Goqlum%3(?eTAP>F3 z!6D|8!od`FUb*?3tZzOz@g#7Y{*A@dSP0+GvCgVS#X0ZiC_^Y?o1rdzSL5W#W?{o# z@EAh@qKFT9j86>m-(^d(+oPx@#&-4S#MJC58KrK@lNh#(u1sqH8Vc0N*b$ij7>KEl~oQv0yl$*ax6% z0Hx|Wq3M(fZ;aw6I>j$Ph*jT}xiuD1P7KIvx&-G$@c1_;n?dP1oiy+L_W3h(LXV;o zz;ss)2W1)}FO20b!VeQ6c8!DL%*&&_`SONF2zzLxm(NAUebAezNaO}`_Bm|qnf4q!+ehb<= zox8=(8_l2NKeXuMszvD^QGrUN;M)L4Pd4_G0R7gO50E6UL7O3UeyYgB3X zCQQy)*l~ICIwRHIW*JIA&{G<*VMs?|+c7Mw&T#f~b0<3$-591d!#vFVHTBKLgI>=D z%g_avGmA%q{=5YA`R%#pdc?Li6DzLLcbEgsxEj-nj_329=7;!k##+>lom$gBjk}-$ zH^Q{pt<0X)9ydgB)y=9XiMjYNQ~`osW@#^dF-p90i9Eu`0|Ifg)0VGr&WJOo2}TIW zX-**b{oY2X=v-Vg<6SMTc`85EkP#;3IUwXC+xL=+By!M3^JJ29o>aChw9a??7zccH zwrk^ntr~yk#>p8A-^;qK0v|zmh82%siWc~aOXi{g zkTN4|YA4J?bYXJk6a}mcGhU3`8V?rVm#He7|E0op!9jJzUjft)K0fT*K4!yd_we2W zvnNL0hXfK}qF-*iy|;2Ts_g?MD?F1V0@k`Qd*ZNdE3^{Ye8&Gu|5;D;%WA3>`n~lN zh3;7*Gq&Tt<7eqR54?k*IUV{tp>;}&0fR#mE}ItTTDO$h=Vf?>N(zH&#wUP)+}-)b%d1i>{~NPiF7WshBJyMP7Z-y9*8UCwqXTV z4<~A)=9YCvTREp;!|&>U+mkhWsNJvi3SJrH9u#s7pXH9g7J)&#D>?6EZ$JR|K+g74}`whb3k+^3dDR@ee>$gCO z;LLw+R6Y>X_J3_s_mo3^7gM9^|5AXdqr@<^BKoj5{J^CCw=nfSOI2Rd_c8UqH7RII z++(OBPb%jm$Dr}ofLMX|1jYUT6#2c6sjc7d&&d#Fka@tVEgAh9{+iq|i;!iy9*lT^ zK~eJf_40Z4qJQ@Pt0G_nAxAJ7xqpk`-q)mh{lM}B<2p~hUBeq2Qg7v{W3lwb=33wF zA)AwnFHiDSCRL^VnNbd6es5oBseP$***`lM?rD)tdu_o=R%i74Hp*BA3vVW8I)mxT z);gMt+@-3vi20`~j!Np41q@1(??cv^`Ddy!=%3M(zQU?d>TN>&p1lN#pP34=9N3@c zmeNW@DIhjNjq1;KBM8ep&{m^tIH zF*78_3@;w>NFCaD8Xe=X$up$y;X5YCch-dev>L3mcA+9lEYkgF;e|pA_EV6Yg+O6I z^vbeBI#(GIMKCSCqy)N~SjRdbUbO5;zIM65*3yoj66T7tw!wj_Y@GhH04)OmjR1iB z=O(M~97bDQ6lO5rpr~iI@qAb&0DXir;4idhLj@Dp&up~jQ+VNG3WVp&Y5yEJoMTKG zS%LNl9G^~l0|$X!kwGGG0(l&MhFuW-gRmt7sz`Fnmf}u)-=@7hvyQdF(83S*FD2Dm zwt#Kqp!&P2E82zA2tbgdK&&&26})XD6D>hv`6x>~uxX7`V*&d;s@m@Y&sfF)vM+ir4l~>Ma#Y$yx-P_|g<}RFPo=qn_m;0AxyH`vpnb)T_@iw1Pm82 zXp^i^N%MytmPr;rv#{rFydf9cmIf)`ef8I#LKu>&_Ohq_J*dtwQfKX(O~OWAVXTbY z*|&Y*{OeZ_U;QeO`_9*hqkM%LA;=nfK$0RH?03n38?t2YWDF>U`a2Xha|!i=!`}La zj?ZrJFyxff<06*_R0Yg`KO>wJTd z{2%6AOR6v76G-yM-o6h2a!sx&SZyzN!S;_KPA`pLhkNG0StVbLad79I4dqA@rRTsJ zT?Yb_H0;Eid0J-jV;jt3H7LL#`N9ESIoLN2rjy!0`{j)lFdm9)BZw~wqJhKI4Me)V zJt?4Xhl`xO0}aAvkbj}^T-waMU=0GSiy4g;IKyRp#zdKdo_i>_E6y9ShVmDJ43g<7 zrlJY$a|#8@rZ9rg`VLL#%$T)m!-G`BU&cgKgwYJ_iyi;MP&ME_S|XHgZbNvRG(1j_ zP!zx8azY|f$it@yBB!M>D4q`N4<6rKoQcaN&N8|a5RBy|#9)8xntn7``>jb`Pav@z ztWQP8UTbFkJ|KM5ua`~vr^My!bQqGg8peoG!4LOb-f^iCI8c0#OO-=po{BBnVn(Xx z$6ytHvBu>ympa53J4`M2x%8rD_N^+zhkkc>s(yn>wZXSCsf;Y4WbC<|D12+u`Eq0d z%x+GVgDcT&t7k53>QXn#0LzK4#6`}kR%ly>1dM5xM4%XfQkpQ32xBgih%QAUfnu`D zpn6z*fvd;sg6<*fWFE*-PB5VwTO-o9T3%s&|B0|%-PxG}UNeiUBAScT@? zaFxjTbEmC>U|HYW*`iM2H||*nmbKr#eFJmeD2-X8CWNk-+3n?YMn&LWIy6N9!^;H# zVY6MAFL*^nln;Xa?i`Y9Y@p?!;tD1tZOQ-fiN5t`LAa?T7KHt2B1jI7;XyI7|=V-$zD z0d(?i3g-VS_DHUtOI+kAD$s9XLV7=cMeomo@=`0jHAa%H@PO6tKrBewU+du7fB-$5 zwb`MtF)^hojKjOC0FenRTIt6ydQK08VT2~BUvPH&>|X}M8x&(@jeY}$8L>sMWzO`K zBB{)@njJ%dn=D`F%YLXMTlMRUfFf}(w+%{~ z5&EV`eUq&KW=!Yg?13wPib|~Z<1$8rgiz76DRGZRwN})Wq@}EJAn|JtyVbx59nopd zt`+VZgrwL0ypjxdDgeoil947xnNmph%gkJtf2jSHy535!*EJU!193Dl*iat0>jd8cE)6vnaIjL72aGiWka&w$_-&#n#0XvAv5a5(>6rU?>6V zA|p19QWn=#IdCdaP839AOdsS7Bm9XCtZ&(Sv}V8cfZqYHVl!!ZW*0G1c7e>&vj#QE zY@yz*+V22seN`|gH~31I+>YRN^;YIG2S}h`DgU#(-GT_a=fdEr>0YycnNwm(jt@m? z=!xbYdRCETb(Ir;fs3YdXFQsF_(n?+eUmrd`91yJ{hc9SR<87TfQ*Dy!T!;t^t8}% zAex6bom>JZ{JCG9$)3^HhbW8%FD}c~+>6Wa+>6U^sL6O9_r}zTi<~MragqOmMBo*! zG)Mc0@24(YF3zSdT(0!dJT4GGC`Xf#G{llGSMY(%xXYXhpXJai=<19>8MHdFHuw;x zH0s29qm%icnp8jrgF_4&1@KwMP_$N5?=!=+QSfdi$px;^G41l1jlq8!xiis=K>7Z& z@Insog1imW=Ut|6@A8v&1G3@o+zKwd zIrqL2Y_#Zo<>jgORj;d5zmXyrNdNq&j<%Y&hZxKmbx~bfPWy1rZD0Q#@x2-cx;&c~3!D?mQjH)4Je1 z!cd$njSr6YAM4*aG;FGVHl==QcZ=!=eK^%W043KyP+G2lXnLxE5O)OyB-26A z2pUMnYOaC+)Kmps^4U}c(UZO^=n~@qy%ey9gvnHpNE;e9($)~ece)Mdzomp=e05_o zn+9p5(9QCn)*N%pl#qJKw2&B-Hf+>1N9RUh2z`cXAByubJ*4S}zG*LGLjP&RgOzv@ zkmo;boc@C8A#cHcG7}mz5Cl%Qm(?FF2eH8Wxh4|+G8rIqG=E7LFX$o$Kix>=#Y`84 zdD}qMOEywjfc!S#si_QKQbGY9`kCt^8LCSal0MEF)l1oLXn>yu5nlLdbJob1j)6s# zxlAQ-f2xwig>yOyaOOJ6SYXMPpxVxr5}hv5N&?1IEeTz@S^}<_S^}!SafXeR40Q%(Or?(PYaxpIIMX`vuc6S56v4uAF>CCOfb; zKDWCkfBAxXQiGX#(n2iPPpoqn^pjo=`pF)Da(7Sd=L%~1?j8i60Rhm!pe9A2RT$gw z(2Wm<_3zY5nQEwAX{h?^qJ}bd-~LRTi>P?DiqfL}-%(Kjl4%x{i-~6`iA+WD#(zme zi57$43zFK#;gbFh1tl5rUr|tw=miDk0|F!Sfi4<#rk{kcse;mazM!CJc&eb#x|xE~ zOi;{5T1EX4q@YPyDX#Yvlm@a?K?#wWQYv~&!u^6;D*P;JDn5+tQ;hou@z7EZpLDrhW;oLpn6p=>!t4^xfhd}JDkcQRqE zNi5e`8h5bnmTD|*7f;ty8$Ur?9*^>_#$rV@)mS@A;!!k>pt0DUTv$=D`@gWF66fbj zDy>R#l~q|9kg{B51y(nC`VfEFJ@|1;SVL8@JMetHvaVgD+V#Ne7e2Zl^U$o@Q|6}|4J!U*vS&uc^hhqK z(o?4*KN_<1iZF!l+M_ZUg51uU&O~^u1Pa~@hWxMV4YTe-op;I3QCgl9N z#7e5rLyN4@dkOP&=`J$5(Xr;yk&276m}XmmQ2?TvMM~&kR+dMVn2Pc|y-8-bj`Y1v z^HgPFz7pD?v3M<+BYo)Ov?5eQ{xx-jbth#qY()9N#Sj{YNr0@Y4F~8XekNc~qsFGq zVY-8*p?lA(VanbFZ*0V4;^z2aFy(vV6E&I8T@yt8A8r{Ehn)FyGL zBAbzjCSMBBdtD7Z4nCmkt+)gw^CN>^|9$9v{7_*A;`9hz?agYs%%b`43Sd%@4V z`g!*L`1!l+x%vpF$LxNHDBof7sVi=gN;ka2b&Jt+GUcQMfy7Sc%?P#P_om0+PJygk ze%_zN+x*CRT&h&9Y_0}uWnv#vQpwI=_0;ibi*09pxQw^8ew$Xatp`~T{>2*Jk2By z`OKNxvD9r>J3CIf(e`TaJrF?wpw{Aoh~&EUz@z~ZThtok4tsyA!1=jzY7xht+87m% zj{P8c%D~9LxhONyNOv&@!2-U+!A`c>cZ;T!M(eWA+l;=UP=wMK&oaDaC^-s7VO)N; zY(}z!aJP6!D=47qiWHO`Lk-bRTnRX_vPB_S`9(oW3<6E=t;R;hv9YB}FSOC@IdS*A z;Lu6=Qg`b*A{^X=gC^fnW1l%66(itWOz>yN)kbaOk~t<{H?3180_^W^`qT=ipf)~Y zJ~TL3CQ2T0Q#x&5)`x8>Lxr|Z556&{UC?2K1Pd8tvp(R5@kLgFcpBR@-FknN)dZy+vvBM zu{QZ*#Ri32VBH9riK8iAKU|KP_k;}vVKu6^Y%`@PVpe`7t0$4{bRyuU#^ z>ag&vP1V&C4$@kDhAXhq>OR|SEAhl?b?n9Wr?$X%C=Fs_*l2JVm;6j_huZo2h3;Og zU4ToHa@HO3trCABYl@m0&CB#*{VjiinfSkH6e4OWk(~o#_4_vV7LSzT#Nm;%6l5C( zJ;XtAJd6lM_pf9$>clUrAI@At19 zF*3U;HqdxKdPr%SO;Y3x9~zOO?IC3vM4u)gp@AlVZob4SR}x>_H+Ec3`Cg}NSK=f$ z_c{-|T&a{Zv7LMWnUOsHDgQz~-?jF60cf%%QyR+Q4AlV6eyzRs+Uvdd@mKpo$2jP) zYr<18Vbwb16aIzcLqBglb}T=-pgd$+>t1g@J~`kh1C)nMP@_%D`TIogSWS#_NLbXg zt=wa#^7&4fB4!z&CvULt?3j(tyG_M9u6Jw<$#Yho{_zUX7Gmb>CzyBAiA3Jp{?^CZ zg~uOm9A4b1|LEY-XNk3=DVpB#=3d{>z^Z=bvFtbNtT{e0uqyVh>@Q;WKweAt(p`p?|ZgVub$Lo_g~(e9-d%MpYtN)z2HeqSC7NL?bfjEM+h~3ToSBTAInDkP!%t4H?8-dY;qi*B6A~ebDurPcyvLw zHfqIZ;VSYeeK4NgAmy{Z9=ypv=?0rURJrAvt=w00?Pqw*iTZ=o=`I}3>T0>i8<|cf$ z>->-%k#Er7{_w#*NArLnHUNHNn)|iwCcP;bNFJhA#OrVjfx42_JX9>vP(;$=HD2B& zXn6@Qqu=~7b*}ze4Mg#3&(C)DJ_{@Fg!4-kXMx=t>sJEG3NHEh?DvjK_A=J5MN1~- zk6D=QjYlWFX2dFir8doj|bW?VD z`q`CDeyQHohyI49WGaS(2DYeJi2CTEZ~yo+Dp9-g;|5RmFMRmx2fFPS++YU@b^JkE zY^zgYK<}%Ugc8u8ZzmoE&{cSNnRCk^Z_gc(#=pK*sd;MS)ZTCupV~S#oA>6!{^n=1 z&ECO5xmKy~wYqzq@@F%u%qEA^emvWmjOX!qeroIPsp0;?WIB&-9ZZMw_}0_?2a{2> zH=XQ9_fE}@9+n>TK98rR>EU=j+>bXOOec?L{GM68d#8SIZyegstbM+vKPinSz1?`a zxzvNzFF!aOj&`k|quw;~Zlm+jIDTA!X#M%UaRfv|>Tc=vVrPi=NX%)H@PQ1#w07__g{@%TNr;5#Z5Ixx+jb~Oi zn9mQkHa8zXeq4TBFHfcqH*1wjWfKglWi;HiS}E8(d;i=)Z$5~;;CiRkEmzw0sMcy`GER8JM~snZ&k|8cE8jFgi^g+X*EjK zO1ax;@T6L=)3DsCmKdm_zpZwu>UHYnR)x}Xt5l=Qs=f_MjZV2!s~&ZluJtkQ;t1Ww1HYN~pxCFtvbEiz%RL9cYFSyna4TD8V< zfeKMtojw~Co`Yy+>OblYR;(kc0fTL=8T~V8v&ITFSYe>-RJ+fvw;GLdH|kVa&8m^H zuqx^SKXu_Osx#ker&Md$ur?+71MkobDD1G@D(kQq{9-X06&9_oS=Cq!=%m_cF)KPQ zv9Q%9^JWP_GyAl{VD@9ca@5PUR={fqyy|D4sW+g!h?dPJl+T1gqR65Hjyk}{(stPW z{B0Qp2$k%WR=XNOW;NU94G_jSEmg0A`i3E!<$?t?plnvZ23>#)P}359I}X?`%r6qZ z=ybvl*1tk|#b~cuVx4JNp47y_HtW7UYZ2}Zi`C|h@JMKCJD5DbE-8+cX=iiCVb2drQVB+^2^=&{Ap375`F zX`t^SvUW54FocUE(WlrDz-SA@wgIJ<&4+U_=%|jyYXI6wY&g@;d`te z#FK+jrU5Ky2v+z?C4mhJZ+y9maAGB3NtXz{FDVEP_>zuLtsp%+&8Q2vZ#Md!auphb zfx`kIg{pWl)B|e?zhLT&0IipskV(1Hg?*O0(hh3$0?oA$*X*Wtr_o23Fakv1XoyZ> zQ7|pOsTz!eZQ1SUSDn2n)db-Qy|UZH;;OBkjyO4c11<^65Pw9rR8d)4QnT!9Uro?v z=nV=64rEccSwcS6YHV7%hnG^Ftqj&pHW2qn(smUd4i0Nf8GO-xNNUs@HF0tAM^=|!5XIuv$S$uFek9%aQ%$*5X@(!6 z3ag@SY(?ot9F5+SaqWi$Lb=0?#IhR==`!6K?39H=S(O+;`||Hi7J`MMhNKRt?MScc zG8L7FuWBv|wIYNl4Wht*gjn>&yD}uTouM`%qk~TyNJvDH}uD6lA9zP!oOC z;otrP+G%&hXZ70RU2Y8jb?XpmLWCXiyoGBpKT&2*J^*GUb1&eT}nA06be zktIrU-82=tP=#vPK0#J&|EIV&=L8kZ&q@i=AwMG=w|zfy>t%+l@6pS^!>Hh(&br8I<3f10;Wo1)uV=MhF~3-tvSCRG-d6S8jA=STxt zotQ+%^}6WX?AkW00^6&Nl8?CQh>fT*#9k_HA+C;!~jvNRtY%N zJB^y9E+aQ!PKd2e`?e<8>9!uJzReN^OS2TG&@7QbHqDX&+$#ArOU$KSYn6POr4CZ7 z%ZAi6Rn+LVN;XZkLL^+PFm%1#uCyN+Ag~9fiO6G`W~_8TC$j`nz~Vy!f?2A^PD9E) zlPob6>|>u~iAlCVx6jgx&|#>weBP9 zS+vt~<0X_dYxAs89qP(DG^rZ~L&i0lx9jNo@b?xHxi-&0Y;-!lj>t*W@wv}MRp9(YCDFz2nYW0*=b}}rqRRNtGVY|WI9Mg-(rQ+3!B zr=h@`1?+f_cqnW#VYGnN07*c2fYN4z2@3p}V{ANjVORwH&@7>Ol!8j@c8f)q4I)Br zL39XH|B$iCqflH2DWET@Qb*~4090k}9Wg2E*TxRTDWx39&6wfyIhvQ+XKbw`}C-Z5qKQA4O4j&H3o4do=eAAtqxK@vEucpBVIvnrDPpJIC z2h(`3R6)Vy#!|dBL1dLJlkA2`5(CmUO?+ z`=Ya8aVkq*gN9tKs8ewHT6a{!b&hbxgMjshrGv87M)N>E;%}0+B=30zGX$Al!BLDT zYxb>D&8nl5z~fb2&H!Al*btR!Yh*eC7Ecu?JvL%hY7=Tsw}((bGxWbQ#N~f)VE0yd zhIM6s>^V=+(`v1ejAndtw3g?!Bbcyx0au_J6zF$YN~kC(NHTt~*97ztT4Jl#XI9wc z<+j|+s8wdLVs!smTdaX;T-WUa9b;BTd4>9r_%}P0o{Mqlb2d<>!ALP==8g zq+IXxF@{U1q_P)l6``@xl~q?oA2ndWcMbO`y@AFG7(}tCb~Fj;BKpE|3?vPo?E^_u zW;lu_1g8m=B>a6lc?1QMwkOqv(^e!n@2vBEvJmuHmj$J69T}1wdIt(U1^M@ z0phu+;cI1TG9rPa#h+SLfXGKwtBwRM%g2D4J36QS_|h>ad6}5Gy6B)fc3N^95f}p3 z6-7$W%u$$_?+8yP4;w9zECe%7mEcwdkB@z+HmXn!-YTizT`h$#8=jc3Y;`;|S}TQe z>fQE;Uin#R2_e>_3J6=+Z1vUV+7gXp)q+4G1(6e@d14wZqede}pAZz+z{_K_h*1DB z@;6YU+zGWhW{G_5QCD%PBSt6wqcudC#jo6I)r2ELX#O|FlKBAYoth()S+@-3j&U%> z5`l1$994`U!HU*JYfZVW9Xh5k;nOnWZ6qY#zy&Q=n6_e9inS3TG=U-~qG*VInkci{ z;cQ36+sxUb5fn!hQTtcaU+qTCwqf{@1FmIQ(R73%B6lOhqdBUGj(}ju0DZq@^AZ$L z9e*JKEgAb4C?ESu_Qi_`k7O z$od*oTa%fNL(q9NHYPF0sxe8iE3sIunggT|2%!##NW8xhc)z$07B&+Vr)$Z;73nf{ zLa-)NAVaF7eL$l3xL&bFD+E6Xq;xygI}mBTe#M{PQGtwI zL=9f0W%%S&PT;c*umE2t2OmsEo1Wc^w+YD&!M8g+Q4EG�wg@4cJlIP^w{HeE{6m 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

5!9@c~d80t|>_5`<$3ejw4AmSTnMqu#` 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

jD6s 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ℜM&joT@kCQKrZGf-gswXcJZaSu{nA0(9RRv$U_3 zTVr7aS~Z)tXJFVgFGEC@E2iHd?9ZgR%r-lMN6=qK*bN9{sv;QnTFBh|L?fIEhb0*% zXhI(IwjGrcjfjn9{%2i32b|hgY#VITEJJc9>#e`hlKY%DJNG&zJ36{?mlm2{dz$CA z=s8e+@!>b=RC4^WInqf02j6lES28jar2XK)IaRDkOPS91W~a@A$}j3)HN7u?F}pGH zO3s>X@1wcJU#3Jf8#B7Bg}XcaWt1wGtT-4snST8+jUzN9Ka%jfjj;aiTeG7u6?f`{ zpmuzM28}!501=#K>v@^#S_uhYeDLmE?(kADTV5{)sbUh-=<$tP)tXkcX|em2_yOaI z4hRtvdCSD)&3jwp@x#e(%kM@r{=QAqI)sbQT&h@D;6F;O9|`3|2?*aPgZui7W#m zoF7^ZBwqVT!I+I*5vlx}B1f4!`X`zC3aDe)$K4nZ7zY*f!t-3C)r`l1;5}dd~?lTK6;8rext1$4E@qRQ$bi6#@0 zbORIp*ghHZiLsQXvJpPHTi)jY6jQ!!E}5epk5wPV53HW^FRsEDcl2bR+b3~ew?=jnFOpMBJjn23 zjM`+p-ONYOOXThrKFTieII+v#xYwzsx*ycvY0q5%zqDCmnc0`1&ccLn5-UX++FwE25|JSTqy=bU(Fv$MY2jE$xd)K`V0{^RagbS zB%H>9l2!EJimsnxrDI4>DtVc2TjBlRw)#6&8V0ZZVk;LlnLILJXu^(FL@o2=+mmnA zT9{!UI)~_w`hKr{#b5NyED07-N2h!?zbQgifryugDEBZ-A$O+qezdBKCy(&6C3BXi zF1ld&F64u=a#cpD0lFB*x6-)ih9i7>euNK~euNL*tG4xRY-sL+edw=kcPv3vDU~2g z`m(Qj+fWC1Jq`3If%nAVjNdU+L+&}Q~w=Sau zS4B4SZ;XG=CCO{SaUgxuh<5Ba_UMQ0*d3d{h2Pk>L~)tFkhIv!-f=NNjcl=3SZb^hnM6ZRi5&!Tx?#Sn#fP{+CxK7F z?~trt3mAJfbauIljMfPP$;N8g(IRHhQ;8qS#?!=XSDNqGFd?{BIT;<2NuEDyOQ8;MpHo)(% z6NA@ifVq>R9mvt)>eO6-Znmls_+NvrX9p8_?xxF$3#cIA9L5A>{v*sHW`c`F2y_+{ z;)jygwi3SaTP1SvY#OSF8o*3jTo_=_4Pq{uY-N)d zR+{I>_cLsS^tAbT0XYhuwL4DK#Tyv#RNS>#Svx>_QM|lI`X7zg)?8nN(%H zV=uTnv>D}o9wUdB$CWJ#8J|w{ZTB*b0fXo2|}m4}?&O5C*= zgjGU@pq@8{%x6MU1?{D1#t*{#9Z`dQ_+b>R+Y&qan@rdsZ`Le6=$=K9giZEuPTdap zA&cVI0KesIUI|;qi^Lrc_^S+1 z#6JVypi5+ih;&SPRDy0T^H)G|2~rAoXZ)2#`pDn89H~2%XW(^EzX0;=4Iqz^t9>w-Q?=6>L#tc z(1xN+)!~qib1=)XqMMmz;b88EyRsexX4xt8nh75Pa}T5UHCnDXbUDt*`aTYBI9HA2 zx4a4F=VdTY1DGGe1n>EqgIVGDnxJm}HJG2VRA{7TPN-yW9eu?hi*D;&j?dw}7J3$| z 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 delta 36 pcmaEF``&hf4U3^^TH;2B*>WNvhMuvBfw_UXv7ug8v0iRs0RZTs3x5Cr diff --git a/priv/static/adminfe/static/js/chunk-15fa.34070731.js.map b/priv/static/adminfe/static/js/chunk-0558.75954137.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-15fa.34070731.js.map rename to priv/static/adminfe/static/js/chunk-0558.75954137.js.map index d3830be7c7d904132753c3527505ebb70d324058..e9e2affb61fe6b9c7c3bab9917684ed7e47935f3 100644 GIT binary patch delta 28 jcmbQ&!8osjal>8?UISB83q5mFOH&g=WAn|YI6|xegUtwz delta 28 jcmbQ&!8osjal>8?UPIHgL_K2@19Jm&W5dm-I6|xeh_49Q diff --git a/priv/static/adminfe/static/js/chunk-0778.b17650df.js b/priv/static/adminfe/static/js/chunk-0778.b17650df.js new file mode 100644 index 0000000000000000000000000000000000000000..1a174cc1ef5d9abe1b66bbae42aefe917f05e8c5 GIT binary patch literal 9756 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 literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-876c.e4ceccca.js b/priv/static/adminfe/static/js/chunk-0961.ef33e81b.js similarity index 97% rename from priv/static/adminfe/static/js/chunk-876c.e4ceccca.js rename to priv/static/adminfe/static/js/chunk-0961.ef33e81b.js index 841ceb9dc9ef337eab98d10ec3de3a2333475895..e090bb93ca1c12523e6a62c72485fe31ec8dc23b 100644 GIT binary patch delta 36 pcmeyN{zH9&4U2)Lnc+rka%ysNa-v>Vv0iRs0RZiN3~K-Y diff --git a/priv/static/adminfe/static/js/chunk-876c.e4ceccca.js.map b/priv/static/adminfe/static/js/chunk-0961.ef33e81b.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-876c.e4ceccca.js.map rename to priv/static/adminfe/static/js/chunk-0961.ef33e81b.js.map index 88976a4fe8716bf4460e6aa18912992041a7bd0a..97c6a4b5437165577654160d35e8437fcc055679 100644 GIT binary patch delta 28 kcmZ25i*dm$#tm^&yatwLhI*-K#>S}@hDn>VrM4OY0EhVrDgXcg delta 28 kcmZ25i*dm$#tm^&ycXtW$$F_K$*IZ7$%&h@rM4OY0FR#u>;M1& diff --git a/priv/static/adminfe/static/js/chunk-0d8f.6d50ff86.js b/priv/static/adminfe/static/js/chunk-0d8f.6d50ff86.js deleted file mode 100644 index 4b0945f5729d8c5a6c9b141cf3314925f2e7af7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33538 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 diff --git a/priv/static/adminfe/static/js/chunk-0d8f.6d50ff86.js.map b/priv/static/adminfe/static/js/chunk-0d8f.6d50ff86.js.map deleted file mode 100644 index da24cbef514e237fb624cf8b76413f22685aecec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116201 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 diff --git a/priv/static/adminfe/static/js/chunk-136a.c4719e3e.js b/priv/static/adminfe/static/js/chunk-136a.c4719e3e.js deleted file mode 100644 index 0c2f1a52e1a3a0bd0948aa0e09b76505a908fd99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19553 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 diff --git a/priv/static/adminfe/static/js/chunk-136a.c4719e3e.js.map b/priv/static/adminfe/static/js/chunk-136a.c4719e3e.js.map deleted file mode 100644 index 4b137fd49482a57fa3eafcdd8d7ffdc1e45f6d5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69090 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 diff --git a/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js b/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js new file mode 100644 index 0000000000000000000000000000000000000000..903f553b00ab80354c8f06b642ed99455ddf6f16 GIT binary patch literal 30624 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 literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js.map b/priv/static/adminfe/static/js/chunk-22d2.a0cf7976.js.map new file mode 100644 index 0000000000000000000000000000000000000000..68735ed263baf97d446ac0485dd949a24a163d9a GIT binary patch literal 103450 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 K+qrh_^ZyUfCGxZY literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-2b9c.cf321c74.js b/priv/static/adminfe/static/js/chunk-2b9c.cf321c74.js deleted file mode 100644 index f06da02689e1b032bdc69066f1b2b402f65f48cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28194 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 a`0#bl{1@F^|8#R>-GB4|WmRy_j{grC5!n_1 diff --git a/priv/static/adminfe/static/js/chunk-2b9c.cf321c74.js.map b/priv/static/adminfe/static/js/chunk-2b9c.cf321c74.js.map deleted file mode 100644 index 1ec750dd1ae7f39f7a2465b71d64335349c8f690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95810 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 G@BcqRY}NJv diff --git a/priv/static/adminfe/static/js/chunk-3384.458ffaf1.js b/priv/static/adminfe/static/js/chunk-3384.458ffaf1.js new file mode 100644 index 0000000000000000000000000000000000000000..eb2b55d374b9df1ae2fa0120d4ec50d57db5ad70 GIT binary patch literal 23953 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 e;=O6eFjD;{_5tK+gP literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-3384.458ffaf1.js.map b/priv/static/adminfe/static/js/chunk-3384.458ffaf1.js.map new file mode 100644 index 0000000000000000000000000000000000000000..0bb577aab36f0734561caf482991fa82768972a3 GIT binary patch literal 85906 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 literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-4011.67fb1692.js.map b/priv/static/adminfe/static/js/chunk-4011.67fb1692.js.map new file mode 100644 index 0000000000000000000000000000000000000000..6df398cbc049afdc07b00eeb8831a50aed160b1e GIT binary patch literal 397967 zcmeFa3s)OQwg&oFa=mg-CKnvU8+_I*RwD$)Heee&giOw2HBuurNNS;$c+Hvre!p+; z>PNL&Qa8vBIUzGf{iw&TUAy+Xs{j4!#_NZE(0%o0dHz)x4EuF2eD&sEuWr5bo?E|q zv#_x6%R<<%FWmUvZMYD6gMr^|h70we(+j#@cMvZ4-QI9eP3{leupSJ;eLnu>X6S9z z*H-JV=F2pB;+=mShApYRyx}dEt6g<_gL=!A+Lfivl6_}~bL_Rf`ani=;tyJ%y~eQa zH9olKUOSX7-1_EHIRKsEpas2?ssqeftSMk`O4a6InciL z+JW0p#4pzyNIvR3_W!@H9{-IbM+Ko8vW@R!T5 z9H3eB<<02DT7A`SwH(vTY13}5EEoPB4Q?$p>LpiY7MHb#k2z_3@4frmpx;QA$i`}x zahF5rxQ3sG)$iNt)~35za#3aRTkQv3AUMJ6MZK|MA7b9PH*arf=o+H#jSpD6W4l)%mUg=deq9OkkO+HIA^-M4LR zt8uZCkp`s!92L!KQIP3Pd7MGSXL{k=zqM&^3w-W}qvbd4aw966V zNQ+M!^|x+r>wKk=VOiyIXsPjQYs(p-UlxJs=AMeZZ`IaT{bGIXX~2Ds6x@XPmNqLH z#!wD-qfO2l#96nuwX}IrM5~|RP{^}vR~lYsc1j|0)LMSx$iG8_TXpZL`ruS=#`*Ha zlMp+tgQsEn&ux9{{JbpwW$CMVy9(6Wqn}K&NmaYnH1_@UdRyx&WnDkV>KGKWe0kH& zXpfTznyOoFq_e2FwQ{k(UaniGKJejayZ<;mm+@}8$)q{>^BhF8+Qgj*r& zx?J2`$~dzoPxojOB?mDA!c*&St=7E^#ZFsfiF-vz;KFN^#es1OvU+LwXH<7(lQE_W=b2Vc=O`GGy`+Q#UGOqB+BaLg88|PE2Z7tQklDhsb z{Xc-^b-3RR2X43S3HSBf#S9OfJjQh8$9Mbqnp@{ft0m>l zyWsrO&>NcZuB~R4`Q-7YE0=?MHZ`|4Hdfqn9e)U#O|wp2ceRw>oK$^mmyfNtwY++s zQ3IyQm{eSEWusBb@=B_fgZJt65Yb=DEV!xTw4;TatLvEsFqwkwU}MSgT3tV-?$-In zMoAswz#F&?cc94#>lZ7fC^=oZEZj-AkFU8^Z@49Gql3@8!jhNPS4xQ;Q?Def+S#Kj zZEY+qmy|h2Fnu%xzkYs^sXLi`rSq)2aoReK9gI;>esQ&&Ws_~7+=ype zduy?BQF6VevPRaI&ND)5@+2o!OO82CRC#PY@Z+-MOy~JjR!SK+N!4=jKE2-7(#3K~ zJvg07wz`tlx+YI(s&2WF&Z6Sh`o%^O8JlFoEZ3K((`#J3z=+C}O}X#WQfsTSxmr>q z%6L{*md-Qbx@jydt=(@et*w>h05Q|u+VECOb{$E-jnXNBX@hv{VsRs*Crlf&pUJ_D z`KUO9)kU@JW+d{oM$^jwR%3m$q$-f;;al$7?BlrJ(sIUppEjN>lCsGsFw3$YfwE1G z%MaRGz1YZT4AYuUIk&gG^G3u#K(h~&c}2HngqdKC2P%3BaI}&v*j(; zy;uJ;|ElYDG;#Z^8#KJLPS6;(z3{B#cm1<^7@m1|gT7lIob}qnrr$kl_~GD;nZ92C z>@u|Lu()|8K(avJyEt21JX^F&!gU>$Z2RZtGCT_h_igWE5Dq@%chJMDR41&O?P$sF zD0CB;lAcn4E!*WYfW@t+o(DbVUWaGtOrSHq=fA;y&(mQT$SS}Aq2Kr9X_s$a zW-Jt}8=|x5A!o*ncJ)ms>t#wxO^FH6yiCdS;cJsJC0^#~`OK3Y4S$)L=QA^zw6m9~ zc|KF4uB4Y4c|J3eZ1sDYmFF`nl2Gz8An7Q&YAJ1n#68FD&xn8E` z`Am%_j=apsGnx@=3*O7jJfoS3la5|y<@wA?92P}(%eR~t9y0;YJ_0VXQRH=R$nag8 zXU5<+G>7Q0gteDJ9|W)4a$E@RJf44o-@2Y?gR2XZuZ_#5q%z~81r-KAzDbG2JGgNA zeV5QSybBjh4_5|@$<%*Ymaohfb;P>pNgLh{v{A0cEq2*fJ>);R}K4nhKS?IMnd+uP+ zkMQ_9^xVF5fCHY;OAAAN#?Bl?>9^O&HC#->tWY4Fop%aK{U;1_5Unsow)a==ONm@NRqrL2=t?d=75E z1R1dKM(3gtO%cv?z|l*1J_xFa0S-GnfkgT|OXv%)eXhNx*Y&t0_IGg8z+q58y$wA& z#Vfoq^PzNFgiIC564z&jzzr4zo{p<515tjIz^MJMhpp&6uRpj?At8|UciaQT zHBygFONO`!(QV)DeHDstq@H5HI4ldV-8yMBgSUMqt(>K4pA+lXt8IjPQT&X|ve$O& zUMpxLQjNP1%K<+=W)MGhzh4(pt+)O96&@hm&A&z~!lh!F(~BFo-41SF>*~R69yEBI zCGvEZ$OPi{!-L>l7mgo(VUHv*VfiP1LuM8S+~5=_jw~D^yFHWuH16~{E-i`!^DxEH z(3@eO1o)=ocQhjaHwvpMqtJHbxI4VV>>a8s!xfI4z@syjUq9YNYdi#@dW|nZmf4`j z0lJA6tW|9p4GBsT(6rBx^BfEZ`#Z8)tV%zkl9q}HM3=IuVwSp(6p@7Enf6DqoPL3J zM=)$zAro+HpFm=fqx~wU6F_`-A06Z|p$}jRtAYqIc@|tjkknFnN0p1V*KNv*41@Yr z$O9Q#NJ(M2pwAy&OHq$_0Dk0ku%sKNfipBn(SL|VEb^=y%WCbJrz(==$i(jk{bM7s zqWe)+8TB@bed`U{%%VSWy-z|5kK#jR5E}kMcfwyC=4ZFz2hwZ&2%^}25b<=BFe5jT z3=fj-tqDa2k|?`%aNTp9B#Dwg{z!GhyMr_d<;=-+WxUA_EY{Wqm@fr8gwXH|og8kCpcSgWa{;D zFhGVE)OGVFtoMiKNoQ}c#hZE{5Pb%7uI(catRLmsu_ZN$vpui3iW-S&1wzb4U&()yz*6q$DI zpy7tCl*po~D5t#OIX9lI#^VVUu6<^{@+}28 z*d@4k2SycmzXy_l@u~_EtP-lU80wXmR*emRRLNj^R+*$4eBbK?Hz~6a`i=d-4ez`4 zFTtLg9YH@e+CHpOF-EMX1Obqok<)r)J+jD~xS&!lZ@9->);iV`d2mu%Ocjg(d#8Yl(pLd z8#!Zfz>IC^(kK6j)^E%y0CyZ)(S{&iN7i(7uPA0iLZq+r)Z3{4A!eBN4#|wun3~j} z18FOM2)_$Vzx{IXL4b=6J3cdzOjt5HaMbeXaB-CHR9k+#0Um(I2`8#259JasnF5JL zfh#jGB^vJzTprK$P8KBwfl>|lml|nmBIUxe#$N-eH3Mp29Wy@{C3Km-ZhIF*xhapU zWYM3c(#R(a8L#fnypRGWa(Su8D|Kg>BEsJGK56O zd;XY4g6{F~9R4XhJxg7ufVD=QdX5_D(OKTN2?M0EfU5j4Aha>Bc*36uD8607vp_D) zQz!$JQBKm6NT$5UrbenLWlan&TDD)|LHsgIIou|X!+5e#8DN^5q-XOW+iOxO)uT!J zoY0+dTbkytg2as(Uz>NPEvsMi%pPWq9?=P1f?u^FhOe5L)IcNhYjqI4NsTGmhBKiD z+5*Di^ui1PzBQ5~f6NoG^-G$!@@t+&-dl4^&aEy>xiC+4k?wMZMwjMI1f4aC=plPg zB)e`%m@o|W9-D@>wAHLWvKwWrd_t4;pdWt3{sO6_m!^Gss8g569-J3AKnVr;Cb~_R z@S9zCFodBHm5CpiQgB9B-FnOWGN7DJ-I@1<)fx~V2xKuYk2Z=;7?Rt7OX*8+WjJ?q zWBRzjspM#qKjul~gEzMwx9eX(^+BQN(!4PYfEEZ|rtZx95JTe@jz+}1P-^5^RCWOO zTt^y$-XoXh4X}KShPX8Z3^cwmZ=>;BXo?=9LW-QCtzeT-Wr7{GyPmIlGMb14K=RP^ z9h|#eInaWTB{$}+@sydnsB;U>=%Ed#?m3$PCDlZP0;HB)nLfO`@E-aI51qif)SY>+ zuguN$Pz_r7HP5tX3q*Zn1E?|d2>^=La2O2y3-fsZB53rX=~ZJo=BDf2ibcEQ)45pV zJJij2YRZSVK_Jl_y)aKHXQR6DwRxw|TZ7a`nL$Fc)}!Gk3{;{}(6&qvDyk9n6gOe_ z7C+ARs6niW{b>=?LEo>p+Xd(fhXURz7T$@>GE-QqaLaLi5eHjZQ+!~(B>k$ISu{uO${`LONwDId^W za&O82=l0Be-bKmOq{tTDNz-Cntz264?$YfV8ILr_5bU9-h%QaH(yG<5Jh8iueLL_X zOn?9kGXC}fdrIA!-qHSKhtoII;=vh`#(YnyYwRg^LhZu$YN$`gzz> z6q3M4WO`oX7&aoO>1@a%Y)_u!w=b~*?HjkL>DTP=33v!w!L1g;EFCYi(e#rKAV6|X z_2`)Sh}=7&{T2<#gKQ~jHLi2KY`x!=VBkT}?E4oaaxG^)waPnS1@|37+<)^ugsu=+C3Sb?7n61N)6*GVhl zKynY#dyr9Ev z*K4^qzLYU_OsHP(B+&rH=Y5ual4?kp*C=7`+a+3B#o;ZgzXjUsg(~S&3}jmzDB-QZ!Y|epw{X=YR}YTQAe`Y^Eb} z_rA=@^Wj;sNiMO!mzjA!GZT4_IID4F{~@wB zv?v_WNH~EfeBj8&GNfjv?_Qj1<(z9wwRqu-&x|vgOs{Xa0$)M{~4OIDr+ox^UYe-S@xv7w*5B0 ze9e?+2Uhua`Q`TnqSm%_(8ezz(jGqK*VvaD7xPzdF@%d$`NRD3?^*sDW4+$3I(;){ z?crm7jRV%Gc=Oj7!(w{OpYzKfv3!#~phC;);Y)svPpon8$uvBqd-yfK{IP*(WhVpC zZ~5iFviz-%;4a<%@A>6VSe`h#eV4`2d47#k1JMYM8u{g2mJiT_|Do#iEF4|r*Qm3` zhBv=~F>j{F03soYj}W)V3eAi83g)?mAJlV6zSZBV^UZCiTC2_%j2a<9QdI|2o>r8p>~M182@B6sdK0zRDPW(~{{ioH))YC)4q_ zfkg}-gX-;^Nb%oCi({&tTTnHA?zb&e4Ka!Ry;GUQbFG-3L?EGd?#ieeqwtz$0Y|N0 ztu!FTq=)l%d6MsR1@|TPra~?lOeP{jzFYyP zC-t>v4Pd8B)aL6b@nKAfQ)eHdjcv$4b{un!mQ_-!3{U`nlSWSD@1bh@uV65-UbnVz4?mBS=7mphA|F;V3rW18a~ z6L3K(Ld^wShOdPJ+*7&Uk-rodP6a}SuT^*27i{lHJ<-0vsn}0V%5cdB5! zdI@&0)&anKUCaWWESQQ8M^&KDBwk_LY)qfUAff-tj>06G3yIZnl!Wv9<@;#B5Ijq@ z9EiVgrBQ0L$G9&*+=(C-)~*OeV_4&uKF&Znkag9tI_8~y>5|fGGagD)GoTof%%nB{ zR+C1AT$vGDboQ&#nJhhP)?zyQX0vv>bJ`EMLcv3Y`OBXJ$dPlIS5c5eT49+{TgYgo zbK4M$;UUEDUUhD}e{^GnA4CO(P+ItrerrY$a%s<2>|Ig2WtUJ6A@|6tg|2&|0Xx@K zVJGX`vdkiePQq8d8a*M9w-m#G4~xv%v@6)Jfi-mcj=jA%+;~CDE5pUoqHw7SyJMq! z&Ok-{uu26jf|IL4@fIlue1f9v?l%GaN_pm;jz$*Vy^3f&VlmuNFL569Rt40Y@<-r+ zMJ9_VmE(~jKmgKD-T|34@V)u_SO*Y0Bdu1fYBy^NBkk_0F|;@JjVcM19hn%xF|`5Z z-%d{--|No@eZjYH1^9g+vFeyEbaWUpS&wP_>7(oHU?P9zY@RrnR|gsgq@0fMRDh_; z14AAMKnUl{s3%`!yh?LAhK(Jm^s5eq>I})hCE_0HED>Zhp$TJ$LI*45*y%|%2$bIn zR0Eo*UEJ=>L#?=znjp7370bXd(RLnzMJtF89tds~Qc3O>6?khh)pua1NhdR`331D0 z8tsa_0PP4S`XZy8agz$ITsRNefjVQ}qZ({qh2gWbVJfRk>nTwVO}G14LmX?(8E8*7 z&i9;MsxW+iV?i>eF~?aa4b+?!uGu|j`CBd~(fxoY=zi5Hx}V_qUX`Q;otS1#wTnxA z`d%ijyrxM0gr;QvYXGH`#z;*00>`3^1C~?{IHHizMOQU?$(2rp(2OqOn-s~&d{OZu zOdo^-#>}lVo@ZbIz$(PrWh1lckE~$qIz@l}cD1*+AJovXbGoWS%u$~^7_qHCt1oC4 z>NCWdza8#~;F_O03u*Z_&YiWKuZ~bzzRuSup#MvgNjE) z-x-pllhCLiBoKe+{~VEHRL#ec5@&NNk<(mRD@o;8{9NKPE$TZV(OmEJm5>Z=aaG7< zS>|$fCBD#mA$sp8EVgN!7^Qq5&zq5dV;Xm{4oZ?Ze8gfMlGms`AZ({fXP0oPjT(3? z1dNUv<+{Tug|+<_>CnWQ|Y8li!|F!%v&QRI9pL!QYjE152=2>BraurY~Vwp1^Zz z94%T>9SBRiqR=g>#)lfB0CCBPvZew8mwV2lwu}mOqJ!wAhGFc-K~AH4I&HBKv6|%6 zy;T`RgL@x+0A`(#Uru`%uLV@;6 zf-~X`VL{%(mBji`op^V%3lOT#nnKlQ^c1R_>S(A=Q~`T@DA>~mVg1IaQNP43>sS44 zXgw%*7j zNQ$D?YuwhwoM3kwdw5cxS4+&xfk zTX67la7t%k!ohI4j`eqH=&HW2ZErC0C+m@2-PSNYj0?-$_LPX=ixJ7hVCzN=Ml(xR zYzs}wFG`@lawnu z+=J#42_mjZIN!+ClsZ(Ok6qEEuVY!c!di6s$|Y<_GMn$|jb7U$(VB=f0uRFMI0B_i zp)x+9QIlHsf}lBxsO6#0PS!H9!J<9%d@qbPv?lk@=sX3l~G>zI-V z%Zyn4Hh%dz&S8U+qRs$-jD(122qc^7p@ScAJi;lAD3Yt z+KhIlYTUf-MH{hsIomv3c=Il4dvW3Y7rXsm>G7P^37B=Y6a8)KA#usRz9e=RbLz{iXi z6|92L>tq;R07@yJeNt5bYRBAm$GrxAeE5jJw)(7IXMHcn`xkBIsL){Gf#{U$`Q ztmLqyKe!_YGJ3Q=TU1H`sDuZB2mYiNB^2fn=qp+pJWezj$?K{{@Z(XUnW!oy>@kQm z6CFAvzEs9=n^ov8py4Tc2h17jXE3(}AW|Zt%De`DLNix8#xrhw%VGc~&gDw%ldz`U zIPekt5^%5@gGYfwwI%_FDv>aH$pLn3z$mj4*RmhOmC^{mrE9seD{d9YG(d^a2_^2O zPD(0k#sCPsuEe@C-M`oIM7v3b&y&5*B06*2;Lw?=c{|WV00~HF9Gn=+eGDh{;bzq= z4l}0f9WofaNys?b~6+_~Kz+la^PuVc(M6N8z73 zdVgo_W~@pBk5#0QnkCPe_kUf#$kRo{M|X(LQ= zKc^1vIx=XJ1~PFpR1uK^pl-Kg$gQ-W%+xggqb1|`(Ug;;BzHukts-tIQjt$Hia*iq zc8%()EDX?!+m8t>r%67E$DXQ<>*P~;+@?o0ks?QAni1?jLb zl-XO6EEOP?>yrjaQXlJ)%QQ1-9Cllcw1PP+aN4pRaX{2M+h|X~n^p5*DlVE|pnqe} z@#$TyIW1+W-^QG!v9b!3fi4OeD_3gzVG(dXM$%pYu`qGMQyjX&vGr@-35 z(qbvd8QwtZkPOY@p<|tuJ-DXubCLGA=A)cld=-0dQL$Fsd@)WofLk&(N6eSCw_?8Z zb+9?+O8|`7=1WUe?Z1NgaxIQRx^02qw!+P8KXPKKX9qqTs^7vPMB<3<4DEa=)()w* zC0BHX_S0`N+*VUHl8hjC(Kr}9bxK+!zu=Hgse+B+GvIgU(t*UB|Cw{@u zzL=;^HyOXPvP-D0b`VtHdKgu~Tv}?83TZ)BKsgp2*Qj1t7Dbapf<5(Bizbf%2j%`) z0NFjVZ^mst~5 zGjU|su@#j&GSX*iWR;R5gG+)fsBn%(<`&O7vPVWMR!0VUfe8FMc4X*c!{i?npdwC8 zLPTQ{9S{m2bs~NSU;T~PQ;{_wc7cR`#pXW-SX@P>N#NC(1Yi-HnwNLx?(C zT69(7&RkkxJ189#3@jPDHaB+>;08MpALA_PQeWD(7_5maeHAePZ7wHVMP{VZ!t`@0 zg`D!8>4M%V~Kz(mZ{FQ9n~g>L*fE4Xqw2`DZ~ou z?ie@C_qC$a40i~}88^hKh2}HENx$BIu9MCs5Fs9n+b=b1#86b3bG}xpHbd1>ZM0-U z0P&QQsR|Pp=j{j+ho2pjc8pL!iismFH;TAMOg!Xnqqzfe@!Rdq!%f4*p)O<{JM8dV za&bz6d)3NU6^cWa1B;B}w8BbQI_^qCRCaR2LGNbHxjeGN6!mRVH03Ff|-;xw?jwBFGm{)*E}ly=%-jH$(O=|Ht`wViL& zzeCMLJqP)PH8c;1Xu4_&Ocdre%_*=CT0%#mwk`NF$5>>`uzH*(@1UY-`#UY$(;{0w z0*zooTOkaPzu3dBp;8Q-k8TxijEr|6$OEE|+!h9bY>QF0FXeW1k10&0)ElXTMp?&9 z8O&+Ut!l`Edb)S^oE|rUVQni=(qsP}_5?FF#O{|Aik|-H4raxPY4JqX0%(hb0dB!r zGqj9J0VVD_NZ8=)Q?KCWu{!>81iRuoVLlhn1aQ!8&3Wti{MmCZNs%>BNkZl(N7Ljg zaWv5eX_BVO8kMUmRy|G23C7do;b#Ir4{^W4Kgtqd&sqJ5(P7Kz_i} zt@d~KffN^N9EQTl$}#%Ek}_)C;2WuN64g?j44caf%3u&hyfNFd<&antX?PXen1h!D zLk78!01yzQ{WFg^x8v`kcd(Wz(YlSd5@qTu8d!a$s)|}lT~eYE3RZC>6rfd1F(O=x zg99wsDjcf7&6WJw_` zDp{BBRp!dd7Ol_9@Xz2Gdcwvio((`)UP+LQR^UbyK{m*~-`+Xhl+?-*bz(_oZ&$+A!*bajL0JxFXub1`@ay%!UP5c+U4W3Bd=c9Nf}{PM$}Bs75EL3app(quEO$ z#hUN62zls$+h|#dWx{vrXu080Jp16JWFkxN63Kg~yiO0&(01Po{i{1$9S7Q0l=n)e znNIdpE2XHsGYPnpZCn}6mD)n!UF62doZ{$oa}lzmDH0T};=J@;n`*x=%S*YpaVV%X z2bTb!v8GbdR)wQ2l1&53WCm1mFtXc-l&4|xxZ0}i2k(WkcP09e$JjB+8OCn3gqhjr zY9>C0lT#E7W1pk=5D_W{X?Lota%PlCw-UP>B1}-qKf*6OjjyAHE3;QDYQd!(wOgQtG^vT}=}m~^RmFv2X{kod zK;gRQN)U@YG)G6Ipo;y3M2Z{$fU>YRu4)KfNJZM;31i1VjE^LOfTFDX~PR6~&wipS-tY3?yRIZj)Wg$#e8w z5aGy!8dsLj!H001+T}Bkjz*H{ z(Da=F4q#wkjbV-|_>B^CqtiTD@aLT}M&ta7)#8&v9u&p4#zq;YDpe6(jT_+zW*vD8 zBtzh*fIeo9oIoA|QDqhe_Av?eh+0L;idZ8`-SC%i-o^NYzR!A_{HZ$TZc&F(R*`!` zBJbt?{*uw1^gM|iqxc>uwqqOOWB3M%yp|bTN|jP7fKp20UR&ITM#_m0KDNHNZBA+> z4>7a~RpvU5kC0x}7S9}00E0mcb(uG8hC?lx%3-kpG&F3H+eQOZ;U2r+#f*`~=nAmt zj0ouL!Db=wM)M)pNDM!-fy2DxfGjmBRhY_J92)qmj1U7#RI+cEktxC^Cr@>awjich zl<;+(hIqapCHr zb0~Hn=T?9VyHOR2mbr{`AefXv3;cKD3|dm7AGZs7N)p1y($nobm1nYIuv0QxF$E9y z&=pf%xZIhrW_Y57iAhG?8N(e60LN`qPtEclohFK?F@CAh!o^ll1j5rsd~@*F0VA`f zsz-2*9X07F$r+gu9bHYKBmYTsWLSBuDMfU2J2TG9jHF3a5Nq$m$s`OjhgVR5c14{RNTNheehR+Hn%Lvtq7U-XzAFtl}g#mLEmpy4S;l4Nj)kqmr-UUG;0h z&sYY3BBZ=(~v*a_3F*eejvv2>FQXk?0V#|X?TUWOviY%k*W^ql)3r1Jp5Jm#&wfF1bA=>Ov6YnWc{+_aG zpd2l70@D4E_P;T|4;T=+tmGS&6r_lanl5j<|0a9$4zMI9)!pMBf#cZACw;*KO+(d^ z0vgsM1CCDu#zzJ|MLs#C+mLmMJX%#Ri;+h|3WkL7o2l`M7LJ&2B+UqxHm{k&Lx#+2 zm)BRgik_nuuSxv;=mD?A6y#sIkybsqmSsX|A6145wWsFWx|(w7BYwp9v#+nQwTnC& zhq`gSZjx%=a;H1*U`_CyewYQ`AwENv5@|`-tPB>r!b%lpv=gQkpuG_n7ew+Vr7DPm zN{i*g!X8cWOw{orecp^Jhk{F;?}&y-AL?L%+@~v9i2lxiXddx-<`Knj=21>53hzuQ zPG{zkq#*M-Ja8nf1hzeAc))?TFxF#iC*}5>c;IShKVhEcJERh0eVVz8pAqXg9;6On z+4t?V4Ldn9Lewccp+@zAM@bg9I@sF>I$R{dENJFfj=yhXM6$pyNpc$_SxSAz0OXc< z5insvTJI|kUNvCTG7vKEFKY^;5Y`vRIR3$dOjwMHc4c=AKQfO=zIeRQ9U_6%Zhe`&~%VKSfdb z%S=4UMbee?BeQDf9WT5Way9uyWRiN^ps!ZkTYQcS>B?6)A!@(6w10VcqbW2XW#suB zLIuS>#1CpC<46YzTuhl5l28g<+=6fMsU+!E!BSL0*X5lY{lyct!9A-;aF~Z!uQ~lg zki4`mj|bZ0P@ncxV2I=rk$5Cx1gZ_fA;=~qq#xipa;Q$6ug?4$M+8kG)mwxg&Z=T8FQ_j% zJZq)ZG8LQxkE#{O^{1_{TD>bJ-PJqJOQA1Pa7=)PDOw@wnLbpfRh7+emrYei{C@VP+ zje=?Z(Mowmgf>WhlZ#-fn`x*y6Q+U284l(B>MTR;KjBdV>K-d}p6aI5fjy(Nwny^A=s`jJ~e6BL2%&Drxv*{T}n257acA3*mM1KCMvo5taqT2aOkT{QY z7UrD~kHF1ZvXjEcU&;l5jXxATYWb-^5vHfFT)v_kPQ{Aajhi3R>ouZGGRJv|FX${P z;hRGc-FR}N;>?o3q438r^aw^%H_=Dw|5-)_+cnzC(niS>xMvk}lQ*+K=t{v5F)f&F_(71mx~yf^;SjgC@xV1|shwC64PmV~r7uFnq?>k<}bkI#S_E z4yH<`(1Ds}mj{Ah`2%h#nxc8+0u4~zkRy&XrepA6RtD5u7rIuNdcku!Fm!C-IR=yM zsY`s2F%BxGspA0*Uq$Mar&R4s=cs44)5Vp?o*4HaoLTJ0Qf)aX9_F*;Zs zhzwXwG-VxlfQa^jjzd|2@u-Nw)#1m6AHbqX_3A+~^~7zh&fbxxqc8x+Buh(isU87x zdwhYltD_7)3eVfrJGq`yjF{n7q?keQi9pURr9QP7bd!0gE+v;W0=aUR+EJ43Ncn9;xF|R0QDDM_wqtxMc}3akcW`4ZeA!?5 z2#B21-Y21|95)u!ygfT@Z9!d2qIS7Y`x+-GIdNmrua55(lXmSb`MQH7@?N1%^34z~ z&t{xk!?lb=d}ZAdut3z6#)0e*=MsS;;y7*10}IST#rnXGO^gaHS2CwyLs*KCMck9j zQbnC{d+4mYLO!u41k8B2Yd-o3!SCuu0e}?oUQf43Qdrl)97ua6WyZy&u6J+?^5>qu zHf_TYl7&w=jQ{BVK%jb13PW&+O1okAeA9WW-8Yrh^tHWETaUh|BPKa97t~CL^DbCx zoP}lW9z$G91|mo?ZV7^_kqEMQ915d5$IK^v%&C1ae4#(^gU2imU7G_p-}q#UmJ^H* z6ce`d&R{~<xfMlc;N)*3W3TmumDbf|1YtsNDL#ZO6iV_Y#;~BvvPS3KcaE1t@FMjAu*bikj;uHgt(R3z_;Ro+dxsa!9 z+qDn(FLSbr;Ti}9kZcUFYDZWSLsynTa(KXDuk4pwnj#hWiTTKuw5LSG)V-^{%4&ab zRecdY9|r@t0&-IoCI*7IjI9BkiWsdac8!FHZBlEm?w^a?g1nA~{D%D$?3OjcTXw~8 zfT{4=#@iy{v+uurFwB@YafGrOD%YhwFpyDnzrIed>bXLO#|-+OLdAktDlRc=Q5J4EDlyd#IJPNi0v^o23A zhaF&4J4E5W-$S#1K@EW#kcB*3cgOgG!pNH>!PJh+)y24Sul0B*^-HM*WwGmA;~5Ko z?m6paUFB>f5`P;;HOYuKo^8le9Ox9}FfMT@>RV%PsugT}2IQb?dum`TtH;(hE9XAt z*{qt{X1)sqCIt{~@h!G-+*1rPi%RSzMhkGoXg#@57?><}7#4->es?@%M5zLHb*KY1 zLFc$DN?uFjw3C|{FUm(?lbHlGdD;!Hpwl{ zxlt!Gj6$xg>$k=%%wZ3YCafoe3zjiyVTx*}(`@*b9?=s?Wg>bw36V2lT=1In^Khf8 zyvmaZ7y>&q&d=Ogoe3}ruM)Si*?1bj67PI-L?nINPGF>Y5jp1T7qkqQVsVf7Poyke z?>uv#aIW{t;xd>*7vmA0j<}j-3KBc1c)@k7?9+CGmj$e8ZCexCTPk>MmphWq#O;l| zmQ=gwk;}JIGu@qtCqR8{#+8k;RtDDu27xC@xRF0RYvr0DM&}q&Br*i!7;z<`4=H?| z0|2mJU8%JXADCW+aWO~2IrvydRtxWrN> zIbO-&HN2|sjAactEh+YKN9zew#?t;r+##2PF;jfl<-|EClW+5xHIB<<+x*5Fr>4fV zTpL+84c0&;hXZWud}UF@fdpSL0_?*eLS!-}iI3MfjFJ>Cn3j)xOikv)=@!J*F1In5 zY(CN!kS)YUNY=Gcow>3}eQ2HS^~R3|ab?16()v)IcY}{IWuSRY5|OV#bL@zh;80c_ zA--xx9|~Y@fNiH~SHV%oa6wMwX2x%qayWi8CNV7tJI0hsm6` zpRp{?8De#vJ5zUQ7w=69B8m}IkR+CPd;rRrtQVdH%i~Nu)K|PtO~k12aHjfvQ52AA2`(XPoH;?p{S z5hLRR90^M+q=<|+&4R7bFqunaJbSj{XmfaPOo|vhF7rtFOa^W{NloD#@rZ~ycqulz zv#N48*{6c9=aQBF&bRPv^DR98#5J$uuh1w*kbP~NpS8zU(p0^B`A-w*VovlM7_EY)X7$L2k^OKM)L+l{!Qn3T7g0@4FP@*)(1|L|Qi4$fb{9uU5 zCtf|6_R%~mHR)P5Mh_BX*w4CVYnYsf5vt1~l_a3xm=pf0$&99vFa;+ML{Y}**Ii%>!kS<8S6DOy*WKlx;M)Q$e zSg_&Kozq460_=#T-4V;=7_2H~X~R<1t#g6eEpO*fV0I5>=UliwI9yaM3+v8U-Iy%y zT04I8>5LKF_{G`{IYyJ$fA;$sK)cL$bN1?K(j+vKUP#PF?l! zOT~v})vD>^TX^koPas0C$6`vIfWiyf(N`2ww2)4~LAB4G_6fWbF|fI~>)^zJnSsC9 zwJ58p#KxB90VrTWYGcE?)Shgtb59Et)c2AvjU6GTQeWYkK8NDG)s>@j2y!@f`e^0^ z-$zmi@KwL5lL!-LkEyWq6o6!o>6r22naAe`5(f=bFA`$TUI0>zCe)cS&>$%w1i30r zFavzR268t5L=B8&zQ;-Rd%5Nvh~TY`7G5v5K8s}fqsN$ah_+#4pqLlRt;eR)W2y-0 zg6_A;q|(2~=d<_cMCPBizX&Boh72nqs{~%QMtGbxwm@!tKQm+N{%$*MY(3nij^u2{ zJX2Qu?FVtGnJj4NZ=#ItbdAmmZK=79j5<=1%B%;GR%_e%HVBnzbB-RY6`^YEAd+T# zN>Z?3Nju=-{4t4}Fj1+5Vb3TZN~@K(s+99Z(|qC~BS?bJ!V?VxHf9I9r7DSIU%6QN z3iK3F0S*BZ+lYzLvVdSE9x>t60f(6ZFRAzPru=x>!QRy2!er+vY<-a*GhB4)N;WD- z3tNLkGdcpS=;Z73;1S>{P##&9wUdl(nJ`tAI@Lw9>H(d6C6X6QwAg&W)BY(V zXpN{hQX2&*-62$uH3R$UQsO%}a8v{sPL-Vs z>h;cxA_DA^#U{J@{#-?5y|xbz7X<9-`dCE-#Gdi`wp6>BnIh7BsHPQ>)Z(lGp%Ta_JdyjJ~jSlgEN^ zh1@CbM&&X3NDS54Xdf{8#3(GLeQ=Pw(+BA*OTMwjh@RY7W`o zV2B+Z;)69r^pp${#^sEM$ca)NGRWwVFa)SzB2rpJX9kXM3k>mEgFMUD5YdxIm$MM+ zVB8SDyW;pDhw?$J*^1+wDvs-x;)wNU6vwr+;uwnJc(vU>?CMTf%;l5x#^zT{N?LC; z>tVXM9Wm=GUx4+r-e?X#nCO{7q~t|!L~;rB#_^t+L|x-?NhWjR#RmdzLSFLcsvZl~ zedMixU7fbSj`M-cji?^W%9UoOdaTvcn#X#5CW;5-gyH448D7379G0hv73AeB1$g<2 z5fIARjMjmk=);9}N3CQ1*)a2g1U*NXIixG#JcjC!@&eGfS3f)S3l2lQ03BiG;dcA* z&M@;hyX|p)_CC+FO*3;CcExNbi9)8WxQ#FHKc$)ZKu@xn$jp)C`PX3P@GO1JxY>=a zJ6-NElhs&1>duA;t!Lcv_@Fwcc_OlKs#MJhS(itwoFH7R7U&p%|Ed&%0xmqJtiRv( zwvRXgUZhGirO(Bng=ZZfho@8lZ=h!*$Fm;5__7Znf&Y~1{LG|EWoUWU7l*U)tYcV4 zuH0wj3cOtm1>z*gf^y})fLwXdvm_;k6 zePal<4mXYL2cVa~hV1-P zL)5v3(C{mm2K=`S4EMN%5q6Zhv$99I*;yHpor4+6&b4#PB0Han zMMmMMLS>i{DnsS}-J_yHWmrI{ENa{zd4wrHFnYpT!m-ul#&8$qI}pFSOc@}lHAki( znh7|MVK}B_3No0~9)oq6$do{%veoWk_g5J(wDKp(l;*EkSZRCgMrGA>BV#1026{cQ zWJ;S~nuyqpy{!e!Yub~<)RvgT8l^pPoj()>V#LF@@)i8;oW@Gs*eV5pkjU^FlQX%k zM024C#&S_GQu0*|u8prF*4v-}APA$>a2(-r##UP^D(5>@K%KUc=f1-GY8!9Z(mHik z)?zC;vFT)th0@XN%&qbXX-Ozq`kc10OQgMRJ&rL@`5lrZeq7c-wWF{j2CAr4Op@+N zv=$Lq5m`p}d&GLenQte~jWl*^8pGGxrp}$LsH@*VM2k{)$<%Er!|oSteOuZr!lW2df?pI8r@noFu}A$E-s$0*JV z2X20&kH+hGW!t9)0ykA*ye7)FjaTuzYf@sg`-cv&+ijCE`2fCO%$%6e_LxNq zH!jDIjr|1~(YQsLM@;DUeg?!ONk)^1Y0R?ir~&?9VHyKYmMt7M`O6l|{rl$iw$_*! zH4@PSlYzK7hMZ0rkX~d!F3DRH(7Q5D$;-n_-8cx^eUbr*6nfi$M5=Nzr{stMIi$jy zc1kW3&@x5ceaY&@G`?hK=oW{OO)pbF_wc7@XW*L$kX@$>W0mr?U$aU%TqI;lGmE2L zH_|$Jzfo2tH#y9Dwm@*0Zmf4`8iNd(i+6I2&%zT&lAKUdTH2t8F$tsiY7ezDq(r3r zgy<<@^NSPM{B^uX$5t~TyS~Bpjm`YT4QM!I^AP+gHjm^w^%F9I2Lsf+ji#{qpt^9- zH*B7JAfFI>y5jz;w4cz(%Tn$HjXfcQ-nH0#Pd?gd!VzQqgxFM6!?{Ven-Cu*C?;w~ z+=N(9wwthD00warZu|!5Z8zbnst(gpAu3ARvoiN96)Jl(d?)~k;6%jli>ELa!38{pNKrq{cnVv(QXfG^of9Ss z*sel7#d-3g!Z+t$Jao^@L$|wsyQdyHJ*6%usm4FaDgy{2&Quv#y4gt!@a3DGvg$zY zcGdAVG{R8S2UZIkm_=-8e1ebS0mu8KL_T_g(8gIA6qfLb=UaBvBMLa^B)kG&T4Asg z2iF*&Oq5XK?`Xe-`Eb*H4<7@Do3Mztun3S_qE=hVAZ8vJvg<1L^v@W8Gd|x z4e~T&1Q?p04&;atP@zqe&J}1E074XAo-AYA0LT_BW{Qv)tq?tuACQYAYCPVF8s9Ad zN3ts^F#!bWg+lbUqF+8lpHcP;h3FS#jM0HEV?y*v?4LAMHbigl>CO$&BmQ}u*}lD~ z3}ZS4jm#Z#M%>Kq?0(U?+c+Ju09K0vLg8c)(OixNa8m#hSyIj4nSyI)3v4PV)-gin zoAMLRLK@k4;Quy{lU(fFfrkQc$9O(&p{dAt4%eDFaUtC+^t3jhN9|HW{7UWVJ??SAF07;fvo z39057ZeSOg)CzdfsE^Fdi|emhsTG%N-#WEoLlw)#!irpC0gd<7_BFM_OWSSeh~mv; zR>0Afug5)FC3i6m`56jJY9YWNE~u*(*+^JntSjbc#<)UHv<%EfLS$&nc#I;ybdd1F z+s4%i88raSWf#oZx1lyoQ^h@KhF|Ryc8K zC-LTauSK_^Unh0lVli ze|?HA0V};Qo>J@cZsud8hNEM=$}CTbSKwu_IR$YP@sF*TXn{3G z^aNBJ|JeFC76jZR{;~1vE!6b}MZ5?p0_-B|?OKllT(-bQPbu**7&kS*@b}HwSX{`> z*Z|J}?>h#5Q)YggvB79BNI^q+YUbZ=Bjul_FVz0n%zxZAGQ^EQ#c4a=tmNtXD*^@t zfV@oe+$+D)QI31+O5Mq%)4zJKj;dWK5brR)>deB zWHROpOdG{Bx@(qBQLd>??c?4Y4Tb74U)t*+VR!Ssg9tzmt$6=W%yh&%P(vD zSN!IRbJ~{=N#|__pZhIq{=ijBULtht>c?C4T+AAs@)dmPiLW)$RMl1aw5J}Ai;oUb zV5Yxm(OI`PgLl_wvl(23mkQ==Py&t@t}Yz?Sx~|iQ9i^G3yntkeH3}Il#hjR63&v$ zn2#|Y_$F7Ld}^Q|+(mY=-|J_r7L*?txX}~!QL~F34jfLY`mu#=n8U*@xMd59A{=Ul zWvIZ07B33Ewp9@Fpn##WqR4gH7Ru2VgJ;;ONtU!e4&~onsaVAqk#f>Np|et{fY&}x zsesy)C>5Fpy0LwExNMY)C#Hek^1CN#onoP=a2gQ`S9FY~Rf@#|B0Z~89&%h%)F#_LD9-bbjqhqAt}Dyi=m@toNTOX*cjHt9Xfu!7eKuYVLi~kl5O{4t zWuk~06#OOvc+t`&&{Ikcg0nDR4SMt#g$?R7W7AJW5WM4l;YV1UwPk?}npP3yv|_?>3%R?|+kxW?1x;MTS_>6K2V5G+P`u#P6;Y zJ}l=dg^0jXDTKX{QVNr#@lmC)S-m{$|1JZDgW^dEB?#bVJWUTp6*8Fk_)o}3Jxwd8 zSx-~%gDA8UJxw?({>9TY)zg$0PB-W7KTtEX-A==zni*0(>^WRJg*>tSPW=LtSm7jY zxa2Ih<7u@hHQ_u98MoD}q00@{I zzBF|Xo@XC7(bAPWU0X#8fsK;R?_g`09P$Eyz?b`?tv)Yp^#(cQ@5C3k{JXfwa#9g| ze4Erhm=U2a3hS9^tA5kUA-`C*)V zS;W7GU0dR3>RF>iUn&0{JXZO`q<$E01{kk_hNoO}4n77`5bz>rW?r9)T8o98(m>G@ z<%l^mb1-gtEVw1RLse%#<5GpgP5fW@0#HH7uM4VWw*2Qk97*sB$nBG@z*7Sz=Xr>Y;w7-ckn9(;8XnU$$894&&RPw5E098S`QY6o_rMm$13|?cG z!f(eO%q{@<<@3#lN88@xtvfhOXx-rmzk)+7V%=fql>{v;(TSc?*4^drW5)R1O{9f~ z+|#R(`9aYMD>NlK<5X6ds)^*B`@nAs2RoYwt44AjyqHKed}RG3vzzoAm`EG@m>=6j zf>K;8#bP8yr^7@WTXHTJ5Ll985!6Q{XS*mMBa-vl9g&>t1pq;00=XV_s;G8Ep;r`= z5oKcN(r;x)6c!4ABHF}l9mB9A3P!h_u1#<&jTI@ocga8OGiWXkr>hh4X{<^e#At^U z?uz1M#FAceVM*H|g>C^rB#UaL4v}K-NnI=o$OuZ-TykxD8*0A*B!ZHSI*8rghHBW? z^vM~?E1Pqf24HVJy(s_*bUg%~8kih=>*;1uoQzD4e~!tqx1Qo#c~g~6nVhQzm(Hr} zTU|5zR$J!|l?R1^t+FVWic0?0Ld|;-U_{Q9B+F!Fdw_Dcx zlY5ZTcr_KyORA|jvUY}Q>QL3xb>%ft&X%R7-i=dJAFYZ{h!ItO*BBAbDK9w6A~B+S z$yUKf&#YmhuT+d^apuEhQkb!-vL9hvQ4I5gX$6NlSKySKC8dx{Ws+tx(G_*8riNu! zXFf_d9%T0XclbU$yu{&~1;<##B?+f4jn%F-M)Z_&Np6lCqZKvdT2hlYdxR0Jc$qqU z-=iSlMUv`#D%RLqYXOd~koppDt#!v3gcjg#40smd0hKZYkPpLgy`w40I}$qzue2g3qRr9yi(UKHAkh_x z%AAM>`*_BKq_al{d7atd9sVv0A72b9IFUsXk*|LjpUko)(9jbp%IwD)jAMh}-Mw^k zwFh*ML}oBgbT6&zP&69{4ut6AX!6!X;Pr!>*W0bbZe2(hqkoCOe;@bK^?OXpsao%!4lR>2Scb#eV{a$vHj;kFeu1 zy#jC`+w>(9K=JrotiijTeV^Y{bxwQran|76c{VNs#z_G%vrK^S+S;BxxSq}SH@U$U=$e#<(4|wsmiSYlP`K%;(sM&@&6i$o4i}9yL{R1_ zp8y!rBm0hyw)g6z+bqghN8I*)omfw2s^R-zQ@w2BwSW243#fR~r(VWv<~TtmWD;>l z4-RlV=Etb1a%+OYbNUAK-nef-zg4Q6;WwcF^zXieDw7_@$|S_7GHLp7ZqHOEty$S= z>rcy0Td}g!R&%q{NOk#!UU06)4^B%fXap58^blQe*`>wy(N)UO>nTo0bNIpbzi)cl z0H2f0F@g|CBinzl*gjkl#tK5jFX8)ov_l0)J1iK!&oy6zK_p>~J+7jvgP<0LA)f9z zFy>)UIqNj8&YzmSlK@NU`NOYozzBqxSWKa zrIAGp(`crPcoSrcolsE zX<1uHe=l>bS~;Lrc%olpm-)SeKFv@230l+~*xVLG4;!Ms$RDVYLZ%?}c2{CDyrf8^s28&w?l z&6aP^{+B2^#d9 zjS0+v)vu;M78peY{h>j%Mx-A>tCLZyYATm_ya9}IhOqY7#Jw!0 zaC^|u`J_t>^uXaJbK|R@$5bKzjsT9ZjfQ!~Jsp&+wziEOOQgRkn8%VOEJ`|6f#C9j zLtLv~D-O&MfiY*&T<|139Ct(~GbsFY=d?9s{So)oy`+E~BNCBP*yHWjO{IE-^=rND zs{@bOQP_Sx(35X5uqP?(FL}j<^NMc|C^FQ4g_HH?=e8j-dY^r1@i zwTfvC#}QA3<%%26uK^2cuS)GTQ@dLf7BpeQ5_;T=w;-)Gjn0QtgQvo>u>+dl*cSHm zVoMUIFjxLuTk>*mf9Z&F>~zx;3e8bNu?#Y{9pV6Vv5j27;{Zi6pL(rB|hE!9~;4q_DAPK;Azq7Qf zN{&FML&zQ=*^yK_u(#ie8okL^tr$4Djx}}es|{l%9_of0>F^9}EL9&=Z8u;Gmz;3C z^Hu(**OB>0)#y%{j=>JbKo{Rt4K@%5pTdke-4T>I7XwQ55*i-)jDbl%HZrpR+Mt!g zbP}}A#b`yVhA^_(8PLO}7SzFllu;x*1G$FO9v7{_qbn-GD?9z!4n8>-^FH2uE{;^C zqwFSb=+L6J5dnX1mMyIN9P^w>4 zI5k(EONbhq)tethh3j67Q{kEySru+oxzfy3IR7G@uY7q?HeK1;tls>XZmjh&Z?igO zrxD`WPhrBA6&{a+6bthDBJqH=2K`A6kep)m=qeQt*qp%Xzi&KXF+UyvorA0%>Q;)? z*Q0O%)UkxsFUg*}`?re+I1B`lVrOm_8eG+pFY{EP<)Ru~-rU0eUMxDg%d0TrDG|7* zuZl0+%cD>7_p5oq*HL9@R-OHKRFSLrQagQD@2P}U9UK_P(oh!ZF5{}J!sD(DoWiUf za4PP^oeu^F+DDgFd4IR99z`m8;Er@D-WwvKo~hP5KPFUl?mlW!s_x^9g4&Xz?!=-1 zB`HcYk8c$!Qc{!-&GAK{!6ij$yNoXiWFL1Y*kjnD>VU0~53K$Q zt5v*0#wpZ$C%n>*$knjKVe_@NQK#nMV`cjc1u|-e(|E`O?lh`q#pQ^@CZF#)_lMv^ z>9`*p@#M&Py>!qESV_%k6VTsjUAu6zlAA1Oti!6Mj{Pc_7o3`m2wt!T8c;b>=oqE8 z@FVaGk;O$1Qi5JpbFkU+*y&4sEO+g5+EGeS-oZuEOc2DDgAg5>|0&J*rPJmihPW)9 z!Zs72jfk^QgHL^N+OC06vfexVzIQgI8ax70?Hc&l$rW7k$=6pvK3@K@ysYtg835GW^0z)O5;*nq<$P$emxrTW?hK2gYWYj3qf z!q{Y}$9TF8bep^KdhH9|z;EzHaF0zkEI#kz4@^vU3esn5{)OBy zI5q9Bh8(PgBe~97Uwh662a|W;81!gVyedOhdW5rrgMvGUeV85rSIwztw|nY9G4Whg zGX(4t=d+`(27D`!mGyI6+R!2eKgK4`m!TRW($Snw*SbpShmQh!#jv0~=fnx9Ui?M| z0(z5n=^+A)xIT1R@O%^doePj70;8HRBYj~AGMyYwG@ZOQyM?6;qQaRnmk08~_oSVkNA!^|7bri?_}-4iC+2Pi@!Y%$b8<%*8J=bKle)Pj6iZYjbi5i>w#QZJ(l z#9db!t762{n&b@Ni-{bW>1|*5_kxnn)Lu@ii--HS=niCmx`1D{l;b77hKX^v|7DkW z#z(CQETSER^+`4czk-J8L8nP-0X1&t_Ja)lQr%rcPdtfpJ3Z}_72+%f+rcTd_0vEp zf1`03QmPt{A;+on$HpqP$SKO!GQH#D<(%$jE!uR6NjZti(+{?>Z8=f3v;1H^6p{(S zdO#A!kkH)~#Ex6wJvupmsMIc~tLnm^BN~g+mzBKcT{6rFR(9TrTO{ci3}6i< z4r5|)&K{AvuqTac4j!@bNeCqTrMD3n;*jh~#?Vp~e1#}gxbZDa-FehAegHwll-v3;3N_6v169OA=d`-=|G#DW`_uC@N@eaSlI*pDx!rP;HD}iE2cpskFZcGyJTi8$>^K;=PPKB=Yf}V@E{eoE4%!%QUrR3h zx1}0!q)-fCf{^jTiH;_iEMyoF3>8GqWe>lYTySlc1!XJYghs6z;Fqsquk$C!*1~;; zhPd1@oup)>xv+~A_fBFSb0$IQPhf$9qDd?e`t}4C2sF*@MHGnxMDQ(DOK6Cr$>bK9 zMc+2UPDn#VTF&C&f>*FI)ktjSBY8R1gumw2!@3+_jW2U+aX!bwn8IBKNUCjPtH}s* zdn02WTTSqlTaCPSY_+k7q@WyI>ya>yujWqb?U6%!WVJ`q$oR2MoHh&>fv!KUR-m=6P?}v)2Ty7Z#?`vkS{2sX1%Otqn{l;5t%X1*yIM|<>TX<} zq1Ks03L-kf8mM4wl>;~ws@~#33pxvZ2~cMd^VUGaJ%Bl}eV)*GSjzIAsrQZ8a^WDm zLlK5K?(r*?xr%j3EPP2}#OO*O9_f|>R2vfYi^~@_wvt?VHR!0eI^^Ka4I0&z+x*Zd(SwOC>7>AP^6p?h~@y-k44+ec#)90-*D8A(A)+EuwIUX zV}*^p{hV@exHqb{p39dCTsa@be0%t&Dp{w)D)*`ov!rvGv0Le2VMprBA*}*0>dH2t zU)&q35D{H4+J(K=Cr;1Y9vrvSd^He8(!(`H##PPa`h&1icDzWF$X19_-_eu5y&_BQ zJ@(rIuGNo=GTSR3uQ51uk7R$NiKloNAxMmWiu{M;p41zD1>Ff;X#3`CUkG*hbxw96 z+n^A9Q~BO>Ba-wd8`|ZFqMmzqQr(E?&Q0TztJa zvFgpxi>kK$bJJhA5DxC!-p3#ud?*A!4<%DTu%%HzmL>ucy2&6CNUV`8Pi!DFlBECS z#p|Fq@PjUpxp3fy^c4;R?qtRr-i14C%go2m{=XL*u%__;C=GxSOk4I(UGrA`)LKjE zJb%Gk^^&EqkgTz(tKDki5lh{wUwWNewKD@q2A{l0E%FoZ{NpfeegE}s!TbmYZ`FU9 z?7mRz_n7RLg={MiHovyW@_R1is@ogXTkgw3{yT8(nM`(pg$#|{BIrl(>1-1vSar5) zBEZUs=4>mEkj~jAO0Vl|1DTObVcW-E+p7;m4?pn-tiMxh9(NIg{Sfat9}WFVAad4AvNy*?<(rfaL|JL#IM8O5_G@+vbS*mh&6B3f0^?_ z`uZ&Ayuh-4;p~wQ(jwOH%-KJC&He6;Kk!~WZ}j~>j?HID`LCz+&6ErZEPjjRU-&y? z3MnhY^3d8&b_;PCYMr9kf9+9gd6DIR2a|mkb6sE=XBpokR&ut963SY(YGyeU)X}r8 z{Pmdk$NsSEy#&tw#^QTc6i{HvTLS12>)onfVzFEG9=Fo1CLXcOt@@?)bgOn|08=D) zEeu;Pf;*)k{oi%G%wVct7V)zTnSJ)!?){(OLAUtM3&Z{{rq(Rx`ehkE%Vqp_FzCJ5 z(0>OT`sp)WUTK1FTKc!Kpb`2AKKR`$um563|BcP)nUX<)#s8w3 zX~zBcw51PRY$fQwNbtXd1fRuR7g)wwDf%MA|BM`^18nv1du>ni*S`M(f1!fskk2qn zDk!k@UnKaSAi=$c?|$qDclY0ak-yCMUw6J=mh-c8sC{+^-Uq*f6tw<}cl>V=pFItyMEW}|M6+|7Y5OmWm znmX3|pML(I`Nf~-*~{6@KmK@y4edYA|AV)FxZ{OagP`~GR@~FrKH~wjJjO)Qy{5+D z=Zv7WI363?*dMP5xB@6Yp}_a!;2%Fl-To3?{PgqBKmSj5I5GGctT%#s_&W65e!Z0j z*r3U4ziz{e2k6|vpdY^Z_aCo@qzpXt{&@A~!foT=y+2;HurU|6xPUJ|e6z41tv0+H zuO0M$feC?A0^DE1pzgcvg>$!l1@c;O8#L=eoCrVyTd026KO4B=6;2`ux)*+P0ki+d ztAX2ZdIM?u>>PX2uYiaIHl5z_xDzn6kRlMI7xvulPf9rcNKK5_NB6H$aY$N5trQ~v z_@n!S_1_<_=EhHkw*%B-F6RDtm8l5w`XBypl;}81fWd|Lv>tSTxPdnUV>HdttohvF z4`jtNbm3tq;p=eNYI&KaQ{4CciU~!&YOfM{rKYz*b>`ImHa23{%0O17WBO^1Z4?p zVL#Fi=|?c1yFvi_z&#Js^p5-2NNw?nNf}?;yC7ZUfQzFo{2T9!dp-r&xLgjX@jC*l zEUEnuK?VW)c|IEaKLkzlq>`WuN<5k;zxEE~6Fvv3P68|2!O-xMu5XEFx zu-q2qLa5}-`$uZ|rP=a9a1O8I5C8kW6i8sxKspx7Uyn=YQemES?7BDk{8^XPcrF1p zHcWGe(Uq*r^7|9CIjST@(@w2kHhny zlwm|qUibKDBIn7rg^3*JZ|2*HZ{g1Myv% zCU7DY4~mL_NN&qC(hPbn4qdeF=%!2qR76d6y)0AN@4_d`%>1>AxCgy1G++8D|XB-2E6 zQ>K9cyOJaFGS_i+a^~db=l}fCrOmHK`)6?w>~=%=2>$gye{}!onj^ygZF~pwBL)8h z--0OwEixSZK!q07|4pkZ=E}l@-{`|1eh_i~=7+?_jaW6A_q>{8kyLo|!@qud6TK%V zpa0>fH^UIa1AIUH@EGutsNgj~G$;Wv*1G(@z!6l4+Jc_EGsUb5|=YtmSxc#f4 z&ZrXk*@b5z*9fBVfSCe$V3}9xk&0j%-tacP;TN^ zXQAKhx^TRCI!N%Dv$|Vvd1r$`+ZtUg=Ej2*7s&%l{5fZX0L~rhJt+*}I&Rm$fIEV3 zBGUNEwVAp<22>1&G#uK|(I7CKvk-4OW&jtS*O2z%Ir3n9+N&xNv*Sk*OXi$WM6g95 z)b4t|(g^!JI;Zal!?_LmNNuy1o{`Su`!xk}dWHGi4TCleb+ql>orU*dR2UDghwysH zEAuc-L`I~K@6{B@>(%4Cvu-f(FU+|VLL(6lYX5(G-`d{BjimcmI)1W|G$T>IB(bB| zlVoz4@tHWuv6Gn(wjT{ewk(b*Qp+ZNS+CD;KW|l`fC3uLi$qeA&Dm^1p>Zt$g~D4G z(C4c4NF)d|QSJlHAOGaORj-Fb9AEWpzm%^jXZ1sm@F*z|jljqgQ-%@5klavC>GPoo zC2{3W$e32M%aW;ANkRPlk%})gNuyrp=ZK^BUonC;uE_F1oc*u@gSmWaCNq^{;_U50x10wWYZ@}GKrsO(zb zVb6+rY5tzvsTZX5pE1k*`lo16A__K-Nxo-> zba2{>JNz5YsjBrDC-As@c;*^;HhBMRFo*UywE#LIsL}@W^=^KAr2WtvVX+QJZDfVJCoSZ$o;TlD=SQgdm9`qi?0YiT% z3ZdN1++T+{Tib(wl44=ow7i4%z6GxwyeN?$hX=x3SHHg={*EBYlKE4pum)q?Wkfeg z-9@4Os9n~-=$PkgG}Ff?(8mm31+2vbwp@S-HP&w$Zb}{fgNM7MHswYq)K`A=62Kn{dL9Thuo$M-59mz zTx(itIj#JScKxcFqOQuQfK#0eyMdk!3yF9^AeBHGuZYC}(;y3p7R|#`{$vYs%y4Z z*`^wH<%64LUZpKQp>iKUA=laXYl|j(M>ov-0>MGcu)MNuyOG-^ww%V}nT`kS8g=7~ zMneM#UFL3mT0tHwThJn(wQ)LcZ~bAZN7v1FMW!kp8EP!vd!kIO5f53Aq}*JcuZUR~ z{)K<;?|Yt0{Fk1D0L$w?z$U~`eh>jUs%i^JB;G^V;@@D<-?~`%TaZxkkL2FReR;6; zHGLg)`jc*{+_B<@s74eGV(%2FRNqu+?I-*`Hqh1M*%;-+02JHw9{^q;)HT>t1 zc4U!z0_3AH?l!PaQi}_{M$_XZM07&O{a0|6(B3v}D4`A?ykcI*KNC2e)0|lq$_ys` zJ|{&#sJ3SVY>Q_D-(JgU(_4p!^t20_e|96YcBr3;bP=kM5A@~>4P`AhfKQ#B4>MD9 z8wfWAvF=H~(`~_6dj#_|;>Yg#;7nG`;j8u{n#7#P*ptZ>!dm|@BXSjmV>Y@_BpuvQ zdndVApsY99k=sNtaDYZVccAH|qgF9Y6cXzMrrwonpJau-a0cyHE*7_gpeZMcin>?IP3o0q>vo-aj5>5iZIsn%r;o=4Y6A(;pG9F(-Em$MA z8e{%Ph!U*m$`R~Zef0!0Xx#+_S=bhHzEM>sbFr=G)E0US$vgCQ|1ZUXUSyiO^-l)l zLYX4&n4_}TVEfMTX}oCfxKPr+xOZY9UK~^a-7#2i^p6|h7U_5r=biMGt--CcO%9r@~fr6Lx!qE~x_cf=rer(L)#RbU;(*1a+^_M!^y% zl94wGrf-FtL_tiug=>2SS{7PmH_;`xW}&ou0XuBp!(^ufkh?u?BX73KYPZT}BS3dP z`?L^~_MpkZDOTG8r!F`_f!i*QFp`D}IEV~i?};r;Xn=6}Xz`%JcLn%bJceAYyH2zH-qdb>y0JJIK>JS`KmE;>##`4? zejOV(Zrv>>RvqjXpiI!_#`@3bGqMP?xv7Z-l&emHnR9?)SGc7>!_?I%Xrs z+sp3}UZk9J%1VwGu_97*p72!LeeoXp<)DtHJ;GU5(5a_eeS}7Ua4@5H(YCeS<4uNt z;h(Foa^FJ@k7X|&`4TeG=vGwR3e15sRL zM52?KH6Yqv4Qd+h?d=_jo1={69|ElyWz2?248|1JCS?+kO>_^*G_A7t4h-!woXKKCjYn-9iQ2%O56QwTMAGPb5u9ihB8 zUnBobYHN?;wZZmIjN>HA0@=pNFS1&4=5dnXJAigWiaE)UZq!`HKE`z*WBq3g))ajO z(8nwowNc$qrK#tHCMaHhU<68J!>#m*kH5Js`FF_rob32*IkhNakyHIe^hOw}_l9_a zMSIgbSF^RzvXo?l#{2s&34fhO_ioqF+&XuGEjLPcokFMc5LA}QQd7G7Td-9rD=JR@ zgbtjitHDe?wxhgm#&cD9$}u)oGwy5rokMM&t46jE1S8;WqYBKxPi&o}B4gc;4k6Nl zIkIfsx_R@zypo{qGpE_^+`D=9Cgh9TmpxS3#x2#Af0%f>EmHAGF;eWwucx=3t6>7w zFQZG12=aWvYX)bvdkl5mcIXH-9{xfHSaITb0u&hWI34R?PPXehZHOxBDnt*0-;bDE zsjezoca9vDk2W27xEjs*^UMbb*l{vx7F{>h7C^e`%_mreV|%q*DF1cZm!P1DG;aSS z)Qpf1(UGbm1r1i)w!WQMdxP&eZ7q^5af8~54gfc8M%zTgqIhH@#1DYMW%qE5C?MpX z$kdOOHZ@Prg(|c|c}mU3mCF*KbMpGsV%A^o$2OTdhiuu%|qPx_AuX8A2Wk#IgnkeP$xj#i2_eFW@ z^RI5*ou-Uyu4yhM+(N}0ly6h&*eKnWqjXD2e1(*4P5`dyUpjgX32F&**TL%6_fB*Q@WTuHgOG{Sqv z1vam!%3e=GYkaCXV%QrJ2xjg@E<;`ha(5$zp1462n5M$X--V3c2FjZy#4NoA{(uij z@_G2-!WeUpuMT36579#IN8WMZv|V+EW4pa#|3JYgwn;hZ&HQR^d~9E5a0jW>;~vhD z%A)`@kC_%p0%MOWo3SCE%c&U3J26q?9g1#}9Va>|8dU{TV6GWFhv?HDXK(5W_Xb=_ zn1Y8!Akd*2v)_S(NLtiuBq_d;_!sglduYS?i7)}F;~aO(`V}^G!||e|Bbpj@g%juN z3}+=@aGan*h6?q~M zd}`&Ml&Z-FUg8R-)yDh4!HtO%4Xt(35-33L+-4vthAvVb`k&hqEU^k6Oum2E7G5bJ z`RL!|H-o+7s&&97GoOIxh1|{)#^=svG&_k(y56`lx}oSx*i`r(K4|wr5KW|<`a82K z?X0Y0O-g%DTu?+N!fr0G9|5>#eq>|1&brd%|Hl>Z+|wdRCf-mZ#_sK12c%4jdAiqd z`r4c+T250Euygr~i9HiJSHL{>5aNbB+^yqXnJW&h53C~mbM;+7nDJyF3>)I`X8F~< zTkZ0zX;^bpJ#!(=3lwg^nHy`^pv=obnPUQ9A&eQ9zZ$+=hmZnhN^(adAX@+qwei&0 z+mKP(W_!yXIOVR0D;7?cevt&o-x3g6@hInrksAcn8$m%c@>-}MykJVT7~C6g#_mAv zO>rjaUj6`Q;xVZNzm_!N$dbyxT{@ldoVC|QiaQ8`F)NRqv{B3N?b33iwT`c#u0-BoZ2!B6lfj{4=OVpH`t2~ zh^wg$$yrX{Ov75HE*7yhJP#)Zyu##M#0i7zzbFO%Df*BV za0`rZ{VF(-VMwh-G8GggQ3y@>Y9nY$iq*jZe-GBjtm236>K8=9L}kVx0Ezd$ID11X z7^eh~szPB?DKK{Mi!>)Yv>Kl7bpUjblbRt>szF&!{n!qph!t$ElSzNL6|M<=^|r$- zXgrd&8q{o*7YDO%AjF;2E-k3w(Y|Dk>BYihx~`JmD%(3%Hc&rFV`FF0(>1m%*SY=U z@y{2V+U!jIG3tk&CJIPtQE4ONQE6<}6ir6-URQ<&3yt{^qStd&krj-b>Ly&Rarn0J z^AUj_7NaH>poCo@tJG9-*i^S#RmrAppGOnss$w)`qXCocecrHrjDfAe;6AjI(SX?n zvZxA71IFPkW3T~H$kzA9LKeK-6>!8X~?0nyKnRvG{txH!HS;>Ro;}6@WP^o!6Sb z0%qMDsG$m(co*3WGoGE+q<;)Q;CXP`LeJ%!x}Tt#^z>RzTVabPEk<&f;4Tne5%i0W zH-FBjop4H$he<%i?5?odpJ-2TY&t38bb6_lq#l|sO!}Qo1TUyNV_l zrR(A5LJ9T>@&YWkVBB?Lt>Y5(jMA_n%0|<8qqYC25v_@IjW=(7(Y{&UnWk%Ou4yi9 z<3hz7^o>*M*k~M=qj5}0ywN%CdR@RN@1^jfnGY)i$&Q_8BGElj%t>Jz1kQtSHF#d~ zTA(ecd>GV$K29M!Xt4}v#~%c?Q#Y3!j_(>^sX$^nim zr(Jr5%Mj3X=i+1}Av{JSm6lgI8kk!RE><9J2V{RC+y8M1&z8|o0}`B{J}28k7Y%pH zE45JdTm$F0NA9JVCkS2I8ONT?H976;B6%GZ&j9)~9~gLV>cg>@@F3tqW6W#lJSy+V z1=}Q|m(^*ja|?KbeAIj7D|rLV8MKlekKFzbj@q4VvS$6(Ka~}mw5n;2>q8X!AWFmF zcYRNzKM1ac9x_r*$*a9$?}`B*&{cGZjyt_0l6*=~%#ki5Em*!etln1r;fojL$dvx^ z&6AKiwTAyY!CbX|PAiC$wFXu^$r@OEQ6L0migdJ#5iH_@qg z>L6j_I%p(I2gw*wBWrJuLSBR*bcrp4jd1DHBJomE^@b_ZBpURPnFx{rG6OagGh&rA z2{no&OBQ=~tzUphp)6#Y+!9*LCa~m*3#xx@K|}>mvxZe!8B}lWNHcP1-jdXdqz#qE z@@Z6aB%_|I_E<=bDvv+$&G*(0BXWo3b_y3YtVR}CFT4`jn%S&5$SRvfIq#x$0&g_6 zF6~?^CK7|ATB9%Ls@sdnQN2DjU4sl5eH>8CZ=>Oxw}3exez>8E78zn5h*{{a>+Orr zh_rh^ch#uW+{@*VbhwAdU$_J&;|B^ia5AiLOVpclY-3E{itV!XqE+;Vopzu99*&Az zx9_%Y;{R>|)X(|PI1XR1%%XkKSIH8$XfV)M!E70Xm zSyjK372Y6*#l`Vxcv@_IyI+lmqjDbr?4(~-`vZgrZ};(N&xPrl8lyr_kBRL1?CKIG7vA|a)@jZv%R(xojww~}uiV|h7mjPTo88(K zyK1eq88<<9pq*B~9K0BxFhYNmqg}|(cJ$sYi1{9Hr25^0xRm_H#&p4Wsg~NTq*l)f zXLsllGiTD985;CUnEd)GC8meZCwc^BPGQLb;6oAUsyLVf56%(;2t4y9Zy_iB^#*zw zyFoc}7HC1p!~;{X&DZa@#>{>Sfzw*FyF9S?dPw8G@)14SRaKrs0n`0KW{Jnwk~z__ zQKS`^y?|&(7npLOa z#@$QoKMhAuXybVeUAR{WSJK0 zhPP9D;E6IdPD?U%=NaUb`fcwmJG~|WTOuK=8NdFjee;Vu<*m*%{CY}N8T7gSO7CLj z8_?@%m2AN4<$%{U8eehj`YgRv2TM3QhR+ec1qPCON3CJmp*1?*^gl~(+b+Ug-?8q2S^|y5aP$l|9i0lAl8SxsL09h9Z zgnKuIUQC$<2u1=!hG3MOz56eNN>usQPKHWNVL(JM%3=Tk$X5U$hq{vnAX+CP z)kJ;Hoz&Jeo@|VdWI$s0i#~FMk0&gzo9GcAP4M>LMw3DL@IyvK=N#V>;7|j4j@sSc zaF2Cncu)=~QrU+!)fo{RfLOpO@wYRkLTv5GHj8VJ_zz^7)$LVeQ-)aSfBC`vWcwG+ zHm%@k`wgz#DE4#jv^U;6YU4qmxl6WRpu2zh9pMoE347t-Ow#XrE>3RHaJ@FInYNy|c(zYDkG|d(12mB(Fqd`6jWN!!$zq)mr4X>7 zFN8&yv9|Ae%7>Z7Y|xV!OBGMn7%Kuu%H>n)Z^@BQ2hnf<^#*~`|9g1ywbP=7`?)ukyAb$eE+!dB0|W@ykzKyF z9AF@bMR34y3ZJ|?yD-D(laZviD=fA@{qz;aESG-N@&JFo-vyaQV01W@0kpWwkFf*f zzF6!ac<=c`0rzwpic{}Cd{s{X9|zY=t5q*UQJv;ubpC2typF03w~*l<>2*Q;f0QzzwSRyA%o9LiEy6jX-)8%SCDyQe{E_H8O+{pD znvI4Q?Bs+zdlC_)zKN+2?Hrp2NLDEl7?6?n`CVX4zVsYXwOc;wt-LqDm9AaBwn zA+E`GqDtypN_v*#Ba}bhSv6ilS!VDP%F?{UECnd1%0^}tVu^YlBa4YU`!n%atly`8 zC76*|7NqOL*hLjZvb5cN)|e7?>0FeI`4d$WQBGccNe1u{uD99X3(4me;aB=?o4$>gw!HFB>FhJgtRzMJ<1C&e)5@#Ca#` znwoznu44BEO09qI;)p$$D)XrL=59kR>@59gNMp8 z2cVvU_wa0~LMeKlsN;`Sf`3Q~k&PN{4Qe!R8)a2yjXnYGv$IyWeAVle0#-ql^Af<2 zd%{vRAYOp@&fTY)>Sn}}Q{e14*k_aU_rJ zDZRky;nZbxa7^tm*%~+x6EYyT9wkoG=ILbwu2uH^*8F`Bs;0E>G$tW^s^hHPbNQa_ zw49=S`}LT2xc>1oiJrSfXELJ8&OZriHri0~&fqG3A3g!duEZn<3er9Pdd$UTLHawh zDetW4r8EF~Da0L+LLv=&Ra@Ky;&)mIqTE&75e$Tu?nCq zfrl?N3)dB#te8~Gv`VOi7n%-CZDIkl1eyh`KKyg_pWuxJz!*ulA&Ksm?c>jnzPL9{ zQ$MY)8Y=JAye1^kf)zAq?5EbU(b_LZYhNcaK|!LR$73$XZA1XVBY~HxxtAEH-&4p( z=)p%GI<=1VL9co~_5SuJqigPpJz)S)M;*5&5#!5iqw4L^!ORFfMO1)yfl1;OH%Ufz?SL}BQzbJM*8QXh~+ zHScu6c~bG^cu`W_dY&N_*L04s+kVj-RZ^W)TzjHi$7rM>mW$*3XyNt zWZ@!#yG8o~+MWAV+(`b(D{2zjHPPd&wrgt28*8lcjgNo z?>%;08wC|tZH}AA+|-9`b%l;AmUX>J%f-Go&s0373yxfaYv^&vA~Z>Ty@Hk0R9=gE zrR`~saEmZPb8Dxo)@pcR7(7vE4$fG+bmC$d?R(ShlzHm<@wXS~cN*NrWUkl6NKKz{ zWy_Fy8N75}QhUz23R2T$ZoiMgG%fM66KQW?chkiRb?I-T|g6Bt4*Pj>Q}rPawxOvPC7lox}Z ze=P62KQ3Q99K7m{%Mba9_r(TTH!_52MD@Bi?wrU8?oD%8kz_8A-ng$h&Y@b8s9sj; z)$5+rpL%mb(jWH*FH*C<2rqTLFpgQKU%^&P09=kecrHC^yjnJj)a5HuQ>E91(CtzA zqK8njZE{_#emyG(q@{w#NNakGx2Nol_xve6RDm#7Q7wl_vXA zMqCw#rPL8x@bS!?8$+fy1vIRJqvJ>17o&yHU{Wx{JMN86x2-t7#a+iHWAdnJB@lg% z*H>w!#dug8l`x+aclj2S1!eJeI4P=$`|-LBZ2)o+l~CM}{~OsYbjzauZT+h~8lb^A z^&P-O?%iJ}=qg%iJBhCe~w+EfFA7%QUlhTZ|;ZehD*O(pi`<)hv(%aAo z;{|CG)=de;K`L7q>{%PUZ+q(xjuqy(Q3dGdUBL?_cH88Ms3{$2$adu|Rx3tukS-9X zDD|QJXrxBVF|)z>H62vdjNUg_HoNOlr^Bz4LDZ z*~_wdga>Ul!NoQ~G!epzuhBl3+572R!LX?FQ_+zt!=R?t*}TDBg{JFHCC~rCzwpmB zP>{xwU9*Pti!VBNkK1>r2EBVct+M%4qzl&2q$8bL%|=POBqeE`%2!BB>Mw6K#YBAf z3aE(HO7ayi0VD_?o~lPx<>Ufk$kIEWX)?O!)zasGA?0I%G@kI|jt|Mw_g}s7$>Xv+ z>6G1{+ec-;iuqcN6B4_(*UM+Gd(VImsP4N~tBJIuUp_a&% zMxQYxPaBMHTmB{s)^7P`2misnk?-oBdesE4URIn2EBoRAq(DK=Pk%D2LV^@)InGra zXxuZG?m{0F{>=&U_K~TaHMcqke7$<`;6bq^uNG_-c(v4blfIfDJnixD6!CX(8@I(x zhVE#1)*ZecZ0%rFIvIX6i!BZ6h&IFb(NJTjU$#f~wbZM$40PBqBR=nX2vvC6#Vf&N z$S(<#AzE5ZE9D|y7}MC4;1-B6bQWG;AZB0!anTxsH8I;~?mFNNN3q-B&KS#t+KTSJ z&hy}%lg(W$Ewwb~C|!iH)|!)d2A13kpXjSE8HXPWd_L+u`Mb%A)Dwb+f6xkmu<~Rw>0dqt+Wkl0C?!76=2HK2^ z;NNIw0BA+)0&(%6KYIJyIi_YfuUS=_z$X<}p|hTE zRcHO)cw3ieePivwWGB=?oBg~cy~Td0P7e-IF!&6+66`b>?kjMs+d3-~vn(8Tm#aJW zIFLLLoobBo6Oz8dyYnPoHRRz}9qGGKawH;}lj3$DJ%z!t-;)v3u#ynin;VJ+JjY^p z&RJaK!|8$SYMW#ouiv&`Q`0t zzAW?CT*FGd8-(#}xlnZt814dfZUEio0J^hCP8aMe>;vO49vF>_`8o&COwcKVql#Cf z4~tkad{_gEU8Q-HI9#k|LBsg&0WAN>wt=vGS_EQU>4&$8l!yIornTNPEP0LSx3jbB z9d#t@u0UV!+_~gDW8@p=09R2c{sE5F=`MNXnhB~pi0i;5^PdPEh=*HdL~GQGAjwB^ z?X>`x9Y`WU1(0h>CIfV>X@wCSW;-M%8t`!OSlDJYEoU{YD-z`Z4}9otZvTk%7<+PQ z+wb>|_IZ1>{!@L^Y2(G5AMm_r2an6X{iM~}_y0sSyqdrrhcA6``ESAp4b%HcYyTnX zQC6WhiTZRUM>U6T#5!3jl1>T~rx>a87BIBe!%>&s&rmGdC1t9TkY?VqDoF8y@B1fA zIun>`o&HQK<6ph*_#^<}P^oA$%n`pQH__;GMM4ua2>+H>MfNCoFJ7ONzuup{`P!u) z4PlUWdT{gKQE5U<+*4twLx)QMVjYzCnh+Pmt*H9LF-kekZ9e1C#CIOj=g-A^7T5{O zqyLd6YCIhF$GtNpH7w%(TK<5un?e`j=Ii6nkeb9r-a})bj<>g5H>=jDJRQC&e*(t& z!(ZtE4++#o4*kd}1Ky*+AmJI9(7gB|7D+Tmyu^bJ(B$?;V7P^Q&IPveJu~By3v^?< z-aV-b-@oku`+SMErDIRzdw43`wNA<#H+n;~BrM@v0o_#bP)&|pW2A#}{c3eidi^eN z4D`(DokBi}DH_q`KFdH=Sff~aIzT>xFf8{s!{2rpnXK^D74koAwG@yBu!b}kG5cOV z&zGhqe4Zo=tyFwx09XfzF{CxgR&pMQ9D5ms6ru&Pw1v3WXK%I;!(r>zZTgio!>e^q z_gv@=3z;HbxcyE~Fl==&uyQ2LaiwW}virCXKS)d@6qCf_&&91T&=LRFy`(P#esvsW z$0Jg*s!FFJ*q>^4bbooaqdQEg#)1-KQ92S@ATn^JSe+x~84=cq<3E1C5?P28O$-SP z$gg^d?b*mjrgD)vc*u6>6xf-r0@lMWm7`EsE{mTqpGdh$%1dfC0ehq2YcmhRk>!fy zpf*}Yji;c459yF-QXwnCNW9#xJcCX;6fs%#suB-(vLu6vD1g18b(>oXR$wL-E__&( zgGs-i)VIhPXxXDO2_c);f)nAsPg(L{Zc_ZC24g_`;H^DvRxC$JNA#gfQtwHqh%qQsAFz--&8X~_B~ zfd^fCZ*Iy|^l+HGfG%ey5&0mZrHrLM!S(vMH-OZ1fWsfceqxhDlYemjJ<}QwpRhg_ z`pxY2foz0@9zB9b@_@X97Z@;31%4EdPsvj#+$N{#IM2HlE`O#4bF!#%enH8olXD%qpelB|IGdYNxc@aDDaHj&=2%!Jz<^bnUdT7-Uu zE}a3y=gylqZ(8C1<33EATJF{wnLzH*fbQBgbl+`^Om%k6N;Ge$=*n=Y69j~x&~dUyTGl0YB-AO|FcI?&=zQ)>bjEO zi5KIbzPPHytF^L9j;xZ4kJ+mSfdcgOWTdBUf^3{f#(1otGwQMVV2V~22~HmBP__4a%-*C*4AB{0^={o8 z6vt486@0TI6MG`KeI&hkYFNqG5B7jijeT5JJTh%RS%tO035j>Pqtvq_blr{)k?ymv!xL6MG8 zeXp^6ajGj}-oZ4U-_-tv6)L{SxBDC+W8WEC?+<9Y`T(wA>g@|3y88RWZo4`O>CoD| z1m-66mOt>ZW>>|OAGA*?hzE}VaW`nOkZ%XS798AVa`RIZwHYdk#yKjAWR{AeHcv>Z z&s0&==Zeyz*(!?6d?7LR9_G;%#k4u2@r#)?=Ee96rAnuohm8P{u7yJ5H_vbxVuMrG zZi#N)!3k>TU1*S)ZuSWdI&NzHcl~k;Q6dfkxDE<(* zvWsoyh9Wm(w|3RMu!U1qp5KYws$7w()jdLVOum(KP^0JM`=G;!LjX~f#ZoO4sGtp+ z6?9vvS3=@};IE5zaIUk7TL^jR@l6G~G`@ABbM}28p9~yFX|I&$qmA`CwjFZ(gJ_L6 z)K9t;$Qx!dqv{YLu@RICfBp9ampT4*G9I5DR=pR4_84)lDDu zfXKp90Pa4!NzHD&A7$~`B^rT1eLVXL1)d*}%b2@i$KEq(*JY@Yqh8(r4*GZPqFdbc z_S)Uk-r#UN#I-)}l&R}-E{9LE8r)=@_D;*%c;(uR88ZW?Ij`pFf}K(~^(l4u;ibTz z;4fB{Ma>U3S!Io@GQaBl9Ogfp51YskoqI z-f&YZnsZedySuuht5?bG^;|VF2njTU&k1FhLE5u*`t_kh$Snx93R9UWSz6lHY|-0n zS~hbYw{G8K!!vCn?mO5P;i*4B?zEksex^hxN#^{BL5xhjPqo(wY?NFdm5E(a_lcMmRf|=b6m~V! ze`Euu&g-c*0F)88K(mY7`u0SF*E*}k2#D6%z!`@#M2LFYK8rtXC*l? z&;Z+S=f0`=P3jeU-kM>R(|t(JFWY6GLUfjW(~;ns8zn=PN3jpk1wx+oZY67=2~;95 zsZLFSCARrvJpU0O!n}r!6#Tnu0)+pACQ5!*rgjzHxdCnQRn-KFV&aJ*5!$V?8m zI$7qAy0Y!MF{?K){eA_Q20<6Fl1%IidM%CqOqM99sEf#MmF6I(nj4nvCPwOkBL>rj zW%2`WX^4g8BRMt^fY)y*!mC;R&g0ujt!LsHyPR(EeEE2XdT6$*w}TF#0Wzs~e8I8> znRNX7xc4G=QzM=jx`%ijj&M%Qb~A3|N4}utzA_~Rea2^)KC|UGQUR6K#jE1Imjg+r zKTosN^Ms)=9j0#DRecQ;&Ru1QEr?26s;P7iPfaj!AE-vy3DZS0utP^juI~OF)Rk(N-w+c zmrwyD;W1f*A!^mIfV?>3d9K-!d;{1-KA32}1LgwxV+00@ zp7%PB`LCY_m8w9V-N-u#s*%lSz3zj%-7mX$?@kXGE1Hcsl!2(HJ|jicga1?<#K8HS zn}7pz7HkMDkS%>VK?EXi$l!>{9-2_2jDeEud!5fOUeN@M4Gv>{|$U40KgUUS{usGy<(-OPXs&#mXn;+!s;@OQrS?b6G z(i%0u2^<-}E%W$Y@_He76x%Z4;2vYAl_URH7PQ;mp9*g6to-FyFN4lzm-pYn_BJ8} zz)q$&5LZm-(et@D5zfD-*BS>;$J~u2j53-Q$|6YHU`R0`knMIg!7QpW%aM zdQ=^}gRKkvIQeZ(ZkNVPDR_+3{~exjGw<;|yYXjg;;`b#0ZMN!v-4*xn{Yf}bi16% zssre9M&-SWfcLL=-b|pg?;_0zT9l!&a+10G58 z9UqQ;(drwN#-%&zG-0MtO59~hbqY9Igs2fQnZX?`5^p<1(fhiNML20gzo+dg& z@LUW}smi;Cb{%8EAB3DFs<|c7W3O>L1FkKxUv#~9X)M&!c%472$Omzr-`KLM1&Tok z-Y%YoR`HmfFN!kZ1Cj}Pb@k9sUWPhoboM#2)Ez!u0Y&+M&eohhQBL+4Z{(=e48x!r z>W-eML$CbhYK}^$H9HJj3lE z9X;P2BjXgmee48JV^q=RqcM^T$XwiOQEsLC&b|NXH`BQo&%A8MlPqOA%!xeLQBJAL zWyjNT!-l}zu?&d~B}=jCMO9`S;#=B$4!cVb5k5LOXh|D@Oz%p1PS}-ivN`K!692}&dG35#t$2{9C}Z^*KUEqy zFY$j;{P?Bpy1Jh#s)gW%jdv5jnqJDR`J`TG+g|rY@Ci*!tSltf8Ma`!Z$JhH;VOVuB|aK8JLBsK-|iTr};d4E|#da!p6310xu+Ic=V_+VsJx81Do ztL!^UiTr1+ut+<~U5Mx>Cd2LEInX6n&J_TAnClV}IDMhdiyS z&#AeLUGeGNjqhc8_GMji8|aRT)XZ$H)oi&aK(Uce12W9>T`hB$8 zy#!W|Znb2!X}pr{l5SG|z{wd4C7uTHPu}egPk&=)OTKeJwN0-OIZo#^xJ|aDwq?_) z9YDZA_RK%PzBpx|AzeM&H5fp@NW**?3m*Blgk-2tedxS)(M z^`N-hpV5>&sF}Q+=RMNMlH_U*D<4=}L*7wra@a8Y@S+q|&FdsJgn<*DoQbXo)qmFsK_iO#0?!u2SL==KGjyn)W z#F&M;B*bn4o{GK-kTOsO!HZ&Is3|~8;3thXK<4M4II4-m8ak|j$21*MtZ5Dn@~!Bi zA)!NO$&`p(_T+#3RxC{yUj{=|6AgDDxzfN5wb7U4RpB0s``!n<4h?DK>kvfsijC2Z z*R2wAXA8?!R!(i;(H_ugpJP(ZLi~hnzz{%GmkAbyZj$ zDnJfe0Dc`LrA66@uj0%d$GP3dP)v927MnRR@FbL`mjrcJ%AZeUohU&_5lTD7^A;%+ z2L$q4vv-W1`fV2G#B{Qes)1B<(KTdmrff{xBtlY5Xk_)IPNR);mlIn1AxBGlX9w*<@4WVSB1@L@1&$h5tG#{EzXEJuHBN3IpJ23UiAiv`-N^F|uiDDBoV@ryIy&<$@EB;yI(Svx}i&4wNi8ImC6=0kJ~9(Ad8bNu zj$7-MvoM_X%ETNqHg&!-frreD)waLe<{IlXSnU~!WU&V*9M$SFhkVe3WKQlF_~V|y zI+!x$fKy(gh}$C8+VCEQ%V^Fnt(}gH=dq~cGEe2Ow4LJfESqA^EnO(?9E;DSxH9`! z_^rQY1(tfq#-KjVlKcsm>)COqmKZ$A9n6iav|XNdG}j@7@s+XXZi?d?bJQ1}_o=96()I zgW!}#szaIzrEdBT7YX-csy^k77uI-6otQL5U%;~kf@lp0M?6U5nhy~-^Ud_6h>dz^ceOkuY##GuJ-o;ZE zL!TeWtMPcfP8Th$UGPo(gL?_%^AP?i7$>i(Rdedm>LeKN{`6F3BYk zlj|ykUY{o2%{Kic8j{Ac=Hp~2kh@%6<)MfhA?*K{pfl(4oI{a)>m^~G&}bQ<4}6s3 zj1AtrF6VsKevK1{sT4#7lga7{@3%faf@pWmM-ksvR(j@pMzx z)C21xSA;VJyEX-YY;|UKoF1|HfBUb8>{)B`bvJf|rJr?@28w}gO4}>EdN&bKtpx+np zNLOC&JW~Q|W~(I|7|P5Kdji({){|vV>&kim#>>f~|G^@eIacK%ZHXy>qb{kHr?YYP zyyud|{i$Y;{re4l3G@3s$NBb_&o!9;s!wpvE7+Zwx;Ru+u*Zvs)5GG@V@l3_pJ7Qy zzk~m=LzDqV@IM%#>n?Hxu)i)QXld#e#U1cRk71wUzn?5p=QugXnGtUyl1Of{XyOkv z+&VvOtE%rhV;rI5x4%t}X52Zion_VhLz~mODm=*DtDeA+;ix_O6)&L~V+A(4qI1f{ zvTJgx}oXq)e3@`j9yP zB@Zv$V00xIb{&|Oji&y-+mGIK#B2Pb{N8TFq)Pu)S?x8NX54NUruG~Z(6957{8h|5 z>j|AEh(((c$fhlmGF0zeB$14s7NI|lL;wZ+=)v#EvRj@mw=$ih7&MR&D%{KFs&0%5 zVZzz+5ytbQ9wZeQkOhl^;ou23fRV@#o)M`|=fvwg=T%0&D-iniZ@>f){!_!4ZNUQb z&0Gq}CjusTU8egxl&xtjYX}KzK-`Ni-vxe^QB2|y6o${59!F@k5F|#&vi($Gal~47 z8-O06A$=qT$l)Jmr8jAPv}nr!5V)xa3olZ(xlDADsgp?H0U8%l6&K@T{{8ovtRY)xOToqEQc9I>Pusc3HAx_kSJua2gvXc{ZZC|m0BHy0`05QMY2 zijBI)D`)CIXdBI=u1Uyy#Z@+m^HF*O*<~S;@3YaRCB_hetKw<`sH+{s5|O+ED8g41 zT-gcFNwVQ`9?Rk`8z<`F=`-;~#pdA4io5>@-4Jq^W)Q!@b=e&ev(Rl*)>WPFyMwUL z1tCP2n7TRxFpI-zJ$?01vVqYoVfDKwmfrg;y)Hmes()cpQlXfJ+RbL-<$&zy9%C;* zVKK^8r3UjyB`xjfDg@G)%aDfo=$M$FdK~i-BFKy)Fvub6!Z6(W*kB(#ZH0KPJ%k1Y zs1TorwPWo1AwP?ZZq4A2v+u;yqdEb@8pts%Pt0f+gM$Ld;FxF~@yRt!7*iKFQ8bqO zEC)p+`~ent0SpLHO-`f%1Cp7v6_bOSH^UFTS245Um5!Lxc8OuC~JFMG(9i8X^JA zgXN)0y%{SKrJN$u)I#V3)w6-^_|@=M9)N6qk5J|0%p5ST`BA`j;OI@`KPT8mr$V~i z^`yu&wa{|sx)ZR?!G<#cNI#g^;ldRb#-8aNF9ct9v3)O2L#vG0?-is)DU-mcgRBHXJJZgOhHpTyPynI-LV{`qbV?NX8MTj(`6AA4$ zxb5{btEZ(EB!u{?YN6YEce|e-ckkVs3f)ert9I@6dPwtn(zMQGDrf?5r*&h4;ntyB zpE5UwTchwt1>-g`TMM08*s&@9GGNFBaob#1V(>ASgHDoWFfu?8HDpnt37nJO9Az#f zmjrXUrZzz2?)xQ>kh&I=Ogph3|8Iiu22{~NHD{ndxMwdC>Et^(#v&3{pTCmnh}36U)L`SbcR$p zMbwN_6@E)c_CtdP;SGt>iw)?B;2Xu(xBKKl9BdSyEZK?35>f*|G;iT%a428H1{m@% zQ2oaOz>uNtM+FLnv$^TM8FF0GoilVGzITRn>e%M)Nzb#vsS*wuz0Tv3{`zSE-yB?Q zuJqmW`}Wxw4>o>i7ti^IwdPxAM`*2=OSP{_l2>eC<61Kp&Zzyy+hzc4z2{sGsP*NY znXU7$d^wC-3C2aW4=WzNZ_g0Gr)@6Wy<7JN&W>os7w+$6GpymZ?N(mq=6ivw_HRzp zuER(!-Db6C+MRjhcKQ^$ZKn+->T`FcQoET^$%rn zsr89(pV&*L4;NSsrqTSmU~alGx+;nd=HNI50Wqg#RkdG~2L-YF))-M~1Wc{)Kxn6f zkGg~b-6&&Y_~kmpd~_T+mS`>DaQpc9_PwvZnrfAjtz<5=VcwDrP(!}>24|?l3qECD zoWYRxqXHQ^_S%uRj4)X)L9OjtkMRZ5rDkv;TuPQ_MG_s?O|VRq=@Llh+mDInlQ)>m zHGWp_$ErH%#^+b<=(%>L0P_rL&3Ft1os({g#zcuL1|zsF14Nj%J&v;PfE0}tblqK@ zrXUP+L^WEn*8fLZ0c(IDcw#eGzr_Iv4kGFT7ICdAs;ifiUqhMZX5KWV#{5-s12J&a z=#6jFI#v7Q;fojj@<-aH+ppUFNjdXTgWp35z-Lm1ZU`D3s3&ZM0~vULp#EcC$iNf!qXG=d zAQ$K10-xa$Zob@heCzeyX$A^57VuZv3gM>_2a^BbF1>S(Yt8rGV@K`u>YJvo`1Y&K znG3KcNzWSZz_D$C*xdY7ro&0oS3DeT&J0JBW)DYADKx&Y{*4Qw_kr`|h=<>}`}KfQEzqQn(UP8XVH6Jwm4!?3mc zE1xrNa4A!!UDs$=hH@*KFj&Kl)A_P#%b6~xaji%DqNdCW4K1%|xb&9fq!!>RPF>EB zBleN3P-$PfVA2}yo!QHfF~mkIO=VF zRFR<-G^@zAgPH3;6Efty?_%=5hlY!ov`|{D!W0E1+Tj5V3>P zqQ|s_Uh(_}8ctozOP^hTUu>FOpW*W7HgKnIfRXt{j|1+dd8}j=(=RvTor}&sR})XZ zr}28{UU846sn_qzoO!n&W^EB_I;N3!X1yc|m!u{lg&fNy)A^X+lno-?T=5QZ7r_f} z5veDh|3K&F6#(v7WBQE<_U0j>BUW;f17bPa@Ar=O@e*nIruCodn@+oPQvT2zm7Vc$ z^!AfhYv2Df!0W?@h!8O8m(@OAcHPUB|0aCEdz|!aQ1wY`|8K*ylMgSH;9R3xn<2%k zy&gRq{fTocg>WM8NWWm(lm1SlJ4g!2la#s~Om`H#%rr-)N%N5lHZFyaLvs zhmxsXGTtYZreI%KMVaOn!Z2O^3C`zG*$wW$!Tnc+`)`os>*vV-w~QQPapYTHl;yoU zM>nV8$hkV^LXqbz*nlBtOK%Wlj~CZ}%!?og%6_o;@%ASKc{#~)=Nm%2QhfD=6Enk2 zl*LW=BCUKSk#m`M*fyol$R+Hf_cCNNS3%tL_#VT5h~UIu7No!JXl#`mH~Ckq#kEU(PTr zidRsVjp;MBczA}cU^r_tf7W3x#ky20GxMQILf&a};uINv==wKoLT33D(4;@vkcAFFMD|naf6Kquw2wX+RwDht-p$>`X?z@mn2sM3m&)I!NN0G^>LN67^(7 zE97-~^gSV%zmNNNd6;A+(uxUTS~PSpsWVmuc7@*|jX?Is6uUp{wyP6F_4f|U-SW6S z>5n5*?7#p1`)_N2zmx}N5UIrt-fUD2s+doV6a~{3X)$G5or!~miu3Rn?b}Sfi;pIl zl~a}JFevT3L$D_0TzB(Go;VJ)f)O27uI}8>wB2P5F*G)1tp1o>%4qFsBq|?PzW(fp z{nzu3Ic+3A(hWSjfoE3)&pHKwIkA_rkpd$`&4;XQJsgkw=_WGGo_7aX#u&Gi?4=D5 zef@ywzk>(IkVgbVAAi-pRkm+WgQ4p+)Ibw2Q<{I3ipp~v4 zEc~3qn@^m~*kqlh-!B1grlw=GSv%8gz?8!2RwW_e;a`RZos?5 zM$=z2R&0f)1lhW<9h%k@Pot*Nkvw%O9i~+yUJmP;>m6xYKmp%sS`cwA>g6(*#hluf zxDzn}<8PNl#t4TBtJbQkxSuB9Ws%W!Awxvdx%I9@BbhcWLzCr_)}ZM@Ogr;o`s%|@ zt?k}M9ByM!x^9EghXc693_4{j1J@+jYp3>`b6jgy{q-ERY0FqxJxyORrmoEyKwXoh zXDd=Fw7aLh!SBPD<-iU;q$*ifJp9n0AwWo6DG4g*RLJnV`(0<;dj(ySr9|!Hng~*B z*U+W*ZKdQnZ4Y|KWyMjFRQslBYa)g=XK0{FD;>Innf|ECkzErec^L#qbm+gir_Q9+ zpayGH)tc@Y0-4m6(g@nwC)hxE|x z=>_F{XnERkaXcKII?Iu2JSy9#@$%NRH4Q(ptpGvW!@XwvO z2kPNuET6*pz7+LC=cL!~j>ZJs3*AL!!b!csd6Ipi56d`Uo-X2 zj`7lCk_Wb-L^I)NKsz?m%0;x$RAo9WWel0778(%OogayctC=P)G8(Nm9g(IlW16(C zt%i|RkA_FRKI~_8r59kIu+th8JhG4ZwNJhmY+k%P?~9j?3#c^Pw89)at6JSsZ~*w8 zwvOT0y6wIc5B}nLUf^?DZMt_feHnX4>uT6LMhso<;C?e=aymZK=n{q)wUp-&wHsN} zSR+<(zFF1okklPrTT?33I<-Vv)EjRgjFT@{NRI=R7Hi{oZ7*Tip^f}7!$qTMpy!+G z15|uS^N8zJI=s;4G6rZHO2!x@zSDAiGVE4f;M+W{b5)<#d6>nJtsTYZ$L;dY7hg`b zqsZ4%L!xuG6mu7Cu%~D!zp<(C78La#v{B~?3ukHjQQ1}WBCJ2J9<_NcK{cw)$ErO| zB~HIym1wvRH)%ve4(i<{kSuf{CR#{eKiO)sR}=MW883;5wSL63tbJZTN%f-9L`nUA zNd(m9W4dYT`pISPKur`gS(ZgKH+tt0$QDw1UlD!AdktkcUr<5Q#h9?>!}@6(MDHfj zh8)YH?1F>~9f;``($`Nm0uP%ArT`^+8>^a~lYN9U`An~S-SLUd@h?hPkW|!kOeF2h z)T5TPC@`ae1M$JL8+r$A8lHZ?q}8C!$HUar=__GlEp(*=1pJ@j(f^&4lMl{XXwGr1 z*;;6L)E+RoYcIgnzr=hD+S!PQk-AfIFcZ_y%)sz0n<~$mUsnqa8qH})q)q+o#++*4 z*Td0E=&C}*wLY%lK+LS|3)m(63PB*We^^U}JsDGb6`x`v)O5=e)4`00a@SdZXYgB8- z0{cv9+AJ1fic?pNDoJAoNwTd^1I)0Adw3tkhvCz|aes1nZ@SHpgpjyp+S@xWbc zX5>-(D;j$Frg~dh5(i*0^J&E-FfAG~m{gge6_Mh54=b;tlamh#*Gt$s zM>svpLAPq~n&HE2>0{zrQf(=M+w)6(a^{8$A$GkXhpzKG5;`Tk0Z^HIMj!VGvr12QT3muvYWx88_ zE%;aN_CHtXJ|itR(aL1G1Y)_?V``Z$t(RPh_}xUZB-kh^DsEx1>qgcsZ6KSqpAilXqwPrB= zlqpSko|C`VWk#`l0s%F#&4>%Y0tb5Hl^C!DhbB7&bPt*N!!w$iYk>tl(%e z9uEikLg>o)?O6%NayIInwnr3W^4m@y$~Gho2TvwPr#(bi{EPg!zwfJaE!^KnfB3il zy1%dYb0j|-+?Qhszuh(YT@hk&74Karuve4v4We+lEWKOz2JXYR`~CLdMfmhY-1C+d zTr()P(?;Gs>qS$*rUXgn&SvId?<03I-miGm=nK~5wNR?MD$3_xRUK(D)-paR@ z-&~mkWu-&^rGDk35A$oLmY~tYSv0O~)Q&*Gz*m`KzllKMpS^WolmD z(k7vbS9v-z-~96DGPIeDJRHQEh);;A^ZwZY|J>jAA{L2Tq+vi5$o_*Z{#l)rB2rh-wOJt=$3- z1B`o}$Nbk%gG%MPXE$2=!W(0#LM6n{dff-NzxuLsuY2d-G!0I!jvCyNi}o~UK{pxK`t`HHt2Qj^ ze5(&aUq;)srG%6$ow*6+)Ob$$^KrXhm3769PoZ-2M0yJI@=Sa3={{bsfHKlAg8&sH*)MXktrOhmp~?IJSJ1<(0a*KzsEI^te*3dR$09x zF)8ccsiRZL8ihOYLP--Pe1=ORfNwt@w@+SdxEaa1Y2cZxmqdb0Phw(ZGE6567)_1& zG(uyWcca#>tSY;`_HU!%o42tPSd-wcpTcV1k*!T>^=hwo4CM9`MM7@4_cTs@PYHbX zsw|&M8;riJTAk$^q{g~vlvG+iQF_s+z}P_FOEi;zXzvD9O+uUp6WZk0#3Kc9+yHPlm+p0fDY{Dqq^u%;R|mdqaYs{fc92aBlt z!D3a-d5)t*V^u?h)~S8 zKj~F`FO@XfPiwiAhAz;=n_fu|8gHZl{r2WnIn>*iM}A|1H|ljx9?=P4$LhY6$hO@~HKwblXL5h8_rz zbYfkZ))%>wXPZl|=B`!GF*8kGz!>L%>OEuuQ}4nGc=#5VFi_h}GCsa<^B^}SH{d+i z!{o+ojaY!Sz{8ifzbxCImp7*a53-TsT54i&9(I_sXd~#5Ex&;r>PUl6nICcpwEbWK zhdja{18>F`YBM#e6b# ztC?h=ON~|=n}J4?!?j~DkAIqR?p#0kW#*99jl7JGpWp!Qmll3F)kNAp>%d;LJp(@^ zeemcBd7lw{0wZL)1Kz(F`hr#-m;Wg{-q?iG#pbV`6#_w9f|&4 z_WR?LQQ5`|X~uA5bR0gck1(Olm?j~8)#Ug``4;h+Q(Cyx^%25!qlczAb zVIWA_YLlbR2@L;}`PJn04N6;#=T=i^&ul!bM=-GGsO8bBb*bwcl<7v8si+szW=f^E zb9nJ%X1yQ4qxR_KuKk~ADock*%etY3^o{~UJON0YudJ_ozF(Q){&KEi}H zW158YRg>e_BRUYjdy$F+K7D<}@J+_F@X4zs#jrc+m++l2%tMmaMS#$Ou4C}F{YIXF z-QYD*6+7=c_y0Wvml}i1mm~X#A0((vbbzzrXk2v5M}OX88KUcx04pUgD4i2B91kfQ+HfNc!rg8K!$0x2+sw#A%gY+H zX|8d+?iRO#!M>EcYi6Y8=9p=Bu|11rtqnDf(F<{z)-Jkrhb+P#wqKN)f%=A*HKV4r z#?k5xb_Iilh{t#L%uuz}WsTG~)i_Rft6jk`PvtJ38Kt>NXWCtOlZA&_m118ntOI881m-B7bd6ABYs! z!s{YcvRJE!ukIXu^?CQGGu7%LtzbTbhdD|$**esUZp<9KQA7O)ZOXYKj0jmjE(-^} zpERlL{gsKB=VjP9Xa{4JeblXHm3>h6)in1C0^{)Y&&17T<$$J>3(geUB{?sTh)G9k z)J(opN7qi)aC@3U(U9r#h#C4&qht7VDI|2)vMKa47q`pV&aMMB%9)N$U3sLl!)}Hv z$N}px_0}?F%$nu$R*d$bHfsGabG4+ycGs9Gqc#_v%b97{f!df&$EMD-W6?`x-N{90 z3i*S>8TwG8WB7C_B=kVj6bkx0mq$R~g&O_* zmrEd@>OObd4i)`#guD`vAa>Au(cWjV+;=47ijA1A*^9~D+8KdE8n;utbXfPS`MqhRPqJ(7xG^?@t;`UeV z+qaLW1_;YkF_+G2zH$v(t6brY-m0#y@+tG`tvq2rF3pvm0gZ5pW*}~Q8P|SoKe_m8 zGIeVz{23v>dNeeRR=;1;V72*pteQG~s2h~SaZJEeS1`8OjeOUa$c-2*rA$2S4bE*kJG3MJ>`m&Fb@n=APByMkMW8;eBt zCVuDh+xWlsRNK+!n&!HYFI2qYUOuIc&Gp=0#_K=ky`HD^{a|nDbA;?3nNz&+CTsFs z)@{~wA-U0-FXmRe3EkcJtS9bGSNnQf_SETqnh_htD!{jbSX%c2@7!FUgwU7 z{r>Rv9%s(vl^{$##7`O*ulCqV2ikQ!;P#kmr`zONzuhTMhJ8F%iZ7pzx3|3LBz1F6 zTo7(}O|)$j$=|*#-%ie2Z~=pT#sKfkzA90ZDg5k)-b|%CE~3F0Mh3`uHtNBViu&?x z2Qi*rHdOJKckhZ!@3wY|_wVmh;3=t9Lr?94NctNe#}tG(gwJNua$sU>jiC8J$NuCL zufmG|cj2rZQu6c$cvW}MDgPMti98`Y-l91}X8oQHpZnt4D2{t?$}TdGdM{4Kpn=*; zz@Oc84Rljkr>OeF@m|$I0A>{9|3(=ti9?rYB#z$W@(mh_KUH}4mTJQTxc&57Ix8^r zD#s0m(!M|LHin>QXcqB~Pzo;2Ho`UFzx`};a*UnOU>1k^dE6~O77 zaNkXTR0BP}+!^)G#>i5>X$&gCBdg?Q-;Fe$E?|HU4WQcyktj6kH4RE!(&#zg$++wu zXvl#PFS^W4niZYV~c9r0hzEgj^bKKyv&}tGcO1SIKGnY@2@;5B{QEA>!&_ z3Z1zFdX&2TmfXnbJI0X&Zk`e1AUA@>%hwQ3BA4CJbxVV8uR3dEVU)V7>KCovhUUFA#{6FMSa@eg5Npl&JSCXH9cb@0v; zS~p*^?tXss)y+F!eL2lRFIUHW*DIdrxbaNEri)ds^yW%cze)KNT9xy7>V*ltUY9A} zf{_5_jCOM>Fe}qoIV#xsvJh1>5Vqy)9m|MS&MZ13yf9_AcHZxb)b#6sOsQF#LYd>q zphLEl+n<)NAY1Lc>m6@@BEMU7l;g<78~48+Z*QT**3M_2@jFH@UG^3dzlTvaE>tX- zp>MbD?7HIkhV&mvV8fF~JMZ)`7)<*8uZ#EYXrTHmYjyp2|9+R{$b)yU+Wkp+uub_q z7v1eZgg9z3yhIJi5b*|C5=)t(~2n=R41LZ#8t8MH1U%k|^AQkoC!D zIB5FRg~a9(PCB#&*__suj5?y{H;bW|R+2uMCi-CtMVlI9sgx^maw+O%$&}MrHhsU# z!e93Z#L-G_CLahG(!BDdS2`dJlG6>XDz%1t{7 zb@5rY=XpkIea|x>GY&4NA`po|&u;vgmqJ(rOf@gc?)*6_fDMHO@&5huUD{2%$87|n z+P!`2&h4-6e*V>++dJ=hwa|+3Fa{*9SM5=O+r+rnd0b*!kA50d#e?GM^Jln)I9Zi; zDSg_lWqg0tZ~cFqksvtZWWRRtqURdbytn=Xz4rI2C-R=ouXtf6x^$0D?ZKoMAMiyJ zS9QXaCaeraeYngxb;YLp(ik;QybiZY+qwb)e2=4kr^9gi`08Z%`VSrp>>z$dz>z*G zl=sM_I+L6XQ@dMySU^ ze!lLFPxgR+yrB5Le^EP9KlB!l{r)~x;z&jJV%wXL?7C6+rl^xFnwpqmIz<8`Kvu$X z9Qgt0-?#&LM}95g`!&y`KDkq$QBJE*=aW0joy*yDl8&TA(thZ8mq;PIw14XLA(%ZH zz8Lk68KP6zPNp&XyjH?QE!Q@9^i}$$gvu=pT}aCJ^zZD#$}zd`5ElOJDFg#FTv9+# z>QPLpT9&nvtJZprWVIYK$Oanujo9d!82ACGwh12Fi1P`LU4sSB#Fc=W2GGyO#7_25bB4ZncaJ``KD3U~f#a)Fe+@qyr+;>IEh>Z;z*wDYAE_ z#ifmtmWEI`LEz&qEPddi-5C^!_tUbc+3k#`v5Ux=q5t`3+_gAu)R8EcX?$su-;$PE zPT0+_`KUKbUk7OyrqQJ)udRbNwMO$)s%2XlrD`qVEGYi>e~WicbIAY6YwFt7+d-!o z4iJY4R>zildJzd+gRrTHUZ(PE{$3^Fj@9>J?Y>k@hYO$>;d4{;Q7KsgZuj8IdM zx_}ck9E#7RIuxISBciDG$8BS)3UNsi7sXXAjib(P&?SWq<((W^e-&L5SmxUKCif7l zR0cVL^H{AW!z)oYG#8yVewb%I49vM{VG&LcM06wH_uEwk^-?45>L!%X(psVE&}&fm zJ-ZPL;v_FQLXc)Br|4T~;*?^!3Dj>y%|@ zi?*4xHNkW`d287(mBh8)O`H^cwk?>qaFlX}!MQoASQjg-r)+ zS=9c5&O4R*BTc)=@}e_`O8nzei~p-U`fXC3d}w;{`G&PN#dwp4_pA07__KkLES;6Am zBHpNnHsRu~eYiNwLoDWYaV-0Qt3K=s7fpdl+b;30OxrVI?APVd;TaCe!*b9Wy*(p? zSk^iSy(R3cL_L*?LvHuwO`EDwF#f1tN!K=>sSsZSv4kmpFkNT z{|w;cafna!((nG_A=#tiuO{Ul8ETiK{eJIgpZ!Z(|Ea$DCVbc%@)2Bp(sG~ii9UZu z7{G%Xr(M{lJL=Ds8&3Yt>P@#t<bUn}KW$_R@v>8RN`yJVuI&e>EVu|Stf*sNFjX=af!qXRTAaViqqlkt!oqsa+8 zo{|upK<51aPD+Xi5NA4IkLbN>@&cNFnuiJm{%^|pgcnLJ{}}E|FUrv#XmJc$PdioZg6RO_sIxB$>$QFUWQe~n)wBc6xs{FlugsqNGd#bHNOa1Z~i^WVEEmO|Z z9z?WxMNTIuu+2Vzy9G_^aDb)u3kk zVao3_C+>~k?ww7JuxNY7SVx{aiygIQ`E7EvW!cYt9Hl4Vw>=oW;UH`(jZC#-Lq40~ z)78)-&gh?Uc$cHNB&^|1x(#LcTb#YqK7%!0yP<&l8W%Yp!7mQNRzn&692a^qJj1(C z4MpT*T!5s$hV1ky&a6Jv4F&XbT!4}bHvsTAe-jWVPq$L%f<+{R+^IVm(cZpuG8jgHNId|R8;amF>1E?a#3-tvgnWz(4C%eHhWz}^WDopAe>Fxf za%ceApgLXGxBFx<3I_%E=^e{nu!qHlIW4wYxS}{2soE#O#N?!7^E(m;!GyqJ7@PYp zVl0~ESOWj~y=-m%{UdP&{`HgFz5K`DcvtezzhhJJkB2T^7XR^o+#cXRe&(gmKOga; zmY;qxx<6%+$seO*{x84Az`q`wSb>tj6VE^YV1qvX>Ci-&U8niesi zpgwYnD{r;!>uE(AIQ+nc9M&sT% zg*-5&IKDQu9tj1_RYchu>k>&}N-dJ1sl18}%@t^lrW%|W(OiMc&{ST;iss_-9i^2` zKKE=+04qk_<_l-Y{E|>4f3_6`5YND*iFH~FgD5_r-jZ6r8tqcxyvVZ+c_s4ZVb8N# zOur}P_&Wu)u#l*buTFkwtudlxJ3G6paoM6N zn)dbT`i(n%KqY}{pc5(wWp}Hw!~9!0{sjuehlAsx8t>#Y{!&sLQWDyx=i`W-*p95okgTq2<@jXStvs_3 zPry2|y)9T_+5IO4m-F2(fH0FIJE#F4c6s}pLflo`++QNnPU{#NOX3*$NT)vIQ)GD_ z2=AQes<`EreHGK`gto9cqV7=-u&Gq(D5SV^uxh; z_|IPXdiz~*)E^?+A3P=j3XZ{jkIIwwtKM)#NvBvaCtE&}Ec-%Q7U%j-O1^FR4UNs< z1@sA)?F$JIDsa*tQ&=>f$*^BA?-Vcxqo8`QHfa9+ADC!Lmc>!_>08-H>_qmQtZb_- z;9kSm<>>o%g`m3lpX@K{Z;PVn`YMz4<&Qa^K^D(HusAsK#R2XobnB*?^nc%kYsJ55 zj$GG8CGwsWD7Y973jyN(y<70AqNS!8IRQ=V7MN1|0e^-AUYf(M)7wx(W3~%i^Uv+0 zvj6@f4XY0bdD8Eh{)8zTBd#Z<=xM3-)n#Q znRM&Hcm#t8QWU7M7(4z7jPUHne3la)Q7~?@nQqi9E<&SZe0Fnsqmg|YoP7O2$T2zi zCI8p$pU4~eGj>eoU+F*z0ongkF@WD?yN{4eK_6KBY2SCre;#SK8thnty$Ktlj1Vju z?>Gkh^(pQe&NI#z4P_n?} zO26=j0haT#fo~Tg1nZ<*hlk)u5baRZPZ{;nSsf}y6bj0RD!6RtZGB+z6WPa*MZz8? zW)BhFM-Zg<&hXxGZ-Ch6)p%bFc|e~)o?n*t$ZZ~a&gSqY~+tY9ACy<&#{eD z8R{HtI;~;>PMsD#AG1ztIS0Q^t5}$2rxhe4nIVj`lO>+)-N@o~33kpCJDq@!dJ$|k zem!iJ!U3@zS-Nc2yz##$|GDJsfp6+y5ip z{>xtrbFhI3pE!riAC+G~;E&2BGV+{)UR1?7q`av7!pD77IvKzWAzyu_P|5_!+!&7c z%ilgcH-V*0_GTkrNf?g3%Oyt628;U`u(+j7I5spnr-|DcT*A~dyC9!#`husC9*{%p z*ZjxH19~dy)6S@bbNG+_lA^cDmkxh9ggfqW>#*~`|9g1ywF_Cmuec4ogSLObZ9E+I z$GtPW0M#CkM-{)v#IaitMv)_KBM#?Q<$SeU@X#a&-tW%NwssJ-o1-sE>{vXwcQiyG zq|-gbW_xx+Un@kgLW%uadt%DD$;($8r`$gj^}0P8z|R+zWgdzOJ<+D*J-??E4!l=u z4gKI?x47-2T%ufDt-b(16B%FfZ?ZDDWG!%Xl-N035_%Nwntuxb(Zz(p^m{eygV z_h?jDzk3Rfoc`>F-x5BGbFz(!Z}~Mf)EAmE@ley?nVGPeeusn*l!$Kiu878w?uO#M zj}{XJ%uGXNO59r^90qxw_;oc8Sq|_;QG5|gKz65u3=6L^O~z%{$CL>3lna;v9@~my z&`=bXP((Joc&4+P?`bw-MWDTHV}aMJAA3IAcdnZqt4j>|}VgW27 zEt=fs=Y%8DTF!w;q*W{oN~9GeBbk9qJfw&!8wm0vh9H-<0>S~X30Xl=Gh$U^B>FDA z$D`7VZE%SKyMZb`2B=~gb3JPtM@w_R#1^`m6FzH0r}E>XQ=FEc zcU!0Bk{vS7&Q7aXbaSWW7u(-y>0|&iwm8e&)#hCO7|!Ko%=L}uyEm%gWYj4iBa-Hg JgBv&A|9|gX3akJC literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-46ef.671cac7d.js b/priv/static/adminfe/static/js/chunk-46ef.671cac7d.js deleted file mode 100644 index 805cdea13fb17f2bb8e378d39781dd66816f6f97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7765 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 diff --git a/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js b/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js new file mode 100644 index 0000000000000000000000000000000000000000..bfdf936f8720ace8cde0ea0fa02b82c8ebb69d3a GIT binary patch literal 14790 zcmd^GZFAeW5&qs^p`e)zIiVOQX;N1nHRGI<>D|?r8z=5`#?@#j5|VhP03Hb1ab^AY zJ^=V8l8R|N&Pi!9c`*rqi`@r{-F*P-GGqb2bT8>7_Wbjo63*gb%d_k2vytt_X)?FY z&WJxx*?Ir<*nxPWO z1$7hYN$PrW><08A^eIGKP&wxTX0^a$HNA>3O4m{k;Lu_1IURbIZ6&VfE%Vh=t0l(sl zdQ?lP&GE!6T~Hirvcric#&Q!D{WnX2m^#+Mp_9`5;VUPpO+6 z27#8HI7_T67@Rpm&qb^X4VSu@h%|<#%>&{9LQuzjRNY0`)L?SD%N0B2pMtT zi=I4rL|wrnnw*KzlPAT*4dm5K-7t7G1kS<$6Qx!Nm;w>N9zUl$Yt19LCTYa~?hJY- zdn#{m0WVkgW8zkj3TQq~&;?7v>Ac8GNAcBsV}bR`BG0s-_m=_~+q1&$6}HY?#rH53 z)_gh6Zkp<-(8CrROV9pdm0M*tCu8~ zTm&aHp_OdNfb8awtAI!^a~j$gY~4n1(lS|soH0*Gi%i7(L((Of!{=-oip8Pt^Azc7 zxh34$5-RM?M)j2MAIC_kLpIw^3;kf`ulMSA3ond{MYc^Y8>s*gY!}a9%?FVS^3Pe-LmU}uDxZe=$IynH>0|+J~Fbh13=kK(< zv%Xz~DiVjrhuQ`6*Q1Ng`r3erTK_I0*1FW>Qj5L0m)=^g<`7*(Grjb#)go3Vc;@ZP zmG_tAbVN{}3V784$G4l66 zQthHThxMMAScv9*8ibGymUPD#7WohBWxvQ%r4kFODh#oJs}|6jsa4tb)1o=CNBIan zpyEs4^WYXQ`--6KD|^4A5lqsL?>ue1X=?^q3o|4|}E+OGR7`Nd6L9 zN$L-jaw2UY zCroTeKROFp_J3e88`;S%L{xnrRJ^uyqqBT%oo{RFwWxye{v4%zq$o|`ns@=OqaG)q z?7bnZSPxlLJBfHwMIJhqXoL?_E`0h+GQGqk8u0@5HWTdhXM(43n-pvBjl4y#%8svN zGi<(LSNGSRJXu7`J7!wo76)kJq?X-WpX{j^Dr>lT%J&g|bCPxU379ckXE1V}+xky6 zKx>bn+M)LiaHh`i#m9(iy&VCX7I?fc67M9^?mUAXhnjW~rz{E+9KYNVv>CUS7DDeN z;O;Yt9mibav0%bK?+DroX?GH4cana`@s%CBInf7mK32}o-v>w!+12-f(8d|J-G=A=rqc46Od6qo_;JV(btR(7y!KV#r(d{~nDKFF|=663h!1S$q6;3T-V z#Ld+BF>42E%t-RL=G7!HDEYxUspspQo$WcVMk92}?;Dl(lnPx#Vs-VY?UEAg>8smp zhIwB&Eb<*iG1I`Q|WulN7r{+6gyIR67o6E?5_ literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js.map b/priv/static/adminfe/static/js/chunk-6b68.fbc0f684.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d1d728b80195167c0b5ac2340fc506eb45cb146e GIT binary patch literal 40172 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 S^N0T6#WDPlh3$of5B~?s2iXt+ literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-4ffb.0e8f3772.js b/priv/static/adminfe/static/js/chunk-6e81.3733ace2.js similarity index 85% rename from priv/static/adminfe/static/js/chunk-4ffb.0e8f3772.js rename to priv/static/adminfe/static/js/chunk-6e81.3733ace2.js index 5a7aa9f595ee50688557bfb672fbcbaf2733abb1..c888ce03f978fc0f6b761341a244d9a743fc5605 100644 GIT binary patch delta 86 zcmZ1=us~pf4U1W-h2ca8FX2?%Obw+f_wpzuO`T%fOuamf)QNMA7>hSvIL0OjmUMD6 iF;vpD21`v|&Ymg)(yC`{Zfu;GoNA<(RjikrSO5TbP#PTo delta 86 zcmZ1=us~pf4U0)yTGB)ZFX3X_Obw+f_wpzuO`TNROuamf;)!#O7*jW1IL0OjmUMD6 iF;vpD21`v|&Ymg)(yC{WYLRAaZf>NPRjikrSO5T?92(F7 diff --git a/priv/static/adminfe/static/js/chunk-4ffb.0e8f3772.js.map b/priv/static/adminfe/static/js/chunk-6e81.3733ace2.js.map similarity index 98% rename from priv/static/adminfe/static/js/chunk-4ffb.0e8f3772.js.map rename to priv/static/adminfe/static/js/chunk-6e81.3733ace2.js.map index 7c020768c3c45075690a911d5c90e07486de6b8f..63128dd6755bb4b6ad03a988cc5b2f06502f51a5 100644 GIT binary patch delta 25 gcmZp2Z*t%8m5awL)xuEE*xcASF*$WJBX^?&0B`yS(EtDd delta 25 gcmZp2Z*t%8m5awDEiFmUAk`wx*xY9b&j~J|B0} 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

C>)Wc0 z7E-pfQ-VU6Ouf7l7G=0os{!>o3MO@xKv6NExHhAhyH+v3DB~-ln8+w51UA)&(atQ{ z7(7W?lOMtVxyNF@F)AHD3 z&oH=R8LX;>!&5+kJ+yw-Nc+0BrZ>wRg|2!mm}Lk6MrPEc*!Q*i?0cFd>^-!0qu~^S zNGKrQgswFMp&;}8yz~F8*LK(;e5+Nz3aBg z3%|;eSbeg&PrCNub^)rLD~@~W0v>Lg2#I)&S71&3Z81BHTnWH{Q`)~Kjupe2_Ae`0 zUsk)ni=dq~Red$;p$ zd`@YiA7YmUrQ^>Y;%9gc5`WInguaqe;6Seq+b2Mh;jKFL`gl_VO=yXowl);x=c7c4 z`X~ryQbXeUA5NW5*?&_1QF{9xNqPqJ?_e4p4d26sSL~|{eGlG$R^ERHdOaGnoBNXa z{j&ryUt52FZ60%86@Ne8|6ur^u#$fVZGI08p2>N|zQ=aFVji;Z!SHXESB7wEJ5g<3 z2=cF`mqC^ZgCy?$eyjG>;wkHU@XpWcrFwXM5A6{=pNKyx%0H>1Td15*#C(FkE%gawFY0$Bby~lx6Ie6Tkku_MhshcGqIH$M4E^gme7}E0wyQf; z5zNX?tg8!j_`Y(a!&LgT-u6U|0G5?a1d6v40T1f;c2t_EDc)S+!h+hfyGInoy_e_j z2)p}oWojZ;}RB*B+crMuXsFq5MOoQq}+b z4Q*BIjfl(GbX7JR+OQa%8``Se(1xvl+|Y&m;^0^M1i8K7)7Fa3a3 zsBW_3M$o8DO4YguP1S* zn+E5vxF;!ijJ-$LC4$|F0d_V8vhy$CGPz0IoMO3Nl2LFjyO=7YNykud5MdKe614+v zmYW27yGH@H0uGZXE98-FV1{}rh+2}9#-yXY49v~1$LfDz0Y^++b<5c z6-CC&(+HdCu7g_A?M1^dDFs`jmTZ};_eayVFoykfSd|!eWM5@)5YdUE-r%QTyB(8H zil=%qJQ+eC!7;fClK}f5gHyM6@H8-M3j=Jhg5$OOIupp)Y}cv?l8bN>6gH#=kAg+) z3&c)QVh*@5l0sknOR-A$Sa5?4eTmcpRPkt<1gE-t^OU+lzk%I=SykBS3iPW%HCT1% zPIVvXf7v~yrvX-FVlx_kEdC6E+ayaW-|HULKzD3T*VgiWaV%C^JBH+C>2=)Z97UKouC=EgCy=?=Vj21uFy%fV(e=Q z64@{tV8_`MJ2RY=Cz0LBD;2yiuY6d&dcRu!B`lwPKsE8L)yO8+FQU~PqV{9tGyn!M;Kgw*nUU;;!n90%j=IFKMWOzw_%R#MNxucbG{!fC;j> z8~&8HOcazhNTB$PME>?Sc{?OEc(%@9X>k&z)5#FX;$(4oX*pjhJxB9aZD;jq{V%yY z9M!4_D{iy6#VJ1BHXyU8n_Nix`%~NavHkt@!xDQEIMt{%2w`gQe%wnw8isvwt&+Tc zf4%ykvReJGBx;q72wbI=6o(OT+xoJghb@@aXj~_~o|duu+d;X<2g>WNQbWCTakp4K z#RR)YPeS__#U$Y%3b^>3j#>LD)A!LY%Vyb3d~W|dNZ|hY3O0q8KqvmW9rO+q4|DR| ziBk3aZjWsMUTGUc*+I{@LEP`h5YlMaX5KIjy5R+S-hPN}0d!z+;36d!J08YY0eT#G z&84;AX*itXuz_Ihmj|oC>gtC47aSkemn$qGrGD3;fj$o+?%Ur#3mOJS*y zTG-{;83E-M9yCd9FbO^>$)C~V(I^XiNrl1haI=GPUrI{pMg`$#G+DBp)Dox}jF*E? z0u7`K8ug3q+nE5dSXJ*j4Vg&xsX99 z^CE~Uo4Yx!A&78Tf^BgsV38R*L6wK)#Hc1}3pVE`M9A*UgaGb~^tMSRYKBb}rCA9M zr_BThi(p^0pyJLG*y(Ngt%VVr395{LkgAnDL6iwQYuZ2m{9=Sn*$6Us&k(%pK@O*) zi&HCt)4&Kf2q%y<2ZyI6E7Le@XTqlj_4}`Bze%G%@BxrSNG(l!K#b zPwDeTb_H#)pcE!2(h`Cgk?N}9#_`6)v#_7|Ot=QkBDS3iGHqW*`rP6J?YDX*_*678 zw0b~Jvx78FZ7XoRf|k|OOx}lxciwM>uz{dHn&1e4?r0IFKLOHyq@5y%SDf!a=ho^a zGQ=`c0^{Yhi%vM@IU<-y!47{O3W6tbnMqaqLUvb(UvbcJ1gaEM`4d}e$TZBw0!8sy-<3;;eZg=MkL_u#s}!k2C8GV}8lzHHu{XUsF^`uj}VevdzlE}f#Y?#9qq z?EcYL*DgkAFD=A-a2#-lEle%YV9@7uaTpmWsMj_e4u1k#K{&vZ116cp}lv}j%3ST)Gk@B zXa$M$;v~7B~C=c9(Ecrg!~yX)rKjkcBJQ_3XrH!~MDjLaXO$hs(=dw8@NG%0)QzhGLnm~{o zvq#2(PKk;A14%f-$jl`eak+Qx(cLSX84jRw??hOKW{!}aOH@N;GUU6OfwY5XoXQ^1 zrPIH_W{b&Aau{#J-XvlT*mWLHgW-|0opR)u;e|MJR>jH< z%*35K`l(>sa{qeCR9F(4RMUZtRW<)y?u_1emRO!Wc;ABvkrrap>)_PL8R0&tn9#Qx zMs6b!#SghDTs;B{xpAG9wsdF)m7v{iLk?MRC-m6k)QrlF0J5%uVYszN_WTB)83tO& zZ?jt5Fwy&5spL*)%gcpoC$+h=-#|ChFbbh6AY@^ zS;FuU)n3HuH6~*c%twsIIAKyoR+katj{vhYD6ZlHvYZu`#7vXx1jl}!i;)3}U~ULg<5EY~lKL3YqmFF;1Dz}%S=G%qj5kP zKVZ_|Ve|;}kEc}EzT39_lu3TCWWX1p@m4Y#hePd)+$ zl>+=@&Q8V9=NppKWL8D7g?KJLJL?n7%r+NiXrAWW?3U53r%46@UaBW2vgeRdU0KDR zj(k1xjnCG^wAZz|+$OB{0HYVD1CRGvJ1yFtkW)Qk8 zNJLfgAsf!+=b+w=Fs;Qw#HoC+IW=9U0N-;d$`q$a%J)6@k?8XBvhvLzikLBxV`R$~ zTbaX^#C<3-U!(C^Zz-yDDu_@gm|8Eneg%&@9fSv-3Un3W;gmxeGdfva#snz4UrE%@ zNK1>0%coL>aPlYT%$|dPEpO(_e*UcAwPeam1jZ>xoG9Ds(GY(Qepi9x_IWEi)HtkQHZN8WlI}`eeuM=pFF>$q75aDHezlOm-<}E%* zv-_Fde%T`&J`#9XX64Z8I<|M!`p6!A^bxJS?2e2et0?wcHE3%y4YpT!(mh^6Q{nNxgdVmOae+XICB zD*yin3?;9Vo*!@L z%G`^}ch>LDE4DktJQl{`x$HJ^UV%l_pSKJ{kZ%``D&H<7PScf1k}U06rI5{x8W$iL zqzjTzj79CG2gVj$Y-&niWnD49T30bY`#W8elJD>;QYY4Kz{s*GTMQ~B-9j-=*w7TI zEij$dBLr%uI>Eh+a!XpvN`T-8h2$+yVy=mBrdSv4%$Ek};>tlo4-l>tge0%%#g$%j z4Fsl?j^OP|Btj}D`*ETdLm;!P%9G`D72XkHge5tRU?F&u8$CU<%lbG!Hv>ET`%M;E zy)<`kD5i?sII*<8T*@l_Em#Nj4^63!03_O#fj(B?<7!FEC#jd_E~{swiaFUFEZAro z8L&o|{9#chSGnqxt9(7>@Qx51Z~sWfUGma>g!fARocq5Bq$LnJ>%P)x{q1j!?q94p zeqb4{SjU{w@^6jS(qcQlSS)?g_(IOY-#D>%6W~J}7P{luQ!LZv=jh4F!spWaZ!FZs z2Z;!0%FdMSt}Oxy$Y@+F$xk9bKc-8IkdC=J0$;HzxwpmT<>e2{B~uOyVNVwD2Kpy* zO;8z&h;dKQ;_`>m+Pqxfz~wN!m_u#UFJna?7L0yPNK;%|V6vVpl;rw=jZY^FG8e%$ zkS7ZeEFdQf-s%04s24N@&Ferehp=}}jYQm|p>HWVvL~EXgef z%b$#4Q434&)fB9n@|f*lX&Ri~-udyH2luS%F-qp6D-Dsg+Z z9s$_f6`%qU6Y4hwK7U^RybQyUKXYshoXLF*U$cQkuIcdAU(~f;smas&VuL(r6@)`Q%-k}k zWGY;XAz8LD@NyY)w`2&I{_W2&9E|O6o+E?&IUR&$Lim0y-q5s9 zn3UI4@V3nxKT5J!sMu&MhBEEnwjK03S6Rzp7KnK;hG1CD(B89hWC2UIjtcWGqy1X1 z4nL=zY5*_2B19%xZu5bEdBtUeEB|n7+neXPaT^JGefEv6M}l0kRIrpeVDEYp!;5!O z32bc6g(t|zu?2wc-V-EY-2*I=_xu<<@{F{E7owOnd-)KO^?nqj0}T$6E@7>FCz_P- z<@_qmEG>UM%1dNH3Fl??7L{f3)*ji9H2pJb$(N@Pz7s+ICKkiSygo*K0{wzmL?c>S zMohzqL!*ZS30xlI)5D|S{RhqrYM6t?A{x_RZJkVGWEnpr=K1!GhD~-N{?)oN3WtC`D~-7IDfktQFSsbjXV~KP zgNYguddbuTlCl7;7$!<-Q~s9Rv++IXnV< z5`4s2_3V;ZdoBpf*AfJV4imo3KrIylw_)E*E(robtHWX~hU39saT8HaRE`OOs6k|D z$gClo3?_*nGZ7n9W&GxKd?-<)i3zhzS!n2R-eO#{75py5fVW#?$CCxiZLWQQ4~8Hn zytBk?_z@eh-WIWCBF?z?A{vX1Q5~=lVq!WALI04y-VE6ey|B*aE5vrll|^ae zGQ35C%Cp9)w)|IGRp8_Ync09UXAm|~qAZIwGjtabVRnJB*D|dhF;ynS%+3kVr4u)V zH5h~SuZCth7XZiV0yh(i!H-(<#JF>W8CWKkM^c>S$Xob(UFgCVYQ4lr$%@UI@tG9@n;zfcw ze}WjXS-HzJk4;+4pTGy^c45_e4Qd{xgcWm8zRzUfEQ7L;&Kz2=$<3*meGq2mh_Ga4 zMtk!FCKF!V)@1%!CGvG{oqIYViEaCTvR*?45X{tV$-qd7_4{V4x4~vI67Fv8%Dq|S zr6oB#VVNK19Ya!jj#FAPli1iqd2e-9UQ{6Fp4dYDrfuL<7r8oiX%YKZxsw~;TSkip zm9K^@;|q6%)0gu-=7qXOptCw80QDn!OF5R>0q%C zgZmqnD~OJ9BEiz)JNzr}?UlE-f+tTl2H4AB6lgrxTuEozz=Swf+~H&%1V0=pH!6BN z?vm42z+tkvCf8WD^N{$iATo9d?^i!yzq7kY7dqR($2lxgwdNHB2$tk#-LKKfOJAt2hoN3XSes&*yrX7zugC?2k^Q4}hmcxVI^ z+TE*W#mnE{lry87ixDUE-?!D?(`ToH@?35XW@+_UNiM{<~uA<2QUSxHaV z`?g8z33sgzqHKir!q&qx_BeXwe0)|VH%b^nCQGzem6CMJW>Q{K^Yiio&h`OE#$gH4Q8DZ8!;G#^F zMMFEm7n2HZeaGhspn6tKTS9?N7T)JU@Ex1U=fnNGegR$5 z{O;3yF}Ym+Heml+Ax~c3>E?^c<@2`z2cbghqk}?iayk8Nz{C{moY#-?waMl6T5J}W z;%gd()qJ;iKVM8Px4#AGgjJNW5%A&Tt2aJ2UUjRe3XmqhTcP?V54X3x0!$a~^v;JE0}XfEuy?Hk| z_pxOXD?qq@g4LfNNAJ7>5ihfz4;hvZcNB6HUicm^BE%J&1%^{Cwl%nj{i=rLke8I- z2DE0jzx%FG%(JvvV5g}F_rvf(zP1jpbH5E38~xsG@53QGg8*-F<}T&{jTl=uduXV+ zVwogofkWfUnrmCIT))^b^JYb$@dSUgr@5*!Pf&yyX5)8L-#JA|xouF@&u@HpE)XZ9 zS>V(leBJ7Q^r=qD)2u1a03E_29j4tp*gUWM*m!-rYN-gZc2s@3=NIsdC=WR^jr{!V z(68YvYve@;42_MV6ZJN|8qRok`h18H~kA*O}J+gm8=Na|$Gs|Xnlu$jw-9$U{Qe!tlRb;lPjzLMDHRfHH9 z(HzHqkQ=8kZWVj;>Y3ji3&dfY0cMaq!gFKAoA>U$@Hjcothfj<-EDeY_rr(tth+5h zdZvcm&GZkihF(@f5rSBPuBiET;CExaUdBTKVl;SvbM>8HL#DnW#Dt349RU1qtx%>5J~ebd<=)Gl9n1^QV} zUxXMQlJOmM!LDueGaiZ%V}egF`fvOKSua(D7}J=(z1;N+WTsJo42%bPc65Vp%#Nf% z=0S=O<3YmR#CHgT%!3pm#+JfYy<@+I%$AA}<8x~l7rreGGM`(77+dPUOMN{IGFvJ_ zj8ofhuKMj^kU6y?#Q2W;E3f>nd61L`#%TVi?Y;E5Bg8e98K8p{5gL8(tR4ezrj1PB zMTn`sI~qRr3uJW{AVXub&HX*!$cLHD79qw!_Ro7qUJb*{K#CBfzLjJZ16s$!u#X9J z^(yPvJ>PE$#7SfZ=paReM(fkdn>tL%#rm;OmL0eS4+< zdKTs|&VU`Hh}1Zu)BtmXuqbqGZW6i4>kFD`37#h0#z0wguT z#mnf}@1xQzxF|x5k-U9=@xrSCD^x5GGZ53FUaw#IOr%lf7mFY>m$rX(ao?{an@cM~ zOh~uA-^p>24P%NBEYLS)wr*m-?@S4CyvzVip_@Ce(Yl;@rTwf(5oGLZYxD$9S&6K- zDnf3I)!nQ;_FYzblNtRC$OLeguX;HV-}u9s^yrR1NtYU+<8>D9Kn1*0?7}m?_}u~5 z0y?$?;))f4ru9$4=e{VWS?e!CjO>obuY9#mGuag(W^Uy9DCbnCH{PhO_UisapJIhM znrFZcQb5WHDK@odhmU=H7n$=bK(5L-C4Fk=PpWV4`Q4}my4nixYtvnv-MsYsKGu)&(f1_f7bKj@iu1m5IdC-AsDBYjM&iQJWO4v{qhazj zfMSY07>&kKEaxrZE9)(_`MC7+PJFiX!yHVN5xz{1d05LwJrxpj{6Zj4{E*W{CzBDr zY%SnaP#&^@{ork0W;DfGjzw%$SYb*0Jz2mTcj2;pgrk>nvN)EQ?CozIKi_V=*gtAK z-ame^C6|yOhaPb$#~7vjR&03%E$@Nw0}vrOFP{q5#&bc>Ei69+R993vY`W)K%8^Ui zBn-?2wAhzPx!O~rW(vnWNoCkqF|F2ec0m~UY zz;x#^SH0jI<}@DX_G{4|IiQqHM%)8}a~gRBUQ&T1xG<_V9xpDJ@ENC%`(L;k7I`uB z#^KqRF2Z6bZk^L@%BaEY3oh<(&MneFlXKg}+>S$>#5d%@d)byi+$+R(N>(yTY*kqD zGUUEy?1PPGc141Y80)^uxDy8@(V_WU`{wMGV--2hW4Vi`73tDi?1f&zM^t`z+7_JN1~=WKU0^MG&WbXt#hS&1z_lOb^IMNuz0bWu z+Ir-OBxG_;!Y%qQG^5~mIq@1Yz?{n z3tke%b8{VyTj?5dCk1*u>n8m=uo+m_hEbwe%g1w= zZ&^lp;1Iy&$u?WN#uXLgv^ZYNwUixCOmrFxD1l}zGn17gv(3a`;Yv3Pi6zq(Pn_`= zSDVZm0mWaL*t4^!(@9D_x4{Gc{b{L%D#Nr*lc%3lVY#6 zu@Ut4CfWY{Zx6Qb1e@VWaO-yVcM$DNvR;|yS*r|_Fm0a%lOmZb%5mB&gGUGPcrNRv ztzgi<{~>5UN;_FAYj@()Fu3(8UY@n}{e|~W?A8l;zi?Xv?CnqY-@70DNUipYV;k(< zck63zYkF?j1o=?L!FP_gz%y9M1JqzU9m+K!KkbZR7yfo)IamHzT8oo={pLvRj7oOtfzu)fp zijVH!^A#WOt~$kjbl1wIJ&V*o%a^l`8_hVYEiEUf-_vmI{i}Un@yg0WUokN96;JxV zdy0eg?d4zHsd5^w_gC*a_5D2fc=&qVqGP>$@ziO18h%`P>eAr{$#x5K76cy;mTtLt z`dhDoGZsRGp$DPA-@JV8EAG8|;}lyxrJZprY3t27U&t4Oc35=z_8i8vV;}#u47P-0 zRv5R#oC=4l@34b~6Z(7U!+$dTJzy0k?XX9MZ*LPb!x8;GSbc|GJM6OxqjtF4J;~x> z5(Q5tW&SqJ_LK3eY&0o@a5T@>&2~jo(Q>9He~k0V=p5}%!(meHLH0x^u_EI4JRc-+_8}fj z%(c@#A?cTN%e}Pd5NR9iFM(`lKRMof#EA$@?I} zzRJpEHyOKKa)5JZ^!eq>f(dDrb$u~FL2yb#*Gr0G?J!>h?o~Kp(mqLdT0bpxK^tdC z+6|&|45cA16HwPp9xp^e@Q7hN8G%p9Dj&{P8k!7aL)F=(0rQlDn@~T@`W@nB`!pFq z9q|A!t;!b!9$E~lU3QEWfO#H`lYvwIShd6-$zZ-XOu;u07nkK2i%&47qgRBv2wPSk?b9&NqLbcU zob4Lx6EjmTmX2oGTt5} zZ<6D~eB7^<$4m}iBQe~|hu9*Mesq%96nsp}Juz~6KUPbfk~?8L=aOsR0HAo;v>@ft5nk1n%2t8^yDPQ$lC8U zWioE5-4RX1*3QLQhlz^<%{CS`J8AzXXdS0s8qce8SR~casF|y&k{AX%fgGvU|NKvD zG5PKPF2&_uXB@*nGiz2e4Q*B!^g_AxLGFU-i$ZTVV`q@WIhz z&tN7404*>c7u8WTy5*iB?hGQ9!PH=!FYP)VlB?d+G*Zylq(&Nguytk+pM(Ks2Mu)k zxa^FR{-l@axdN?Q%@r|@W#}2{gyukHey}pWPtYPeIVBzGavf|0gS3EgYtJR4qfOBh zY2;f>BhTJ^egQGfTW}@(xG^RCgd|JadrFFU6iBf-kI7F$Z65NXj8ljK7S6LbJx@}-`@%V1(5OaY-EqhniLw(64aKq}G|Gl1`j z@M(k$>Aif=PsULIV+(R213_c}R8(lVs)9{w5qeoED8>BtMb!KwDPX2>8#C0-OEVGNVTp}sW z!E<6c8ceXmd69%!=hv|qGPh}0kSpg6UpR)ssV$}Jzc#QcFFwbpabtSrcy7 z<$*aCEre`%gF!srP2`NK81v?o^64V9m~R$FKAN(8FS9V@e!p=u_u;RCS%dgzWt*LO z*2C4Ej@Skoa@&SXbZn<#5Dy0V;XHS~VGq7p4%bvp)VgunkG32?PR0CXP8jXX+3#*C zXU;R}w|P1yb#1%WU&B?%Yw562x`bBor7AYFPXvyYrFvOa}Z#&TteepH9WhH35^#_^`-12hf0n8nS)tSbz>R2q12*CT*YhyVuFDq3mV zG2vKDM(F(oC`uj+K$!$o!1@^{2N;{Azg14K4F_QfQ!SdMV!BamO0({KhIS24SU|}A z2J%FZ$oxiBiak?l@84o@kGE;Y0l)qO@-Dld2ym-6`mdH*% z9#%zfkMEa3DC`<&lUTa*hqQJP`{?ME9Ewk)yhv%?(O12S$zdA><8*fqCK}vK+y)kl zS>vx)4mVf`rTMf>2rmp00)3V`EU+_daET|wD#YJt*OxC8c9?1~b6*s+YD@gWR`bU$+K&z$p=U}kE$oiEhf3HzmBP*^AALy! z*EdMfgv>KGc-W|~U~aGF^lwXsOmqKlu;~X)l241e5CAqYzI|CvM|cqHwgk7F_9C;C zZBAB!2myeY59D%osDZp9a=7Q;a`;=4Fby*$b2AcBkL~CO+{<376ZoWzs0X~lHQwAS z2?}t>2aO+vbPQ2y63rH^6W(BHmO_T5h-E-3`v%KShcNeVa};>_%!8#_rcsvMKYuKP znd+4}EOI9}8$_JIjSCb;Tp-4vr;m$D;6P$Emm=bW8krF!P|5>$PQux%OT>POGE4_b zy72K9;?+>08se?B)--#KWD?=vw<$H$I!E1ME^)4yC2Rp^-GqC&Wr~I%Tsg{VHE{$O#JC@iD=NfOErKtuLa>w-+d(>vi(XzD@)?58@8>W!Bk2)g zlMITd>G{_jH)j#%}jlU(u?^&`LBPgl1k~;Axe|asnW;FTu)?^FTo-^<-=# zOUTT#b>X69B)3=uvNnL_^??_b7Q)=@UX??uQDsN(6-dqDp7|^s`+f7|pjR$$rW{rE zK~0hu!PrKS(Jp)~44ht_^(gX2h`Dhjg)4i(Od&i+?CF>d#kiha^K-V$?tFaE%II-~Bv7;W{f^Ylq9y5LsekfCK%v8z3wZ zNialjhf?a=DmYV?NQsjPNI^6i56FKV2GKAbCR=0+u;14tBS{c;hHB0O+W+!Qq;n@1 zy`uvFYO~g=t4NZ-j%wyEt&ay*Wo{1I2^D2qsxa%w-ANEIhKmvj3^c*us>CoYVS=qu zzKYrJc|hqI3V=)xappZ!()r}ic$ReIDNdCCaGo5efH=ThoSqz**|VL*QiYLu$+RhJ zr896f_V%~Uo;u5hvS%L8Bg$ZlK#vaJWA>%+9jE;O9$+~qtLBwC&w2X|Y=YUve8ykP z+*)Gh7CY`~CnqgyGed6twAEkWguq43Ep6pXGm7k&x^$xeqFhO^FZdQ<_CQ)zl;~VCXiMc6q z$FMW_4tBI3EjhM}Xjrjc-gcLi_3}j7BqCX4RivDJk7p^Tdp?;3ak-@B=8w_+!Q>(x znI;pG9a!Z_yHBo4E{d@h`9-$TA4J=@$|1>cF#<(FRD2%-QJg~aXC?VJDCTl!LM9wu zHXX_I$yh^e9?sDl9?cw zDVsmUXw!M>ks2ZX>l|Z4r%LDZaY}jEa+uAsbAU>Rqe0%+(@y@j2bYPcI_dC-D;=yY zUwgMccK=ZF;T1Wu_8#1wU~76VWySJ1KRSlq!Q_h1fptxf-ILLc!N9>^TJF)5IR6H$ z^l|cOlH&YE^wT2t27Owvi9o!(Z@>z?%d-R&7CbxsNv2P!gE`tSp{yBG+>y4O$TeDY z_y(#PvlIAiP@loS<^e@V?@g;y`{Fu-B-<_b9-kC>Z@;()R)u?cfph0{@RSaZvcFFG z2|msUz zyG3^Ru}-lv#902n1>VnC9^`-3>Erxo7}E(n&I{Q<j~l

AWGpA_Wdg_pChNJSJK+g!19q*09M?L9kPw6lu*+`uu)QQE z%p3`6`hJKyVBh3O9G2P&(=La9WOQ=d)GnW2k#@-zb zd4>s+kq4+mP!G#%({m@n8Gac}Je!@fP*2O&jw(|Lqkit;!tI4Q(0ym&;lhPTCQuH^ zz~2)!O=4Wjr|~Zlj-dyM`?)XoSSZR~;iYF7`~TV620& zt4wa_@ZcHwhbxW}C1*^<#{S%0Q99HMtv5}w^NqokQZPLl&2_| zXp-6Bdz-O#$cI7G5KR|1sWtmAN&t<4;}Ct{1I5(=2_M$QFTb=ZxG5ln8}EvvOMjc4 z=O=Y91Dzc?kW5#R9Vtb|aVrd(Ep?ag$rh-x33`qHwelq6j z5-UE`TLCIK-PfAUraQw>QMgf`@~d`jc5+UNPZjOT=@+ZnCY$dG4Uo+Nou6!vdxKN- zEs~pYH4=6e!^} ziaDt4b6iZIFr^!JDSI9NV2S7wT-ZM@OfQNtcg*Rh)>UOenTCOt8bmXQFIK`+wz3J* zb>?|CRW&urmr7o3q}d>EXQC4zTqmf|sqU$v6Cy~^H+A``7!q!PC#b1Qe3@x4F%*`o z-%cD=f$UPXz715Y?M99_?y|6bso<0AKQ$%|zSr@FPu(dSj)BnC?>SBIhD@C5Oace4 z>%w^AF8}MYEC@AbTwML4sHnErdr4@%T)7awJYRgv;WDDy5-MLe-?Uzq3sK&z1ZUeL z6Wef0&N+fvxSy~g*CmU5a{MVPQZHt1675s@z57Y|RQ{x7k+%oW2GHVPvQtlgw!_y{ zcz5ZK-%$8BD}3D!|B~Jp290jf!$r(6Tv>7kCaL+ZL$ni`mpnvAq3Z1g+Jj-aO{dJ|m1KYXk2>*1Ls{AS(yYm)e7 zJWMfR*ZkOtB_VkxL{7@NGG`b-ei7$vc<@Yf=pANWOUT`#0)cnzy@)eN!Ltum>kRh_ z(FNKprAAzzU*DYN(TF4g(T2yQ>zkNwbFf6d3$$Bii9e#@CGviHarS%ij9oTu+=px) zT9BGJ!<3z1U@-;uv;n+i@<7MSPE2>1^5hGDqECN2M0_jVl>V!_TDXm6BgK8x@_zBE zV-BmFHoM}PKe4CcQlKaf^OOY6h`bcUJNEjpP>?h^ zF1B#$c9(v9qKrlQW3MbnTSdB?#dv`w!5)Asa*|>Y(;vlQo)>#T4ONV{{0$Gu9KUn# zaS&s%kz4u(Q%|P4qF1@ZiPrAQ|VwxbrdD?vPk#{}NV8P7l6t(gbYs3(zYWaUW5RtujY~ zudj-xloJnJDHpz4wSp-veV#~apvjjUxJO-A;Z}cdIDEwfi_RLoGuS-C&`ulFnTE5O zd-=b|JLqoH<#T+d%j@qR2e%hkX>eOyO^0Ep8==p)?HHR4+hWGa;TRWQE$6uV_qb-O zao#;TV{X6$UcWv!&sx0deJH~PEH^tY-~Ai3Sb&9e@~ZSU?Zcl14EHgs#%6G!a+9!z z%RJOPqtw2M8#{rx03A<6*#aQJj*1ICq%ffyGH4X(u?n+TJx+0s_VbJMVgl|V%J4u) zKRMDj1S+5P9P+DF*X-VN+Te{cO2WnySGdiYoymQH3(??jO!{~qqlaW|I_GcDuNeC` zPE{h;L_Rb1j_EA+%w$Jz>Dm?Yw95+sTO#pMe8izncB9{n*^Y6ysAM~ijgs|BwquTO zVzOMuOP@0rFwb@z^K8fbve}L%%$Qg|PKNn`d|^v7Tq;6iu)BbU1I=<@jq+UC5~(Fp z38E@=XTPd~F*<>_qxI-fn?Kcri{X(sae!keS#pGrJ!CD+E#OvpdbCYGie`yV5;hwm zWz!TYhR8bO;z53AN%Rvgi=J!)RDp~aL#7dHH%}3YI%fxLNEGZ-a@aDm7V!rW*1gMv zS5EHeipgg>jrNFf;4UmU*6!h>Z9Jg0&r9!1z6j{|0li!R@8Ge;Yhf%uBi zL=wk@?zS%g1q%_5YTSZSvF{WJy|dWcT#0?fP_gLxv&uNrcXmL=`wbIQZ&b(#njpf8 zTMy0Bv$n74HJRdCfjGuveMjusAft1+BQoty9_Xpif)&f0K$KwZYo>d}`e_c`Jk=aak z&{4@)(%Gd5U|Y6&3BV3^2$^g{;ofr7SIpkZ!%m^y1h|jum~H^)7XLh@Pes8k3LsNr z)U9B2^hkW#&hfy*FhcT^2{)Ul^jJRw-o6q*rX7SRZY+|U8*A5I7RmxwazNDCpd zg=;$$2UxrIt-z>4VHVQ{XUc(m97`mam3T)J_nzy7IuULGCw?|JFD}Dgz=(QASIDwR zEbS{%z=@xyjZ2UPFTDTQI^WcBkdi$eswxTk$%59eTJXBYixDER3>H}m_Mqwsf8qi` z6?5Nr4|!QZ0&tBUP!T9}dVA@hk4;g}U+sK!=Ln`!#BOxs!^dVPHhg*PQEv4jF%m2k z-7s;A3~WI+Lek(I-Ek{Qxb-Jbo4`eZOO?gmkZ^yO$h%W5m~0ILKCeU&Pu;7lZ_Y(> z8`&PgBC|nc>KlI+GBQ_E!dFnx17gXT17ueN@fi+ORninopYWOV_uC1RI z#0b!pTI}tPYVw{~kO7Gb$pN*1D-j&es{BezZ0Z8TD!5r*b{;EMj3?y4H}P?Ph-JH> z&Ckln!|dq;XRDa9E=GyTNWvK4Gzh&6)QCA#C=gZ|AFWc8JC3m^IVV_{<~%j%-r z=I7vNBLI7OZ(faGRUa8PKCDS2p!C1?KHWM5Aw7R z!>Xa_qaPb=^JAb8aqoiF1v)_EU~miO~R z*kWR>&wjnaPm9%I40d8XRL$<1*V_Qz(2B?6>6h!oVXSaVb1}9ct-KgMEP4kTQ(IlD zz;qX>pNj1dlKQmm&9En>%C!^?#fe=3aqcl7)0Vj?w?@oIX>UhB5qqr1iD@mgE4Ufs zYwSy3cl;1~;*Z>_y`GrMr-YD%wv{9bt*y^uyOn!+bad3w|A?K4fzZb6^^tultfiPi zv$rvBXi03WNft9v{n;Ok_?LW4>RRxQ*`# zl5Y*t4Dak%i`&q3i1AbnS&CFmY8TRqqTnP%EB!~COuKZd+_0D!IAtWM5x|D#(S0KM z5Q!y<#Db8|fXG!LR)B#8Y;UReq0MG9NI6d$8ha~xF_b;M(~1Y1)$5^tl+jv7lA1wP zhOvFzV^Qy#5ma&XrqCGjJM*l0MY=FeDDkZZl`G(h6>v5uh~-)|KQJ`y%cQjLz?g4M zv5TFT-=d4^d?Uxc8W#^JFNT51WoN#+LPo71ZpzdwQ-0Lbk1Xy4cIcItB1MB#oKC9HP)^@%ck=>;SBGn)DeF? zMl zX-mGatFhY~2;dPACBW3>7-t^k{Ew4*_=-#!L{cY7@Q8x5Wht``;#=gA>s+XoMc&62BTUYL*!<8<((ACKUId@3BXTA!5RQWknTJ9_}>R5-vz z2|odDrIxur&k20dS;D`eoX~aEG4CtblrdH_ti@NkbP&4_0;zZ#u2LcGghKx85AC@^ z5FNoD4bHNP9REFBiH8#@Bp%F~`CGY}ZBNtelPk zZ)7H6m{AE04BDhtl=0;}b(P8*l zvh5@@G8i?U-1mkD7)cFzg#B5}T7jC{PB6U49Wl~K%7$Y-1P%)Mr<~cy4uqvW;6jX5`ZP%eybsA_m$zCyUNZMv44SRrGipu#ZfV~nMaFwOioS1nv z2x_r+9Hi}e!Bh~nyv^qpEOkWCOJ{3oWr_i%KaC}d0rVY!W*Ig(U&_xSvlWeh6#&U| zZ|u{kUOwX*k6CT@s~iD-3QFdq6!XF*Ad_}P*WX|eDg(i`BE7`)?xP={Rf`SlILa=( zeM?@<%iJ6sCdzPWi^#&kL*?2ly}>q(O||<}5?&-ml;G9GE?3u`Jz=qtOx?cB8Bc+~ z1umWHjx{Ew<6Kzf{LtQowCti9ydby>vj{WgYk1NtVY-yZ%ad)}-yk4FX=zyg;!0t0 z-)gV3-EJXKg!fh8Oci{S0^Vq{tyMf_ftzMK4rFPM4ojc65~hXS9T@<*dz1t}tUaUr z84bDGQdDP_xhav9)+#+@uY3 zu*`LBD85POKuG6q>zb9R(yNM2vSX24S1@6@Ema|EC6#n~>5e_=-6f%s#selru}@9Fe&mUe#+u#Loc_LizY zG5)v9CC2My_=mIQ!Y_pPE|Ck5l~{1g?$h(twTfkzU7=-X>xC=_ne?nUh3i--cS0>h zcxasL;AEfP{b(MmG-H0bCi4C5?=sI*C4@5lgrB7r%A<4z%b=^=ZFTCZ0aFS;qlnOO zm2OD9sd9)sg}r@>{o;Deiq=&jTdrG&UiqOBLJ63pPy+Un#%xe~@Nn*hT@N}z{&(h6 z?xjj~Ml(en1$ybe(-bMS$1=MMC;9fVOyw4XNlR8Rq8NNdn>PsIlmDrs!WHCCw0zdW zJTAMaDuwx23v+#S3B3$!T|clYG^F#&bAU9rOL^kOIEpc=AO|FCw?}HhUK6`L!TIrJ zHXue;k1aYWC0 zXaf&681@KPqse|~!l!Oa;aN1Vx|yzowp79DDmJ2`_<&25#rKWYqF04!Qah7!)?tPG z&vUz$9rB@RgG$#Ef*b%IT}+SR5z+IC2*GYG9!6ysHKlmyEAj9YxsZ6}s}b4Iyssy>_NuF<39vvwQT zktj!^p%9Vcm~`LV$iW{#4(@U}c>B}+_Z2zVzgBY4*ti_S&-m7e6cq5J2sFTZO{6C6 zc54rD2(`X8LaKr&iB$zZp19w2#r;z*B($vGE4!#BW&Kde`se%tSo3b@)r$pJa3|HC zk*=Fxxlv*Cxgeb};26SPQJ z)&As&NCVlW?rXX#zP%w&&t~jT8cH?cu&l|+i<%fw0bC9sKPdGgaR=}MPM(NE+u9K? z7mJ{Z?4t?vbq|7q8yCtC;6gd(y4&7|zdlxUw}We?yUFd4X0oHcnI9X`;3Pn)#L3^( zyH}5^T3&cW9F*a)@~pu|@GJ_}nYo;d$qcOvZ^skB-}atPI*rjsccIFCmrhSdu; zXF9INi5BONm{{^0sH$8&ER?c#8wad5D;dK=chvXjcoLbJ@+rBlsjZtKjqzM5Ob*M{ zmut##uAyC&;jFdfw<7h**)26{huiYQbY{;mn+TYsO#;4h(zJHt5T`#)C-0lAUZGE2 zbTaYglH;0MFVDYQJN?+T(_aX?NSo?gWf%3NslKmF^*{2_9?6IX4E0?Gsu^9E!?Lt= zUett|D}YNa{l?5<_wry-+?-0QKG*WyIclGAW&iMA?{!7l-~WcnzVD)viasqCWi^RN zulngCY6c0+!AXgrf&W+%;h8HD{$QK4mIsGr7qz53z`IB%SvlY|@2x_B zbO?}rHART-$)ZTTR@x*@3Mi*aMWuETwTL%5y7G}X#GFI5 z@vX5jH(*MdjiTDo{%)OXPhC^$B^H}Dq*lu=>PSQCXJtse$`G!|dPyV36njg4jh>Qk zLT$2-@jDOI`ws1E1ZapoNSyCttNt*}wo0N$r*b4oLuscwfMi)MRL}(446xMccM=?~ zd6lJQ8V{E9qNxle26hY2R1#b~bOgW^S}NT(Ll}ToI+b*$Vjg?O`~oS#5}HMmENp@l z2}{kZMr^ND1X8!-@q4^wQ^yDA^7VqZ!8LeEmh>M7;x``EqTjf*QWo?Ed4U4D+ii{B z4)bJ<1xTsI2gbECZ+gEL$vRoOgIC|{7$p>o8E@zr#vGb8VPs(w6Gp;P6Gj+)>rGuL zw=9mk5kQLyqoW20vAU6qw}53#4`%n}l}&YnV$I%jjgahjwc3?MtAj{`6uUhu@=H9~ zKCHhQ@ZwY>8H*5tQ6` zO@08c$v@m{k}NDQR=g%Ze=Dy^DBpWd3qxM>I}0n`3aKT~40p^X^J621q68=nCi$Cs zzj6anYwixA`V(Q&2&o#RBvzMv6>=Rx<52C?XpDFVvgCpD;j6I1u}~aVI5iq$g#%f# z!ujx3SfP}>YIs?GXpC?PP|_=Ze-$zfjnWxw<6C3I8ZafjM$uOxS!*i}#rjiY1Z$9z zUS0B4$Ym~w>Lix_jYf8G0w#%*fa`>m8J8>unf8!LcC^-XQG=yI}*Sw z)J0hXcq{NXcJhyNSM55tlLzlc%N09$?OWN&UW?dXfsQU^e{Mw4&>*EC*Cn;0ykf^2 zi_byX_|^!%0-i+H06&X*%{2i=M6O=SF6&WZ# z2US8aE4wh>9O8`{_v5H>Z@C&beDbWS#w}edHBK)$N4?OW8c``YIH^Wx;C0GSW4Vro zkaK7>zBNLmfG4Rmz+X9;6*=gTTKV1xxdu#0vQb3a;gyrEHeQEd^`#L~88k_x0_`R5 zyVZN&x_a+hrow5h_et4BEvfbXp|swmIE8Dj5!WGmtomJEraSZy5nZU%jM!#yw=xs3 ztw;_*gVpba<+%uI;8y9#*Q?Y?{-t`QKZ{0QPKnE#Xeu=_=F(;RoM09mF-gt)!+B>7 z479&1Inu>po)-Sm+LK zH0&Qo!~V!M?B(O#)rzC^k87o2^Bu;~PV~mph;<62o z)^a1{@m?f(db7K7@|gIxlmcfY-71Zd?ShspaKBKeb?h+X?rNiT2vJ`e88Qv656tkY ztSYF*^t)A@Ke~$Z64PR|;{2-YqLx&gpKHZA>8J7XI6pdWM0x&~s+1~|S!{G(Gkwd-TsaKdm0LP;Mte$7^ERLI9I2(nC1R>X^4JIwmVCS7%p3S@WKXUhqo_j z(2vvJ-V)8NM#zc?+!kA!mJP3ZX@DHFj~hw&<4D3cToT5kcMmF(@WnTjgzoJrL%Ce5 zmaY6ibG#v;$M*m&^7NiiXV5ifzN;ncScB?IV}vS*l2TPbU3f|TZY{z$KH1L4RZI2{ zWf%3NWPhh6`^t+Oq28!a&*@NeLvbYNzXZ&Ze4?xgxhKI((LEgRtfoUax0?~&0EZjr z2%b%V?4=PBbRPy4E6G1eugvmnG}#`cz2?Xn+kmTdRr+m;z-q4sr7x4gpxncG?}jcY zp)uQ2Fst&GJ)&@z!#d`#>N{{HLDPm+V1|{#eX(m3|ZE#8D4CGe4 z>ntnPSyKcVT^TgtojlwSpVnSCqC8}?*ewy;B?QFk_{g4`qNkAk7}P8!8Abk^+arb? zV3iipPgA7GUJOd!;YPlAkbX{FvoN z9yfHaEX~3L1+zMKy0@liGx`!#-CRBK16)1viJP2z4?kB;&Ue?#s|&9!)@0Ney;amQAI+62O%h)LZE&ITg*yEj?9f`Aj}!W9lT6T14f=KA z*CJggd_KAjU9hQXFF+a;8=cgRv>8CBl_FIZ$2p|GH91hSKLcr5bk-nMuolXWkI#l4 z)D)iuNCRb~lR7>(=GVd?RTLl}*_A3y4p{}X!G_A0vj(t9c4&3U#|izlNhWBh2K~D5 zYmu%@FdyaWW0Qm{pa$Kl?CX#%yj0E(#mk!`mcvtYYVh7Q{@prsKY1LwD=)M!_xG}k zD$n62FoI)I?!({Dv)R;dP;J9t6PV=cAXqkAN5Yuyd2!c9$IL5n# zW%8<-S7KzGm)^=LIx7OSWgN@?E{r|A!{dC2%z~h%w;S{L$BD?k`;zlMHt;=2@$3qw8`q z&Q9cg(ou;Koth)-!$_vfo`%DGk`Y;|oA!xGM?Wn_F&+zP1uy9R6HY>aPLW2pm-mrQ zzLO6Ix!}}PAW!<73qi;_kt_zheuDQd5(Z!60+Rj6JkzxSs(p$9N|J61X@IXE+&Zl6 z6=f0{h#kb^xw1=O!=zhwe(oX9qfDL;a4&vVhAE2hK;>Ykv(@|ZC3(a-jt6uE#~$Nz z(rQQO$+K|yu+8Jzh!UZEoTukkuX$>6uFbOsPJO7NDY9%zyab0gh03(|bPyLs6qt?F zt}+_Ly<{&R^l|1I#`a!2nno9k&vU4rUp~H##|p z2a^Qf<+z8vcrc)=e)Nz77yZ4PU|f$z|(A>j(cTT3+^w2js#<7bEtFi$;j;Gi8TQ z61M!onGKFStBQ#*m<$aP*y}FUQI)HIeLMi|IMFnU0$Ju|j34$+dW2;kjMLpcOtiza zU+zW0;_U@+s_5a(n*Qn_$0J7|eA3#W850HlWG9{sP`;?OP~snkGC4xK0(lg8 z2L}ligR=%CmGcqn&e#_)1IPIxCMSPri>-P-I>CQsbLxM=En~14?E(l!>XuP6Xm7SR zPfs^PnzZ3hi{b6XJGUP`xcl(V?e=MV69Y>BV1zd5BdetT)owpZ61?=ouD9rHZSCO7 zgKoffuR;r+H0h$26g-&{JnJLcO&YOd{-wIV+Tx@j3yZz{kn&GY?xyLRq<~Y)3!pi znWw~iX~3?n^dU`K$=#xcnU|&plcl5BUy_6)jmqw}aq@Jh4xPT4+X#_-uDcYj-nkO; z(49@&i*x{;VJY7or#sE0m)TRM!#n7R9xNXWA5IH{#)+=>Z&UvSY179;NIxKvWO$VKjrd_WIO&1Wz+K-<*>Tl{$J`olQHRLjVyc=Cz&OdcbvlGI(I%8`foIoL29gHAs+qwIjqu zZG*E6w6ETA*ulHG8eY^*PfNDeaKNfF+eDptZdkBwj#!_lTX!XLs?IZ0jOkIw5?Ao~ zCx%n6Vb(bCZT2{yYgy#+V&Uiq;$8FH@O>0*}scp@ctMT!s=TBb}OMSA&g zlxGN+AW-&1JgK%k*^c5ed@@01DNaf9JCdUbE6Lxc8J@3-MrHUk9wFcsM|)-XyeRhi z(RLZW7(>g(vk1{v8UB%vkeM1Cmf_2?97U^T_)0j&qxWSf-#dwx%aGpz9X%;SeyLsb z3V*4KilWc-i(hRJeZb%2o#^*6WQjS^>oPQBs?mS&n}#9)T@Fh9aQn z-EB{V&pg@?!Jt4sNCUP6ArE-uow#GhvCJy)&Z(B*U~LonX4e(GJ)?!JVYEZ!X%C)y zKVJN!QM<>-tggQNY_!-BBU;x)eK*?dvXQTAA-)>*_b@-|YO`-fT^U@dtFOKrZT?XY z5Bk}pz8h`$`vG;mh_6O{ej{pKeeu<-ujY4c8(qU{$5%pqEAicIGv2AKj!#BSGfAVa ziB-pJE3y^*Jmx_~vo9zuTy^y~ke`hnxS3stm-uSb&v|ORA3p!sK1GDh$emy-IYI0* zI@wK1k1}S4`^jcVI?@r*QEd@tG27NA39KgN6WVjBKb|E3OtPJH_gPxR+XFl4K}LX) z7tpaXCRG1++tV;Do+ZV8iSVnDUBJO0Qp&zCRn&nPk4A_{9;7`)w;PGy8LywaxbWzK zMG_%Uz$>yHj}gO6vZVhw;BKCIQ9RF!aS>akyf?^;qz^}ryt2*hFkmrPo&|X(?HOL4 zT}ig{{G1a(w_}+F=gD8elql0|x1fchGFXsaP{!l($;cW>o+mPHwOa+m5uMRjsW@|G zOGXvv=;PtIlBWazUF*@Kc5#?e>P*=|2EzdoOELt(+b6xaNahwIIpO%n1$Y$bbN3F< zj1l9d({EN3l1N@)&ng7%M-0>*xU5*y-yUrvmt~)q-m7$Q4;_>XKmv_{(*k+8;_dOI zIc;6Aadpz`K`?^D0>6h5p^2Q4exPwGux?tE8B#KO!;OuF@ZKh3sEDi!&N!W*ysNc)5&&ylrWaX)VDs=ZowuR^6F$lQO)u%uRxSIcY1hE>B#sJy{%Anon|R3TJ1T z=YukZ8X>c52vcw$bI(dS(rbxwQz$iw#wZH5b0p^s=V=m<4+q?UE1;r++R)IrB#+uk`;(R3f2yq?ZN#kSYhUpP*RDNPa>J8vQYR2 zR!J>k&6uy7Qb=5vGAAEi=Y7r4339H+bJVjdDB8RVnR zNIaoj!sX21Abp98_4w5#+MluWiU>~K-R2qLKa_Ya%dZLDjKS41rJqzDMX}cI~5IW zA)5mtn_p%`xV=0T0cmoZ-SeiG>0BG%QxQ;A#Wt^gUupofB|jAbRkbn`P(J@@l1!4z ztxV}5n2LvXG?-%{n_p%$q|;$43fgyJq9B`J3I)T5F&zzExiTi~Cg^$oHo~RmhrC;N z2C=59I=Dy&%cU4YewXPS;f@t=tSM0vNT3+%4D|6!je>MmO~pd{yv$i3n_q?#!T~lF1LZ|C z5fF{3fBBDVMUZW{ly4)W@XHtadyVwS^1CuQJ(lMAjKV9m{w`qoVcO#VVyxWh<8c9G z@qz6=;Km`&AmNVFs?jRV&v{tY6BXPuj{pU$yx~=uI`AkA;L#Fc9DT4#9Rr!;`119d`0ZCctp3DCw~OhWt>FtWs+ZA#DdHy2r%%H=EJ^8CqvV^T{bU6vI}uj7*l_ zugqK8PHa2V-H3vi>_ShwifQO?DUCR9du_*g8gmQFZ6_=*PYY=exozYZxpqzNDC@;- zrat-F34_CJB`pyThRjNETX5sSQ(r0eZX5Ntc&~IJ)}~0g<$mwX$|6M$GZ}vyohOX4~bX z`}eH2$-?sDjQy@n`oCLkcaC2jI&Duwx}C=<_LK6@r={B#NV@oT#}SLJ_VTY5$U*=92d6F6oF~s_ z1^MZ1^27o;{3DySZ86-nM`gJB=AI9oqWs+{_ER|O--VfD3|98$^NShVK6o%Ht+oWr zX?q%uve+&5qx1UH-@jQPKRsVvb3ppr-hH>eX14{aowm68pdTAAgP*x7-=*u%ERZw; z9*{I`J;jIjdas>gKl00ezqQBVaJOe1Q4?66hDY~Td=v2a!JB6@_Vo9gm(NX_PB+_+ z{@1U+{_nXWpNxCBVtzD2P-}hVZMU~K$@b@ed$4_{bEmhsnCvV(?EF(83_be)?jg{4 diff --git a/priv/static/adminfe/static/js/chunk-87b3.3c11ef09.js.map b/priv/static/adminfe/static/js/chunk-87b3.3c11ef09.js.map deleted file mode 100644 index 6c6a85667abeef21b70ee7f07125fef19a47b8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358904 zcmeFa3tQXBvM&5rICxDA zF*`f^d^YIUXD^%nRWKX)gF&-%63o`S?OwOzcLu?1v(p<6s`2k#FQ|71!45A!za086 z>nqFkM>A!*-1m>(4}()_y}0HtmTO)0dV~6@C#~le)=Q3E84gZ?SF`R7Ko{v`X?d z(37UiD@P@pCW(M)>Aq=p&i#H&iPeU;P!5}2ui5hZ0#f~Gy=3DgNV~(eZPBsBT)Hs$43P^Xm%R@wKO<7I`#@Qu-5BGZ{WXawwnX2eCcA& z^NOsIc+7?4M#(Xgq|2JkeI$9c+V6Hi;Fzw*^~RbDZ8^FoJ9PUh z%cbA8x0j2@3wKmsJN0hIvIdSCM{_R5<*4U&=k`>VcHgeAmurp29qE>`qt@%kzKd@; z$|XB=`zlMjZ`<3;xs{b7N-1aEW~k?-^|?E(+;o?Bq+!Z}m~?+HR~8o%TD9y%i*fR~ z---p`()?P&9xlg-sUGi!^|$Ws<&t-lz_&aN9TR?KWierfmnERx-Ce2ot@?VoJU>^` z8cyoo$X1P+Z()5d!O-Psm+taz^!xVxyvPGn)4IuBp=hLWjQ?W z+U(_=zgALiZ_%grI~tUnUn#ee?Z)LWolMJ@YxPD#(~MiU+uh!26n9J-MfsB&H!X+j z-P^rf^y{nT28{x~bACM$cFD&wYvgZB9r;uD=)=$-8hlrl6U#gwU%PQRd?(ZLrN6S6ke}n$>6`A!iCL$fx13PU z`Pjxy%i((Wb}x?_3oGRYwelcKYmG$Xd_3c(w;l4f?Ora;&nLn+Rp??Tv}O6Fx)tPje;m) zPI7*^oM)5lpd7}NZ4LWyuH+nBS@zY1qeOBwf0E;-C2@`t`?qa}!j9vT^4PA6m|IFH z=X^Zlrsd$hd%KrMM@tFAXB!*;hZZ27@qyV+?T z)`Q^CzaI3x`rxqF8lE&ehmB@1IAk%P-#^*@DS{JczC77tLW)s*zEgqwZl6PGZqNd4bwUNkTGM%p!lYf^)Mx+ro`kV z9;W2}$Tc^y_%Ji~XJ*v(dzg{?Gb8agBwOwIk78ch&C%*Z{O5oeph!_3^HnTd)79%kkK%!)=azh#K>A?j5s>J{ac zP#*9t7fK>kbC|F);(&F%-|Qi*&zLk~_6RLAD}aw)zuOD&$=VxyFuIM8cSmQ~AdWAU ze&4&{ZU5MVOvblBH!#HCw)@>-4?o-f;I!LdUtYBHeWTlL`CjK|uO-FX=RW(oG`|L? zP50>?RM?`JEqpreW^d5P84lrffQ&OAf=^f7Pk=VODwII)!yZt<4tF{B0l!ZScs~S# zZlAazztQt>+ycHvc_91y+it(@wVGf3KCT{Kw)vM2|4{Gy=(*PN+c<53S6T9N82Bxg zj(CGXpV;7F3iNvlI&-Wa{7dufC4L?9l1VP`=ixE-_Tx)p(r_g?ty$@^oVg`l!-14y zLtNW?t@oRQQ$uDB6NK~I?9^Ms2GT^lxakMygD&S3wW9+<==J!k;a@hT4&G}tK6bA@ zbrWFW5v6`3oD^)N#ihd z7!!I=M1Iw;g7^4{dJe#5U{I7LsRp{IG>Ty_Q$^ zPrEJT{qQTm0>DQTGl-9RvtJiht+$%>b6i03kbjMthObIxPA`6VtycHynXVW7%z_4& zlT2=>nRA%C8SHkCbm26EPaKg9*7A=0)_$`gGmBFNaO?x+6<4J4h1UwR#1Fs*yh z9sI_mkcZ-@@k2?EFZE%+k5wGU?bvCU4VRcWuVkw$apphAG(tZ z__W*OXOd2Ff;opuSfYIHQ&*lwFSsCZ##frSsw;@ka7E*SaCz8;UHRXyQ3afcWp>4~_J-CMneX9x$->~%;mkw2l{cssB z`vAP_H$HWf@&_$;F-*9Ioo0*ZNJtWcreg-2@9uE0vndP6Y4igc=~E%k=;}62%<69< z2OkST(|?-E_6_u#qOjvB<cDW3-R#Igrda5=Mtzx5Fg=CEPVap2U;NhH55!B$7k7%aVLpbWWWkA zIml6C%i%ngR_k-1Qa8SaEr_X$pF6PZqRX=2;Sd&O`;D!4A~QlHd8l36 zULSQeXz_N~J`w~wA?q6Z825};c`qx7y?dPve^ZPgA}W@}59XoJ;%;>tUT|s&5nAw4 z0M&#*56pULQu&91C>S0E1L}9!H#~dCJk$5D`Z!+ceHS9~CVbX+jW0B!n%v<*PWUbi z29Cx8Ys2`(^7I37GE|qrmZTv9+|Pa6pm7$j8C}JO+FgCW-MzHTcc>uuf*0I$>YuvX zYAkm97W#d74`M<(R|x_jIpkvS$sM50aq|RUXiCW)Ztc4k8PxZ=Ogj2Y6%KxbYQ`QM z%;BeZ)F1Zv_zx(o3Oup&<8Sn_a8H)HTG6ncTeK;`2SZw}DyBfkeoFEx3pyNIH%6M2 zPNA2e)n(s@>;o5CGG7 zB|E|x^!mowQ-=l@Ipy>+4Fh!B5T4>&HanP=SD$v@uw``Y-k||6XT2#k(8_P)7_>?Q z$K?6_>S?ppfS$o+>=@w{b{k)mueijLA$X1WX0TNT^RH3ghU@xEzyW4>s)4=g4V&}G z$l!y}xNhO39xcWYz^1?xIm*q}N)$8(^iASZ12Fd(!rCAh+m5GdYV zz_qS?F;^j|``xxziAU-ZnXJpEh4m;n%ta*bMVZgV#q0vl$HP3N*q9&j$mT+F)VPr~ zqN#Yw8LqD9Jz^~L%?xzjjqgO?%{|kr1A)25e&S_S$RN64W3FjpYq&*+TEr@3})_FLm}_|@E@JlBAed@)yb zIc{++hF{H{5Ksr9@FD?;NvD;!IT)SDu4pvUFJ=U7=Jc;tQXNE|{lKcUtx8r~an_%|+{%xi3lN zh(LIR7w{2XqR|9;V}o%HW?lo~f=}IZBeTOFW{hJT@rf?^5nVxeZl?pc*lV#?nBX7# ziEHNBrWqcOgkQru!5-xKk=K9MlYs;Mg$EIQQ8m`~I?ZF)Vz?H5HI0oNqV0;C)-Q8E z0MS@R-3VnUo=RN{pB*5m)0U24d&yUG2lKawj#!=zIUfBmcSFiLj1^u)18Wk(9SC`o zV6;i?y4Qq#u5vO|D)B`#cK68Z$UbU97XL7JO?<`t3I})K3@^HH>Q;vwC~3DMWGt=Z zn;FBu4sKxhaIZ7&S-;Hv=$3vlS1*R@{K%)drXV=5>LnLa%?al~DkjO>?x1;W4&EiD z(ihFBv|j{t{bH^LSKV$v1*%`nRVwrvpTmvlySb-eIne8+1oW`o^^DdW4BF8{XdM3t zM~d#cqeYjKBkD%l-0}1g8BM>MvHH#Wscd}4t>}9Mhd!EsBI?Ro1=v-TH@xn9;OP3z z4AAZ$?={<4;=B`nkMDi-nF{H2;YA(6JJN>|7vra2`K{LAltEm5F#a7s1Iv@Hmp)*A z#CJ84R8gm*e;oacpMZ@A<*5N!z-xZR_jlnD=<)_S=0|)tN^k5&dbEF>xEMeEGc1y$ zVaw}N&7iyZw|NFMcW36~7M`>wMYf6MO^XS=arrRX$1q&zy3+SUK7bl0{Az}kUY&vE ziaT`V>mw?W0|BIAbi6P}vVNM;?2ep4?Hh@)WwUC|s2%@Gisl42o>+}9qU8LB7SlyH zB*q>7!e_fXgx4oJv&%qx*p0fY;VgV z@C|-C$$s3tmXSi25C^6A{Kg(!P{MmShi7I;f1siJSa>1%lyo1p*;{n(Z%GDew|mlW9+U0$Ip?bL zd!{TA681KSqWXShm~@F z3gOf)d{`v+XAd>}gNNz3H`5WuJs;-e{>ZGziIjBL!_3^DnF)iK4|8&V=ETHrA9TvS z(J4st$JJpEOXdD76}yh~VP5Xfywu#nst2_n9Nw#QpG^7A!;-l_OD0US<5eOL({g{N z#o8J0V36G#gUr+;J4wEc)`i_WdgR`I>qDW-IahPub6J z3q;2=!yN#0Z1w*p`}rL{Kj+U}0D*ZMp10Z0zvlBNz?2P64aSPW`|K9GY;ofYiN4w+ ze9V6Soq=d+GXc@3?B_r5`76cX+V217?C1CR`~@Jt`l(v!I~e?u-Qu%>C`F@Rv!CDR z^Ii1Zd{eFToDq()TO6>(nm*KF)r=&gV~#XXd~~r^hoV zud0=kcVNY;e~ORSGWPX6wizhwM(!v1=l{6DjgoA|Shdwcl$leE{CHCZ9? z6SbK-o_I6jiG#`x77P2R&I~syn-%jNJ?q+2zES{xkxusI?^_vW2jB4^S`thkSea?^ zdj;QXl^SonVVAEfujC3a*~DdHo7EX{mgjb6f{n^2w%h}9?5jx29X$7Xrn^x&VoMJ# zDL1%W&@Jg^79fySmLD}O{IEXK|z8UTosjn;+?)K-ECNS%!tkh%e?S3i9K zE%203>PDXt4)6}-(M|bVo54_X8@4pw5imEUoyhYm9j7J@6d{${XB!bq0#l;v$urS) zDh5D6k_o7)Rye0u+cjQ!hetWL3KEt!sa1D7!Ts(gkVI#%bz#a-!u)dzn$E;WGGa8K zUW-5hbaR^up2)(A@Q6y+>~XndLf{XezG@i|f8wgCRQ6I3w?l}J1V4e;2ai-R6O=9G zApWeKaJB0KQbyD72AwtmQG6n#N7Mi0uSI_%cfOS|0Y59t$cm^$c-t)VttQ}L^I-9W z>jsidM6&$Zg>+X1>B-tK3=1x)+8XY7W_qL6+X&u*!M3Z@8~t|!qmi%zs2OaHL`JNE z19*M%x~N&5`7B*8h%%!56b|iFh3UFF=JJNDmr%-*g_Q@xD+F>#-H4@*)lyk?8@RVY zGz|I^73ymvBG>hKm4c8slnPamLF{z9(pSA3RA;VYILY5iH>I;Sz@r@Q7a>+t1=*!y z!xdP$QoV^wdt202E(pT;GB(2}B?no`pt7tGfo32RRsL{u2D<)QT7um!Rab(-B->F4R;a12 z32wE5>EZ3K3cNF!>LeI$(#gE233JP28k469SwO}hC3+(3Dx)U#ocxJLDGt==Ln=-&u-lt` z(;F_upn15jq&%qtD7ID084{gRgQ66cs_6)X?{4-)|Gmz&g0N^I?$EU|mGnClJ9Tbz zR)IH0CLJ^rBLQGRHKZA@D_~6*usN0al)W)vK5g;a07h}AfGs5eqnb8=c?c>*lPMm7 zLN=@hDghRiwBRx7su^e$nQ(TYKa`l9r==QXKR#b$rI6aP^ae8Djv)^b2mMZC1Rzd} z@Y{7MmjqDw{9OTvKrE5e7#x5sBmja?BX5ByOBnycST=^?V9|wvIbn}6?0WI%vMU() zGfxy;yd~}r<}E7{ zz)q@gh$v8Ca%0FzMWsz7UW43@ZFTvdHO4SJ++8vAmlI?*< z=GB1<)bE!^)G5IYwsNSrw5b8uMZFjL?xcttA7@KD4xxDi7zkuI6E~0c{>!BHojsGCuI>JwQ(ZZ!`vsSEDgN zA$InYXpE&@WZJ3=8;fsejqLfeqQ|9lh84~oZbQq3%7*I>VGv3##XAwsB@gY%>NJK8 zXIs9){iQ(po)O)(Z8D}wwSLv{1va%>O-!(D#G{78(vd$61HgMsNKc8MRVxVZkb{&C z2!N0@Urhv0&AcQDgr_8l3h1Dkspo23N^JUVV%sOLFoz9lgF3^^f(fUxA)IQ0%!)eJ zJn<1}VAPG^9%)~;1MU*BR%cyd#srh?O=qFjBl5PWSCOu`=EvhDV%-um0c)#Z%o^tS zew+!u)`}Md1_+s|H+U}*`kD$K8S~AVc?ty$>l`V!lku@IEFR&ID_kTnM<^#uo^n^N zh%zQfq$Y{ESrP48tC%~lfp8634Mu8L$WGhemO~h@9RSijM2t+7W>f}UU^W5UStEUo z+$9xYAroaXk(z4nV}?=|f$|XBLO4mMXih)ol|A&a8@={*8{%9$9BG1()>UADk!2M* ziFz@Rv(o$I&0EKZz3Tkd4#4)H?^~|~#SDGF032L>f2sO*68at_j^mDu4o+{FXlO!l zQ~ARxC6#_9=@B~R^kAv-62C`oIjl%t`=D`7*a=8{>LosQ5W2fm>T8*INbQvb9Aa;X zVOs5f682fvxn0r^{GvEfa7Z#hu&C2+qzXdMylC67Uo(OVK#Y$q8Pj79uq;$V_#G=l zY#FsOx}lY!c)~oQT|snDszoB8uzG1v8AD3!8v`|D4SG4>H1Q7;pcQ_MBeZi-41w`4 zW3vT>iBbc}Ab|!et9u)0*hdTvejy|y)(uyn3m4T-9G`7QU|9y-w~Ws&Y)KRZ>IqOn zDHFg`of4}W!~h7gE=8s;W2hI=G<%@<#)Lw*q6ITz$v0aXg@#c9NV?ULZ~~Q^2u@nI zCsngV4Ne!EKvPRX(pX~ME^LKM4tND(0PngzSkneruAS1tpwxzLJ{#^+5m;vCmMp{yee6f4~45HclgJU>V8&HyoEwIqFv=x1Zh*W znTrjrJvg))CEJ5?u2^9$)6#@{@F8^23XFGgDTO91McGoJqV6C~Ke4K|j1_9MJS#r{ zE$cZB;_?bpvO089@-7J4NX&f3B27xMA!hs?sJ}t3?T6+T>33!w09>#%(?oTO1w=3ri zhSn-)DpJ3VXG*_g86*Q=6!JUT>cwFZkb~0I4+vXF%)~;NYNeCrR5R-=pWnpNlBc*{ zHY?CNL?KW9{C{ZcbmcsS?-m}dNuM$VvC-^$~fZbn9nBA zC}S`^fGI~r^rDKi2dT{KkuyU#p&Qwcj+@}vzD_v@!eU(J%5F#=iIt8k%|iL{6>%IZ z2;GO!RMsT5f4+&}F|VbqDeq4xnz-23D6tsj@ZhMXM*_&{h%=&@)3J;8@pQm&Hq+q{ z-N!@fnw^KPnJJ;sxVo;+kmi`l=|Y}Sg60GTG?yt8nURavMdS`;;>FpI@tP}%7hGO; zph`Bx%PU%elfa9@_l<@hJIx&t`d>#1{VQlJSLpXt%S>G8uVL*Y&OkwH+*1?4&=6<1 zNyB3RBJ^m9xUTbs4M(<`M2~K%STdO@s`bp8iD99diMIk_7qu;Fz6Dn$9(s zGzzI|$U(!ogai+;d4)oFk>Thoj5`=)BrMcq91DDl+d&m6=^WXvL5r|4rD-K>&2ZIp zspb@-VQY#kQ~;2I1_I?zXLAZ0T+TNO72{3`K3goi5Y6l(knI>u+a`tOW~xZ&}MinK?CqR~3qM%!Zkf1x8xHO;X9e zjqg>su_cRQ;CRMGF*HU^#YVE41Iwqz%`zZISP;Xfq4LPr$*0NWco*q9Zk_vFD@m^ zF!W|xbd|9l@mC^DlISM4Fc$@26^e@;k&x;mUu!T$RxG+2^{}S20TKPgHT6y1?iAR0 zeL}HNM-rlzBBID1(jwVH`jNj2}+8GnHx zcS$-~dbB~YC4=kDJh!DA6?@JdX@gGL#!MM}SI(^(u|j&rQm}7|8<3zL6e#I;@DnzP zG7ZB)mK2J2vY_E*ObR%0i*@dteQJMhT&m+QG1!tg1#6wK zho)M=u(iso$~ix_D=l(l4O|klxm(9WY{DJ0WKGp4s`0ft2TV;2=Cyi95g@iBwqmd@ zXMCq8KLNv9#Ym~*9(G7aHXi{1t#}&%en%=BB6|l!@!&K96;4)$hYgXGFt#qgk+J1w z-yGjbcIT>5HRn1{h%W$s%spoli8Oi~Gf4J=H6Vu|Ctl}P%1pC_01;(HiLIBa%8Hh! zs`i6$qw#D>Ky6|kBk}aH3>$=?#hI}<_W|aNOvOyBl=Ttd6Reo}2x=30!yG2hf-H8ht(p_A%BiVO2=(i3Ec%3n*9*#HFE#>pk+31fR3THkDJ9&{Ed zXj7KKicHELqEwtAV;P_iV;L;yoT(GGB!;Y4s@T#)613mf z!u}ctR!3d?x_hAuRhOwV&37sVo3<%DRR~d*K@eHU9VAQbD4tJyEUiGxLbMababWfu8Suz@voRHB* z;ZMjRHkO+tM&qql;>sas3^r|7SIKlxB%&DQD>RFchkwMrU#NDJdN4!yteo>wH%=4G z$cv3LLtT;m>NkcFPspN+4cF0x6d9RgMi1wkZVw*So7)2&m%J`6#&;p1R43DIb!rer z_?qT|B-aCTmOzLXpbA55q={?^$D{B9&TA-5mv(e?V;RjBstOZZ@l1R{Y%>$_m-cT| zeNdX{BI3N9)QapSTA>LJA!H$7JZ@Ez8Okmn{VQ{pMTkDV9TQn|0)KFV-X)n?zW8-2tFF=eV2^b`gql1}Bf3JTtK zHwNN%hz5q+F$iNz5mDupJWD9tC6IMj$qGRX(Fg7i{Zon(2=rJXx_xp;CZ=Jw=(ZPB z0*!i>*YPO#v*bQPPds?dU8?ZI_L1%up$1Vrs@1mu;x*K{ZVI`1O&xE7wF6a}`uAKv z)PY-N9RawJwgig7#ZvO{U434CM(kNlI$Ua7_*f!uh?@H9B1_EPoAVmyM;=#G>efIbB* zD^t>nOuV%)5Xq7GxH`XK z4(OvmFpLMQ7@27RtfG?iCe`Fb9EAJspLt#kr7$ z<;iV~Mc=x;4NroPTV8MMj*W74(+|_^io)rC5d<+mv2pe7$_qtrWE5Sl(Ln=)h&8>g zvk*-eX1!U{nMxBIVmgTGBC{OjHO{DGn^LlyXofI>31?U=N-)k}hZzw-c9U5TJ&nh1 zqT&JwR4;7eRBRidyLsiH7`z>ogOVAMh|pC^yER^PBiZTZCp|<$*2`?XUW%RcpzEdD zJK4-xF+AeHoSYGkW}IoPen^Arfm!?MS)#HT5h_YQTx|V>AlwPz%iY`Ji^7ts9w6qGch49Iv>MD%{y_C5#t)#UXQuxYEn{{^*DJvR0(!Q((@ZI(VvSii2>(`@@OQ| z5Df8gDj9+~lsMvot0w)HmHcZzNz_NIq6|5Gv3YAbjl-luvHW@FVDrPGq+!y|q$r0y zLNi){dV`bhG{H?Crds2MhgEtt>DWAPEsz7&thLb`WX_aiB7PqQ1q$ z2TUtol^Urk1Ta-o6(^eU-T_UMTIHHXm~ot0S)ylHASW(D83X)DCv-7QNff`G;Sl1TQ zd{o-UEhcf?0s80j(nmM65;M@(wyJ&$-=5{nvD{wTT%n?mWr z!~5XE4>wA(ntBZ}kjh)m%sYjxw`=<=jw6qU!VIeki`UV^)h@0hV!L1YT$x!RUI^=3 zqlNV0tm@XytiXdDqQO>nc2+~10*?l~vRjgp^s#_y7_QEL5In}^A42t@;uO+U@Mu%6*oaWzq8ITG-0S2CI}*YoB|ORHlrbJBK*tN-s8HlogAud3 z342h~wE9W=41wj8$W+-dk?3JMGm9!hY5uXncH=>$lki>sBPUugfG2C=>dzih9A2Jr%*!#9ztP8rhaj z$GkbqpHYem9F4ID$C;4AuMj*Xf|Hm6>;o*$a$^J`q7(oiL!M=M_JQv0D9 zsnyX?4`mrhBn}i$!xu8r)84i1#oi^#ruY&L#n-1y%renN)~ac= zw5$4!ooU6CV6VXi1OsId{z1T!gM^nnkYV_mwGarT?m@z`v6*D$R0e;zHwLKVG}S$b z&}+q2D?!io2Q~*tT!>nLyAbkgJor?yIidP<%Q^_voT6h?%mm9jigb=L4;(v#V+bKQ zdyoe{08*X^g$9X)V@CJ^Q%r=I&N#al6|B$8DG4zp^Es9MoY${&Pz?PCt|PqYbCo(tg0@qJe*aSaveG}H^kH|%r=M^YF+S`m?9 zLTrRcHN+|^9UamMO41vx4EbV=uOK)zrUs8yE$Bh&8aGaL%|IuWEhj_Pm(tQ`3@pwS z9MY>pUcJTYgwdteu6%F5gMbaE*U&|Jf>56YD2yYT@}hm|y&(^+o9;z_8)gM3aLQJ7 zthKiyOaL5uk~1`0SkHU>^_4I5FpE1WjD&&65o*SSbQbDS)!X`41HKwQ45bw<`h)-@ zXC^Kcdy34EXh;wem&AwQ^_0zsy@X6XFAClZFl==O?b3DB{*l_Vx<-_?Ff>UXP9rvI zs_6{YfZ&4xW6M0n99{5nY+oXgG&wLj=uRQZx(6!5JvbCFk_dnelMd04UUe26Ruwq1 zinYi`wH`gGgu&!H9uf-@=CMy9r z;{!8wdwCcU-gy{DL#j7#F{>zx)Y~S8i)~>70#{vMSrmy3 z{#w@YFd^h`Q#i^y?N>Vdg|5$e?QcPQ4^Mk#8;KcrYi2;s@_7^wc52J8Yg7;sW5NUu z2&x|CMvTwHqeW2`ODdX;FIX+)NSy1-$Kj)ps^*;#?9nN;=LJIv-9Ki|B{r1MHMS=2 z8^S(!QpKPqcti(n&FONPe@8&t8{r-cAnYq$KxdKY>q;22yJ7mBn%1+1TuNjq_C!8d zPd!{$c?=kcN9Vmz#Z>j1>WR!6|92W-KGk;EyC;^G0D;mQPNwj*YSNZ=tLQGNi)XT< zX08!$vAL6^H4lUg%iDSm7m3jPnSbTQPL;39H7YtB^2_8Z{SC$4RYh>8Yne+2tdHqf zn()ftqAaj7=+hQl8Pn$7A@_V`a6+A_;mT09B%N=fO?TiN$UM?1DGs>?FO*H3$&58| zWFuzYr@A;6E+c17zY1feysn|r#O5S~j0BEX!pZY$SedTP(Umy=i+t%`_o{- zKO$UW_a+F3afTZZ=OlrVu4=G@5zK*?itb;I1oUy&+}96@;MQC^P!}19$SEfVmM=eU z%}HD~EmIE26@#TA1}i(&sZE@pPSw=im7~i3Vssa>C1mxuB~O+zeqQF1ryMm)-UCDa zG-An%HA1>ZbI5fsehT8n)&#x{>>3zFZW zICKxqP^_|xNGW7YoU^K~Rhx<_7!=AQe}CGKQIa%n6N1XfW?4RH-7QOwOyfdbr%Vfj z?2ID`MR4KI()OyV+WTm2Amkd-1(hqte*}?y*J-54RjOu45;-bZ?>hF8ZkrR?vSJKj z?1JHJxGqfheU^X3>?Wm}zz5a_2v<1$T7G5#A%O^I;#K~H>ww}G2;WU-({;6fDXK&7CwUK56)EqhsekWIj@mdfMRG19N=U}g|-I){L174H(zC;io- zb?Mh+DwGkBf zovECVK`~C}io_lOen3@FaKP2!%DQ-EoSlr7d27bHGq?~Lc?(l)Ek|yt6BiPagdXM* zaw38&77vKCVUdM#HbiZ>tdPSZopAsuf5C6%FNSbdB6AEu^w3F0weI~6!cjM-LJbZx z2k&X)YJjS*)~gYeZg>cq^Qb%s_Vk0s zG?{ZTWlfmWcdzC*eH>7`zrD11yv&ey72)?f{%WY79WqJFB?lFVky((VwFa8}Nk3t2 z(nJszTrRm}oS{Z3p>D)LV}2T9hmB8lg9NmQ-x(yuF%C&;^37 zfNa2e@XOOFYjHm=eTvg>Ezx?eY>DUg>djDQcbs zL)8H|pirh>kJ?kK&pk=p{F>GiMU>6XtWpFmDN+s!BZjQ|6G?!#!?Dt3`aPD#5%W}D zWtKqV_QDn*GDTW=jGzX)T;kC-mJyW$JY<8LQhc;mx{gg|V}lI(Wm1C;iGDK;U?_;fzJ5^n!v!z27iu0-ua5fF;Wa8;4 z;;hc^>@+{1bEH5&$i0jdD8$3IyLISV_1&FPpo%oIP0%(s%`Ie~NCYwIzBae4?LoTW zjk6~K_z*@Kd*_j5Lb}FBI-=KT*9F~lRoLBXafNM0gp8t*I~^-*8c~i}F^&7iV>OLj z+m19>EZjJpc{oGYfh8aq+j{PZimC%4lqxql(I26FcHC7jmEWV&GsC~gu1QUS z1Cz}WhV5V>aSe1-WN5iY=y>49bY$8h7!!mqa>($m2o>Hk#)Y~fWVm{b$_f4y3L2C_ z%(*Dlu2l_gg+gdZbK?*W$Wuu`_V#2Z-sP7TVD&RXWb(xDV?6v?RUr7@j#ZO71a(O5?;~d52j!xmN=pFKfC{RtrE>*uf zsflcg)Q+f|H;%D*Fj}*L{TpmIA6sdWFur}shV*}`GDU}}6e!ZrAgitf1OdSv`f@Z; z2O=Za7ph?>mOxvQ%B+^Ml4`_|(;~HkpqiFjhE5PZ?I_{zQTPb!8w2Gt7YzjL!RA3r zUj6_JDB%!G!OR}GnrIq_7!Ivgv@FS8$iRJg$HQI3&+xv8!P_(L&H&bQe8oA2Bf{-B zQXa@;oMJYGk4Ej-6n~5u|AaJ0WE-Ucz=| zu463%SE}=DK$K>Fpk@dUa^RepqwcfZF!WD@1g<80b(Ep)MW+o)kxQZK`6K$C^@852 zyyTNk&ORnXC4Gt7d7O#xK}t*ap%sdFyDXdcL9}HV5hbLuvaX8~S5&M`+=UMy(X4cK zf~g~Q%@NeO)P-`|u3*C~J#DbS9s?T?uEvAId%xlUhw;Rqn4+mx4^IZuy0%+;Yb-<~ z>!qr1ji19x^DOrWQ}s%*y;0pV3BTywZQLTHY_Ro6Vqq#*N0#$qs$`XE&3~et_jR?i zxr3c+kQoPkeJexg2(S_C0aW`oR$!O8&I)2HygxB#<*K`3J1f^+>nwwlNSJYnu0*@T zVX&NR;H6RI8MQo7kqb^-*}wsXbcoI2PH+W;e<3i%VAH9G+lF7*v2FB@^rm_?A*mPM zi_kF=&RFc|lvWr*Zj?UDN)AisXUSsSYHs9k`dL7*6yZZ_OwkDv=)lXR+(WoNg-yEv zHn1_dpgJnA4L0c0gFB}-()uW5K->6bQLded)^R1MP+Lunb`_?rEMOqi+(20;X6vRn8=6;k*5q{c;?<2;*J>++bi+&_Xh861qHosG!&x2oD;mk5E^O@yHaY=D4R}AEt`Rc(X>v11vVBtsaAq=%z27;bc(J zSmvCdT!68r0LU9g{I8|)jcE+g%tbUF5-MT^1nZpM$PAEyk)%sY{Y%}U2qMr*0yo1m z;GPC-Ff^mVq#8?Gyl?G6lPjg;tvP?LCcmuhAZ!GsaB#XOESI6lhuAadYH}05n3yJC z>Q-${zTB-U?-8Oxnw;k@gsQLVYI2w|;>Kd%Z(8^9J=J7eFf#0dOie!bLF?o|A1)`O z{Lm{5VxC$?wXvw?Qd&J@#MrHxj4HpN30&c>`7}BORC!kw&%C3`(We)w^8R;3W~j)Z z=J8g@1d7bEgADqNk-3~WG91$@1?Q0#80vgd$XpbdnJbO^uRF+~PoIHHVKZa~ z$gF8L`|d_oANjfrBdaa3*gYiqtSA5!lQFW8;E0W^K#Z*OjsDw#t}M*joouZ39>{Oo zScb>PE5MZPu<{X9w{5JJ9zm6>h!Jo93)onrqX4mK!(s!I=6-OvvEW!J^5?4QuhpG3 zRnz^EYWf^O$U4QIgr_4Fktu6OJbT0Z?k`uxoVD2GuX-Q6cof<%eqKhSGTO?<&(R#aRBxh7z zbh`lR)gDH*CFg8W*FjR~wi5#;Ja8l@-ZVy?l`A>B-zk2IO#Npm5{cudXG+2GIs!1_ zpWvdQ;x6Au#-b1$@L@uuUkl)hV@qmCQSVm<(iAqKnB8ULxNaCV<(xi9@Nly3i=%~* zDN=S2ZwJdGCHOEU!4Xa1>Y1RU<%CR^ONUG;pH+t6BxLx-M~Qg0cGK1`HkFKZvkmP$gOjQSvwNpvnpq4OtL^O+%2s8#BuRYxa9IX%YrfrUm)o5q+wecSpZ7-KT; zWXwi8h&zN7La+X6skYS}MgglMR zmQ$`qe*c7!J6}GPcsa@>O5IotjOdBPuzd`rmce~W3%8DpgrOyhaC zOyeC-B#j5JVnKBhRxL5h2>z|5bQ0X^iRz^D1IMd4DCt!&x3406m=NJhDuYqFo)Y2R z0wR1t->!D10xeA8iCQo(I!D|oTOoaS3BK3>B#6YjMHx_^6yPu-ET;nH73x#8<*pIn zT}^paJ8!Rz0Oz)YI}~MHkfUq?ZdBoT0iH^XKo{&g0^GbuH`k|-w20KN;i$O%%Dyh$ z^`ho}DkRk8u|`Mis;*t(g<_oiTp%Rvh6=3Rgx7JZG#*b2OPQ(H(f$Nw=6W4wPgX7< zh>zoNJy!Q8+>WAvw5!0?c7HIxULsdFUw|Sjp{o~X<^;z=#WJzeBW=cQ?vQdBH#=9> z&2n>GDK|?FmgG+Tb;*TIn_O70C{y@0-f(&^rL!y3*?Iv$Pzm*r;Zr)^8^?2d2Pfk|10I~|7Pkx~-~E&f9U|K` zQ6+yhy=iOt>*>vsYTl33{9HoKBYNfGCQflosd>DMWUQwKr&~$_b*UINk3K140`=6c zl^E&ZA+v_nu$pKzgs{5_p==&W_>x5+Tu=xxeU>kYJ}n5LTsd872tktDxyA%IJ6MYl zAET`(lupq*PIFOzUPQI$kWY#F^02}fM9Zs^HiyPJr^+pAnN%8AKsA?LHwzb#=Iy03 z$G`)lo77rs;shLRmj-l5!3P-(8{4JdhJaH0mq);xYyw`;9Y>zqAt3Mo2N+uz{`rJC zkW8i=n59DOjIbM>8Qqfbomb= z1XNkrL!Tqa@x+Kavl9)$foztQhdyJWib&K*p?VS3ySuiQ_f2Z7JI7fv6>5Pp_0o~4 zUMN#xXU8)2L}Y5WI=j1UWGeUh+#%d_!!1g-Og+_p$IDd9_0@dA0$pEQrkb}@=gL&1 zfDvHfq3U+HsZ|t+RJiGa_}Jm5`2vDn!c8~t0KU6Ps8$)T?w9KAZ0#&q&*N1%r%B_+ZrMch8bR;gK6b*+Sf9t!(#6BAM&*$S3gyFi>Lkj^Td3;^Re z&$n^xMPBAP_TedriG6AaAB6=9H8?m@I|QLIHdv4v%1) zGe78*RtqXZiO>AR@gby&PO``c{-&5Jiy7z?*%rC-Ns5FZpe!R7ox*$yw?(dxLg%}O z4z61~5F?dU#p(=*GRMR1{LF#UhqRj~<&0w%|J+TwAudM8xBB;CUu`;YB(I)OF zXx_td`Lx>cThvOWP~O(v2w667>zc=zd0T`j_7aBgwPJRQSy|w$xVcxn*K_Q0ky(+g z%x#%reWa>i_913N`l&cPa~ zYUycNK&Lp461CU(OL5dILLo8{wiTf!OWJl#+x6Rll_XblAM-Ylo`PyrRoc#(wx{~W$?*)7nz!~or0ueFhPT2Bd9DkP2W#rV4ZB}%*y^jDE)SZl94zjS za>FiuPDVhH+@-Xbm>V{?RI_85^Gmg?e7l$ch@%=O>HIUvRx$d-V1qub4N0AeVYuT1E<=lLC97 z@oFzgJzc7NGYFwqm|8d=UM${L>Zq=}PEQU(h)W7Wy;~v_d{%^vb~6Z}R|_Gt04B(9 zz388ted zpcFecJ?H2p%t|C7JV9@^06~$~tKr4(A1p_l@&TLLxRl3(A@NNcj)i>)XxBqO)pK9- zC-&hazi>Y9OTEV8<_=6n2-<_rFQdGbmHni*f@mgJ@x;89^RLdf)YjLsC;5pZqxvqH zQ9wk5%LoUrr_@Oi?Y*ShyQRX_=sWajY46oh>cmla96j4yTKied9ULN*g0RTWS=isy z66?B}4TR{ECYaed3%82%l{RG^2&EE2L4=-m90BxHfZKT|L^3pfySO0deQLq_z< zyw#jJL}?U|-(4#&E@keAh0P{`|DQ9pGE9s(@UJz4Yp5CgYP9klYX*Z~FsQARSJl3` zh44Q41?*<)WV{1}+>tA~rDhO&v=5y6mf4~}NZqlmLC$|6f7%5umj$4R4%&_5`m*v1 z?H-Dw_tK_N6xxm2myJTZnmRKIef0`bH;#`}EgL&-{LG3=u0+)unWcT08m?M4?>x$# zTO4F2XZr0X4iJP!C}tlBJ#9c>Lw-)254c!hdV$bGG*jt#U+e>%4>*)}#~-YZv=1(R zN!kZz`;)Z~mO4&R$#SP`QHh6jrJ612+z+{Ckc-gc9-MO?;@vD%li8;O1{&jCcJvzh zgvnucmcZE0*1b@qw=16*ZAl=Dz-=cu>?ozBi&zrp`=Z&d9c0j_Wl12!G+}H+is{@W z4`II0p)0Kne2T=8x=N0D2Oo55#gX9KP8grj`+jaH6%iuOz$V`JGn&=lOfyc8b!f$r z&?lza?7>0IBO96TZb9`2)Htcq38dR-LCrcAR8%319AVOeT7d=CI}n5s)wxsYMDrjS z*D!oOUeQh`(}oMbB;y*VdbE44o|R&Nzwo{bC*yB&z~&(2CgVNJ5|{|z6JS=|cvTUU8FOuvv$FB88k^H+GNnbBAjU;&SG?M1k7&os{ii{+r z0AeF4K0|p{F-GR>PRXAe7R7~OrsAQMFq%|6u;T2J(#YkBzTyWiNR{se;siFMOQ?z3 zgEEuTi{n5J+U>SETDbc584;gBl7LOL^H5E zb*S2ReWdnXNNL|ol^7G#zH^>an&o9xW>L_tgs%@YyHj`VW@o!uyHh<-JUh;DBWkCD zV;WL|wMZJ|N;M(KW(ijGX{A9B>CV<=Sf$^2d#b!rGwppMPDSt25v&kdrg9&qM=V*j zaz8*?z4xoSpLa~F|6L@jyv^H{tk=pE<0Wg_k3N9HawRL?wM{O{_4LG%#;I_hlP+gb zK%{oe7V#@|uo5n30YJ_lMErdd@q9I%iunGoBONTfw%I*^05Jk`-NZ!vonK8yw?hSa zs#Ne7DUZU@?wlX;X6fl#~4%|?v*=?K)ifC$VSFI;Pp=QC3 zhlKUmPH_0@S1xY%Tu!{7bnNWNJ0`FZct3G;!e!CfNx6k{zhafTCnwAn07PmSu;n$m zU+im9KvE=G`jyh#-9dJyuNTjq93jaGYpvb=Vn()%pPW=x$J(#V6}lV9up55tygd)3OT@l_xRMcHyn9+?>$+&4GsAah663pCY06D@k4>`R^cvUainOg5DEGh;<*v z3rW5n1yM56vVtR1QV1;-IM-rM=l4{FnVBGTN*n0J)PqhOA1^{DSp@|D-{;K?Y>Gt3 zmJTFO)N-&vpH_5ibrd#EVuZ9*w=cP;swt`!9FPHGky@A&8nq}saX>_;RxJz+)occG zK=dLIlSFLOAVT#Kbygxk#mjN&3z9^cD?44Y2jiG3e+O-r-^kOU+Zn2`d zGN->^zWr(x4MOvGIjJ}}0{O!d8^-!q)c_eU7E|%zlOs|+EWTl1{Q^=^!oz>RGUSJ| z;4%NQ?(R{wO;Zj-Ke!$#>o1OyvL5lxiOTx(BRfXbIvO3Ka?XOkajI>;W>(wyk&I3H zCT&lB6C6{LQUgVN69kPtbPl>%t`<7Ae3OpSDILFp9QeNFHjCNiHc(|0vdC*#LKYse zG3Re=DXaTs=djyj-AGyP_NW1S#HqQmVJlQCD@USwaCN(KO+{I)pqF=irRhFQPO&Fo zR*+=QUIhqr3dbtK6Yx6VX4&GmuMOJDq9|h8!J{(H5>u~mQrNb$EtlHc*n_iOS$zYX z@HWu>%4fZ8iV(9#oqq#Bw<~LG(i3|alXz)ESyilHeb*{fuGPxY5r8yU86MEC&7)NA z`il1RBSHP0BDGi9K@~WG9%KwaPK0f>TV1X0m_7e>K`!H<=(*IogcmWw6y>5C-hn~Zj9xdzb=l!-`6}n(YZ2x({A|BSYNd)dGr}L= zugbnEnS`$}J^4l|A&W}W)eT{&VO`i*{=nrVDZnzc6Bd;)OP)T!xj~485A-)8W(uUB z)z|AQp1AsbQT!*>8#+0a5370(n>y(N&G}Et87$bSa;&v#N6-2kdU6N57IC$S`hSi} zQFFD?(u7%`Yt=+U;{Z>*pNYAavH-7SesS*&8K=`FAkO_ zH4<;^;w)80o=c5cTQM)3T2zpX#XHCJ9gw+Hf=M9l$^ef#VFKFMBj&;xm0aYUzPFcz znA^m{<|L#E!KhrfS|iclHIEc)6;VO}TwVi3Y2st;v5Om7Ou@#WuJg$t4)}rS3b|x% znp(MGnoxX)0Eg5@#}xoi@x*2;8`wBY{u@JiELp;$l+c4#@d8w!xKhQr{}zg%7+%~g z0B6nxkLS6mNg@JMd$4(MI;8uY3d3}z^&SFamf-e6xebaD@y5)4t+#Q$>$4!GdiHkE z2obxJb^Lb;!@%%?Jl8l3SaW821M>V#S50orVu3LWYYWGXS|P*dIQLG9a7>9JhBgAs+~dVj0L34j6QZ__?4ct1@8$U>qP;< zVE88kX$+{@AWbf%w=2^dw$hG;WQmYqrJ>3}+Je9W$*D5zc#?pIE+p-SR5?g*Yo@pB z0+2{C4E7Wv<#H;@y@|gR3az4`0B;wRi^dGNt0TR2O>gG?+_`*$m&?{FDBniofixbP z#=WATpa&O}VPgiY`c-1M$3( zblhOMb1_aVNVkSMN3BkgBL~;JWnUTV0U8Z~B{P-h6l&PlC!6PQv9C|f=1W~G#$-XC zezZxkRTo-VwudTa%?NJGO@eT<8NNN1;WGnm@&v1HU7O)x7|e+aZv0LR2Jdh8##Jh( z&~mUK)><|~d7k}J(6(S)`Rb4Xz%ovCUhAbuU^)a2(~+r8vkjILEehj)>-mzYv!D$9 zBt;R^Z#tqMDWj8}%$x^xNrF{yoK1>+MKb5Gk7<7`I%uL(nvqMJunEcaX}aAG&6wyn z(QZkJ`zdbC#JOBob&7Bp!x^|?3dXl_SkmvooPG)3ql zfzX@|UBRBK)MNz(5V|o0f#9+tC+L-RdEG5xwE0m8K^HGYoJk4rdrK4NIgz8|n ztD$u-zSM$ve6LY@PFG@GolZI6zY=WV^ks`xZZRzc028wt(UVIFKy|J%5yK)AW_X&G`d%~zVV|Bqm6zPR!{sWt@Y85Lcqt5 zGJZMwQLt+KXbB3G0HDO9C15S_sFzCtXSPbfN|qW;S6Lk)XTcB3c@!bxcnV6ORf1hg z^qSAFV8Wfs*{&=xNCqzZ`OjFn66G)%C!_S8+>bdO3q^TMOraQLhdC#vXKuD-#lse) z40W2_Xu!==;E644LAwdG&J#u09-OkQY#Rs^X4?WEPhmz$e-)I7=21H9kJg5WP{cquW1tvsNRp89 zL$eU(8H56?XCyyBfvgr#Rqm-vP>ZFtcAz(9pzsOlsRmR!n$>W41;l%$q`1+eNNPGV zu7@zCx_m9(kDkLSXiUU1!?s5-s(7L5wC_vb4Z&sIn0@Ukz-s$)4X=cwEWxHdVz~Ae zdJ+_RU2VPJ3FLU`gVm9i*##`K*;k*oFkv|MN@n3qN4k?~X8dH#XPiWYQh{97JjF80?X*A|wRItcz*=PQsA`7hb_V6llF9 z=Itm7Kni9dqFHLgD<%{qc6c5l7ZxJv@Daehd8NQ#HAFO#jKK!p2?CH4$zsl5Dp@=o zCX2fbnP9wP3=-))OcwhXVB<`a#q7U3KD{dM;e%RHLLv8nW)&<}kyI3P!(;spHow?j zHuU5y8{SN#i5`ZVie`3RR~(kyfjNWLz{9O@V3CEoC^84W$sJghM()6#J8(O~Sf)N_ z;2?KkQQf%%lMOA5Zz7BdQO>w0x#P+_<&H}>v&LPC#w8!*jC-CtE*Fo!;&Bvfap_v) zPDkTPATDR%cJ9D3O}PkD*INTGL<5uAbH;7vj(Z1|rmD;tciL1nWG|)hga%p{TZm!S zFpLJxa|X*N?)bq*&Z^KSXW(uwb^okc{jHB*T3b5G7#&z((T3aDd z!uc&ZQ~0LpCb#Zl>vOr}S;#1^u}pm~YVlxGxnX1PgO0;jA;_HHrKoTe*o;Wuh0nvb z8Ey=>CS+V=E#8Ecm^V^P$xyGTRncxI@MEECHMNK2tK0#Q!;Mq*YFE@(UiQUTZc0IF zuwnE%_Q|us;(^>e({S&S(_+pSZi`KIF7Tlybo)A9+9rl{oHkwnjC;yT8Rt7WOhTAE zc0d3rVh01fEJbY-dO3!emQ>1Eq?DDJ%|tAypw4I}QZln0S$SkL-pp)8`*LI}iyjHw zVl9>dqhOFZT5LRKG!uGdHlx))63CH+q>nPP)h%Hh-OS4y?UtzBve_+pWHfHM(?-NI zXN_L*NcxLsoY~B>y(h;cqd7Sjw_8p?q1Bd9CO8CZ`qe>iz?W&J$}y1Pgs|R2=_;Ap zlw)wWAcQ34uw4E)vsSJ4HjX7GsigtBFUH&tMJXH1AvK8}A+ay2NQIz;TKeU!WyxA* zv{}$LYuaYrZnHY7%~CYZ(q>|u^-*nBw9So<^VJ?lGpZS|t!bN~wz;(1oI;;PG_q+h z9l@5O!P%%bC%6H+b-|(4vHH-o~gms!dzlv<-9} z2fF^KR$Xm%j;A?P%V{+j)#^f9k&%ehywmD(RI5N+EhtutHdfc8+6=YLv{G-@Zu50i zn=5T|0;t+sILzIFZhlm&8*K%evynsd#ZhhM!Zwd)9vwGZ{-YO{h-?I4E)aE(Tm?6HQT*ze=ybVHl~jI-S*U% zN6-G(^XIenf1Pf_Kg0vWmLJTvo1NyfdJsJGuLpgvK6ut^4Nsb#*+w%M%(l8-!|!9L z+%DK!pPX%W8vZq&fBCZSA3u9GKmTk#x9R2351Y1{M`pZWHW=Kr{P*2p@TL#|Jv?av z!Jg89EaUL{`bOG06hQI@;WC!%C|3%{(H*5mKksO$KJ3dGap_1 zuLmA*rtojd0}uq`mi=AVywl!VYcZc^FLy!{GG$uWtwDTL^fk{ljGUg7p1N4WCsaM#yC~)`@@d^5F|sGHbFNH zw~h^+B&q+;<$wZ9{;uoYX`Tb8Yzb7%*56k#oF5_2&LGNJ^{}UGR-DkSM5>EOa4<5AC z+myDhlXNU+U?ck3ebelm`~3$u`XB5@Pm~P`EPlsJxy8zN+CTWxg(?tsJ(LahA2j$s zL4!|Xt_v*Vr0%)JN=|lBVlgM1CN$qaCI-5Tvd(6&Zn_qgTkEQqpe*=byKAv=w3 zv5KAcWtXtixSYT3G)=%gCY7bP(dIku<#51#m{{Gb6z@HAH9M9rrB-|{Qg7w>K~DWp4^OMNnd*X zslJaLkNv41r;dl6I*W>@o;;oUop%l|+dmFYo56p}kJBIV`}q&`z7L+Owfr{9ko8Vo z?i>bw>-hO${eS-F@btg?{$SYeOdZyrJZ>~EAJ6=*J3*^0Y*KvjC^u_oiR^;d4x@?_!VNWh;@9w z@zFo(b_a@?-+DIacIg-c5^pf*2QPmA@`w}xWxqUn!Oon)`aY=GA5?n1$4_UzJnFT) zy37Ke{qpFjI~a7^&oG&Q+u(>1j)u708I5XR05Xq#c{CHj!L6Lq@s-!_V6I4wZbu+& zHS6aFz8Iu%%%JCCI3aN}H7o#X0>Nk4X@{1l=+mOvmoJ?u=iiq{(?ZY;x;Hx@MW^m7 zJwg5HFOL%KF$4eM|7PZ&3Mmi$C)Qxm1OcQLvJ3VU47nh1k@z2bEgVVv<c>9@MQ=Ll_Jr?U4v=+>KFYxc;ipJO6sy$01_fL+O4SF_bOJBI@= zILB`2Zs)jpG7EZtd4wrF@j2gL9vvQGUo1!)(z3w(2^c!boFSomp(#MaA(!y&=OFO? zO%P!m@i_sRO9R*qyraOTJbpie`fZY2LXnn#ObBPN*V}KsfK+M?{TH$fvC+GE>3{N$ zp3c<0R*NKm5lgTiez=4XBlkql{fKLS%wVfAI4?l|pm%i7A-MqIb$lDJmUra008wg9 zN*B$+&HLezEJ|!T_l{aV7NI<=6TN9JVzxV8TbGs9P}rd5eZ3KsV_3pRp7q!{>6js4 zl#0)=>Iwpk4J0KYMT?OjI@?hu38cySl?K(c%K^A63*PTf3|jEhX`>vV(qt5jroRbI zcwM*tm4nYT8U9ApqNwy)8#ZZ8HkMu*XRO7zHa!0vWX%2`Ha<)??gzVtm>52VTP)cx7SL zR-+*edz}OOruex!fhC^0gTQG&FoP2N|u9B+l&G+>~TT>cCkgf zq?I5|MuBJgBXr^aM|rd+g0kB^LM6@A|NIYQIEbjgO=|fj>>%-&zh*#1u*(Relnrux z$2i9AV;ClW5zX`n=FAGOb-YVE5*9~;5TZlh=+)8 zs`VQXKi|b6m*7w9iOjk=c@%)9;ccPr2cPgtJm_AEzFN zffEVJNEA7|qM?*%O(o(fnSDvTL_0|YJ4$vFMKr?B;y^^1o=kK=Ix*kNG>=?&=^*-5 zri<9GmOkR2WjYBxU+E(JQKkd+PNlhiEz>ymBBg`)XPHhyAMmlp^DURJOfR7qCV+%L z%5)HVNzy_1qf`fxe`7Fd+wM%cowcHK#m{e?0x;ONXgG&DDLByx>+RKx*)} z|9t6u>6l|We>W+^nbd=S6sQtN=DUv=S+`G6jWXVKuYT%pHv6zxy8W989$lKhm7v~l z_6B-D=~?iv$sA95?~%mB{Tt>I?7e~if0&2+H|$FJqF<*jpEZwvj1srcVPC1LeIZ%a z$8b<#CIDzO>x|pvIkh1c#RkoQac|H^Dl{8J z8R1qC{u@UX7bErnr-|U?FaKUq^;u`wK0*b7VUb%CcLyl|L^!`4bwfJ;d)8w0FP(n} zvgE-oiF1g5=R#n@?#0yOgv@w6!+T&x!Kf1Q%s=0nELJA(HR8T%v7b{ z_ip|p&6wmiXC1$YsxDY`5huWnTk|_4vZln%mp@DghSgKUnbE>llNn{Z-yQb8)ldXg zu|mM}wA+a3If9Y6x?@ry!5Uy)Q)oa>v0CLh=ixW`W(fo+FeRj+EN7>C95$rWfHXbU zwn(z{O=a=N+DSMGF@O&1P6j|l31W3_)S$L7n(&y96PRX6T>)@rO2nQuANkh%(8Il z^AqxF)(ud|0PEg;&dGina>pN2KI%PU_R1XFU~aS6WCnL<+C|t5YVdQgAp$YT0@e=! zY$pFXvXng!`u54=&o=c?b20V%R7O`JX6SM1kBBI_J>rCa6dvSs7j+~e41e(7zh@(v zOZm&Q@?liAe#9cgS2-yjPXxi^DLE+qv3!Ss{=eps@W-$s@t;0D3!kU+_`i9#Q*R9$ zerN~;G7x)2)7Ui4v0uZ(=AX|dJfDrk)qJZ$>66f~QCHT^r{jaG`x8L?!&96RIH{RXQfiX7qU$YT4 zqTBrtkTSMBES^EL?W1JMbp19Qjc;`z(dn{8cOg~c@t$x&DRo3|YN?}qP53x+&D46K zO=s9@$tC9td;8MCviQ=8#(Qo8lg|$i`OXUr|K(8z?-0&}brE-=H~2CPqViqpF|{Jm z(vK-?o*}&SeOmO%y3EL`w+p63l9(c>SWh}Oeqw~DQGKD<`e+-4dey*>gS`MPOCyDT zK&oSeYcnH#*}g}zc~q?_>S{cawq8#572+seO&G=4k+;42EX33E8fo8u_T(B@X8asG z2H&4Q$^ZGMgl=k$CdxBg{%il{s@reuWW0UmZxX+`1*VxnoGA&=ATEKJu8{5-Y)8`0 z&JdbV34=bN8=saDeP7anPV7M&9C!O1K=%Z|sux!nVVf5i3O7*RywiAMZZn({f@H>c zW~8Bkf)+nRMRGNc6rmT)y4{VHon+hvSxdi!cSJq5fp*SnlrQ|FLZ~`d2>I*ht3MQ}700f`938>FJ#UQ;HfUVz#leCw!TWJ= z*UMX)56u5*J<|k9>k5G7m0jJ zhn7R(_FzZgLn4ngD&u&!$tZ{w+SqA;1O_?B=>YTbpFXTI+*g{hzCl`$V9)hdXuD4R z_wWm*?54sw|dNRNA^pF2f9gJ{h5^h*L52j~BF03+# zSgB4dk1*~-r{{OD=+qyWmXV~_-lh;Mm2KwDMyh*Pfu~0hHC<{DY2l93%d%JHIg@Jo zghWd0O(vl*i>esU+AGlE*tXYu60#+S#p{col5e9apPFJ$ZX_+q#uQBvG*&K&OD3c- z-Dl#Xat!lpCFuCvOGugD1o{8GNX%TcynYk#{=?NXCFvkG)PEFGCRxq`4u^Tr;qOzB zYc391z0R17?jKg~)>ngzan(aEVx}wnE}gnd*QWgUSh()!hMh8!b&|M@r`gd4d**g&C

sk|UiM-x(gS+*xuxr`@1!XWV6<-bJY7n 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 H=K22v0)?pf literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-d38a.a851004a.js.map b/priv/static/adminfe/static/js/chunk-d38a.a851004a.js.map new file mode 100644 index 0000000000000000000000000000000000000000..6779f6dc1e57a7e924a9af491da29c3cd3cb41ab GIT binary patch literal 81345 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 QTVLWO!?#v%-TM6h0LSrR$p8QV literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-e458.4e5aad44.js b/priv/static/adminfe/static/js/chunk-e458.4e5aad44.js new file mode 100644 index 0000000000000000000000000000000000000000..a02c83110f6e19f3d4b9281b8d4d2b77f8c9abec GIT binary patch literal 16756 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 M;L|}XQ}Gy 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Ν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 LnOmEi`}F?-th5^< literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/runtime.1b4f6ce0.js b/priv/static/adminfe/static/js/runtime.1b4f6ce0.js new file mode 100644 index 0000000000000000000000000000000000000000..6558531ba18c4cb854e2c1a9c609256d40dfd89c GIT binary patch literal 4032 zcmai1ZI9bF68?U_!pj2;5$19wzeutjAxMLKxS+irF1;`3GYXm_S4y;`OHti!ZTV1>l6fi8lbLJV&Gcz}`QrzZRc>-Vh_Dp#SdfIruGcz-U6PBoheRde9d-gSvt!kWanQ{h10>8fI;x59&xva^n-8 z1bhC*_UpJ?=Kzz51#S2KO_Edx2^e^=JixVqmZs&o$hq*;?JWr~5ef4cEnx?M14~+w zMcn|OTxz)FVk%|x2eI>OQa$Tw2mYW0b4JUhXFx#Q9pu_n{BhRCmV0-mP25m&$#;qr zyPJS?le#5-KCs({2-2RRr?5B8}A%0 zt~H-u5YH<0*B>!z!iO}hSOGoAILXxd$^;`L;4DB@t!UHiebyN&#GGP_)+ z%Sl(PpIsD%t7tOoZ$o!f-AF!BC{f~Z29Nb2FNHTipokqGjY+(V+jqSRyg(E!E-3o* z&v$5tRzVtaDSSjeez5PS{r_hF_+i?A1{Lx-_x&|!{v0#J*(v4Ar5MIr@DP)J8gF?z zjyEWxbSt7D_SrDr!ikp4D3)==hw&Cy_K>_$ki8wi3T3gZ>pXj^vDlh4$PpB*zJF3t;tW7g?%Zr>^3t(B7D8(Urn~-dvI`6 z+NVO4nGhBwNs?0|3ZNDVZF9Z4563+LD4;p#i`iev+?|JAwlxkIImL>`&wGzf?Gcph` zVauRuK3CK-13-^0S{i=6axkRx-4AZ7hkk^^a&5Tz@d1WTVVs`z{^DXf@0Z>1FnW^$7lHh>XE zgF(pXo{94@usyRmzx!O?p~Y+5DFP+}z6IZHxl?XWY`t;)mOJAxNaboZaz-0wkUVi; zhTn20i#Gv~>c}M>cSf7-W*tB*=sB;AKO42JQJJ6F+a#kg1w z;~jVM^_H>F$^D!=!$_V2pr>KHVlXT0`75I)M$ai;)qA=(1Rc5-*z8FCTDTL{t}cYZEW4JiT8 z;TRnuHjYj^cyd(~gcpLDU)s0iWiLN|m*qfs9XuSE1Dw}!A^1A*#9IWxxCCcLyLJEr zcfZO6AlM5u@Er=+0WnM6cX{2EJ(T z;^f|;&WR9dDQhQdAeUe%*3Rb!mg@o2Bi%S+dB!PnNG7}7gt|0Z!EuZ}Bm(|9uot80 zXcfqOUDm>=_MizNsLRY#A#)}AeB8~Ei%<{%4LcQL2YDc{>&`k+8J&zp!q1PJsaeH5oN z<6l0OTAg1Sa|I;Sz_P6?8{DMxPgm$dIwE1FY-+qVn{xJtQW>gb*=JO)N`_z$RdP#k xX_D<-LFz$ey8qkV-QQ=Wt_&AHL6!in@t=SHm~=%T4Nhwb4C~X+C4FG${{s(dAF2QV literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/runtime.1b4f6ce0.js.map b/priv/static/adminfe/static/js/runtime.1b4f6ce0.js.map new file mode 100644 index 0000000000000000000000000000000000000000..9295ac636662a5c452c5f9d36dad506c5e620b7f GIT binary patch literal 16879 zcmd^HTT|P}w*D&`KMbZ~jBN}y%$eFHgdv2G%aBa=Y@DKGSq2j$c`O-1GWqZOTbFLN zY%$5yc{mSeYH!@?UcGwV*HU*YUu*aABAcd3?O>--%hKf{inH3mW$hsz&BN%^!S?pH zHn&GtFt z_?%(rDgGQs%iQUhqH_^v>FgehHEOdsxz2CUm?l|{wc>F=NNH%k%xK{C=r)dWdS0Y? znm^8Cv~R-f^+WPzkN$%fo6n{Z(Ry{I;=WqMe=ets`05J1 zM5E=oAj5VAS!N}%SSI=Oj&Q}F=jkG+xxy(L#5N54IucKC?lSMUUafWbc(it_MU z;QTyaOh>S2JT79Ey`sLzA7`=Rp2;$Ri578~$BG@#YQJeROG6T2n!paz1zPdF5JN^1 zXGB&WEPLqphF`ef@dN-fN z%tOW<7>jPgMaHX(o4j1q29M%k`FRk#y1udd=uoDmNRnTaS6jZZNd*=U+DHE5`+j>TLqQ|! zoiO?nhJ8cBzF^kmz`%R{8}nZp{awic zX@11*F{72Gp99YsAv^YCMs{EpFtXox)h%i8F&x;lU~5&;g9cMA2N&x@;{&@ zz-(p*{eh~FKt3tXV}>6S&dwob6A~Z|7%7R1^d`C*Fgk`1+5k=hJQn;U6{0`zMfq;a$)O2{$e9f6|1d%n$cTEWwk+t7Ahys(ezfFiPTJBYAGL2H$!( zoE@=tNeFv~clz*wXOUbQE6v%VNI|;80^-M;QGsDpG^=}6&`+=Sfwjj}{$3#aAk9DE z*`qH>tGM`6^5r;=JjZj&c~F!K7}(V+ob9p@Dr ze$Wu&FN`5qaPUkP?=c5`hl5+96aG)*jQj|67R*R=-!3zAeTbDNB_i1iSBO*>d&5M& zZIB39z(NY;GIWGMHDFB)jAkin5WW-U`kov$F#dYV;X&D^2*+4NyOPBQ3?Uc>jDcc- z@57J@k4jFbof8Qxy?r5qscdPRQk_X}@6rAuF#~ae6hT(RXbJmUMt)M##|KP7R)JCa z{{{)c*&mj}mva$l%3nx<{ye$+^;s%Q(S02z{EunS06we-&X4usk64T(NBN%Qb zl>s8~uN941k+gCx)REu@nqW0-nq|l+DZp?>kc4UM9||LvQiZ<zQIv%>>Tv%g{D_OXQiUCp^9s7Fzfx_SdefuA1j{C^30=YIeA z_WJPg7&hShU#R97_;+GdtQIP~23m9dhh0U=C91aI3uN+ekr3?{Vtix|Qc}(ZjboG@ zMGOOwGD5N?6-KUOCR*H(SqQ{)@dTZU*={ z)o`StD<^7Cd{J#j82my%CmLJ3(#PxEOZ!27q>55eK9fETM}S~wJ!UGdPZ}|n-?6hH ztX6Q!@eV7I*onLsVEe2cC_>j1(Z%5{CEZ~q!baIK@D~#L%PRnanCJZYa1@B%Klp>s zM|l-EMe^wp!lv5w+uI|SitjJgG)Tr0ScniLKT3N{xfrj2>7f%(iqQMnMEnNK>DXSHZT>+>swJ!?FF?-;q^SPOn))3ajFfx`j|b2JZ@KpTX3E zFJj-s4{T3KAzd&%=S-&*#mbi2LBwn;U*e{~aQ&QllnMMk^5>!0BqQQry*O1lP_fw- z;`{Q$#`T#(kaDgT_E|DLSR{8LMmmR#B(d{?okQx!n*<4uG&4X6_Zs>UVw7wpn9Ph| z5c2T%)WiWbUM53d_{g~ZOp?KkaJT-Z+m(<+=6jMK-N=*4C**`Pk@A!x1C}It;XM#- z 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 HZG8PNKeSTC From 8cf3a32463856f91a4e64a5cd33b5538b67c25c9 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 30 Apr 2020 00:49:59 +0300 Subject: [PATCH 124/137] Add exlude_replies to OpenAPI spec for account timelines --- lib/pleroma/web/api_spec/operations/account_operation.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 64e2e43c4..d3e8bd484 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -131,6 +131,7 @@ def statuses_operation do "Include statuses from muted acccounts." ), Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), + Operation.parameter(:exclude_replies, :query, BooleanLike, "Exclude replies"), Operation.parameter( :exclude_visibilities, :query, From 5839e67eb86d6d14b21222247ce8e113c3b26637 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 6 Feb 2020 18:01:12 +0300 Subject: [PATCH 125/137] return data only for updated emoji --- CHANGELOG.md | 7 +- docs/API/pleroma_api.md | 2 +- .../controllers/emoji_api_controller.ex | 93 +++++----- test/instance_static/add/shortcode.png | Bin 0 -> 95 bytes .../controllers/emoji_api_controller_test.exs | 162 ++++++++++-------- 5 files changed, 149 insertions(+), 115 deletions(-) create mode 100644 test/instance_static/add/shortcode.png diff --git a/CHANGELOG.md b/CHANGELOG.md index c0f1bcf57..a220c14f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -125,13 +125,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

API Changes -- **Breaking** EmojiReactions: Change endpoints and responses to align with Mastodon -- **Breaking** Admin API: `PATCH /api/pleroma/admin/users/:nickname/force_password_reset` is now `PATCH /api/pleroma/admin/users/force_password_reset` (accepts `nicknames` array in the request body) +- **Breaking:** EmojiReactions: Change endpoints and responses to align with Mastodon +- **Breaking:** Admin API: `PATCH /api/pleroma/admin/users/:nickname/force_password_reset` is now `PATCH /api/pleroma/admin/users/force_password_reset` (accepts `nicknames` array in the request body) - **Breaking:** Admin API: Return link alongside with token on password reset - **Breaking:** Admin API: `PUT /api/pleroma/admin/reports/:id` is now `PATCH /api/pleroma/admin/reports`, see admin_api.md for details - **Breaking:** `/api/pleroma/admin/users/invite_token` now uses `POST`, changed accepted params and returns full invite in json instead of only token string. -- **Breaking** replying to reports is now "report notes", enpoint changed from `POST /api/pleroma/admin/reports/:id/respond` to `POST /api/pleroma/admin/reports/:id/notes` +- **Breaking:** replying to reports is now "report notes", endpoint changed from `POST /api/pleroma/admin/reports/:id/respond` to `POST /api/pleroma/admin/reports/:id/notes` - Mastodon API: stopped sanitizing display names, field names and subject fields since they are supposed to be treated as plaintext +- **Breaking:** Pleroma API: `/api/pleroma/emoji/packs/:name/update_file` endpoint returns only updated emoji data. - Admin API: Return `total` when querying for reports - Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`) - Admin API: Return link alongside with token on password reset diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 90c43c356..a7c7731ce 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -357,7 +357,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * if the `action` is `update`, changes emoji shortcode (from `shortcode` to `new_shortcode` or moves the file (from the current filename to `new_filename`) * if the `action` is `remove`, removes the emoji named `shortcode` and it's associated file -* Response: JSON, updated "files" section of the pack and 200 status, 409 if the trying to use a shortcode +* Response: JSON, emoji shortcode with filename which was added/updated/deleted and 200 status, 409 if the trying to use a shortcode that is already taken, 400 if there was an error with the shortcode, filename or file (additional info in the "error" part of the response JSON) diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index e01825b48..981bac4fa 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -385,23 +385,35 @@ defp update_metadata_and_send(conn, full_pack, new_data, pack_file_p) do json(conn, new_data) end - defp get_filename(%{"filename" => filename}), do: filename - - defp get_filename(%{"file" => file}) do - case file do - %Plug.Upload{filename: filename} -> filename - url when is_binary(url) -> Path.basename(url) - end - end + defp get_filename(%Plug.Upload{filename: filename}), do: filename + defp get_filename(url) when is_binary(url), do: Path.basename(url) defp empty?(str), do: String.trim(str) == "" - defp update_file_and_send(conn, updated_full_pack, pack_file_p) do - # Write the emoji pack file - File.write!(pack_file_p, Jason.encode!(updated_full_pack, pretty: true)) + defp update_pack_file(updated_full_pack, pack_file_p) do + content = Jason.encode!(updated_full_pack, pretty: true) - # Return the modified file list - json(conn, updated_full_pack["files"]) + File.write!(pack_file_p, content) + end + + defp create_subdirs(file_path) do + if String.contains?(file_path, "/") do + file_path + |> Path.dirname() + |> File.mkdir_p!() + end + end + + defp pack_info(pack_name) do + dir = Path.join(emoji_dir_path(), pack_name) + json_path = Path.join(dir, "pack.json") + + json = + json_path + |> File.read!() + |> Jason.decode!() + + {dir, json_path, json} end @doc """ @@ -422,23 +434,25 @@ defp update_file_and_send(conn, updated_full_pack, pack_file_p) do # Add def update_file( conn, - %{"pack_name" => pack_name, "action" => "add", "shortcode" => shortcode} = params + %{"pack_name" => pack_name, "action" => "add"} = params ) do - pack_dir = Path.join(emoji_dir_path(), pack_name) - pack_file_p = Path.join(pack_dir, "pack.json") + shortcode = + if params["shortcode"] do + params["shortcode"] + else + filename = get_filename(params["file"]) + Path.basename(filename, Path.extname(filename)) + end - full_pack = Jason.decode!(File.read!(pack_file_p)) + {pack_dir, pack_file_p, full_pack} = pack_info(pack_name) with {_, false} <- {:has_shortcode, Map.has_key?(full_pack["files"], shortcode)}, - filename <- get_filename(params), + filename <- params["filename"] || get_filename(params["file"]), false <- empty?(shortcode), - false <- empty?(filename) do - file_path = Path.join(pack_dir, filename) - + false <- empty?(filename), + file_path <- Path.join(pack_dir, filename) do # If the name contains directories, create them - if String.contains?(file_path, "/") do - File.mkdir_p!(Path.dirname(file_path)) - end + create_subdirs(file_path) case params["file"] do %Plug.Upload{path: upload_path} -> @@ -451,8 +465,11 @@ def update_file( File.write!(file_path, file_contents) end - updated_full_pack = put_in(full_pack, ["files", shortcode], filename) - update_file_and_send(conn, updated_full_pack, pack_file_p) + full_pack + |> put_in(["files", shortcode], filename) + |> update_pack_file(pack_file_p) + + json(conn, %{shortcode => filename}) else {:has_shortcode, _} -> conn @@ -472,10 +489,7 @@ def update_file(conn, %{ "action" => "remove", "shortcode" => shortcode }) do - pack_dir = Path.join(emoji_dir_path(), pack_name) - pack_file_p = Path.join(pack_dir, "pack.json") - - full_pack = Jason.decode!(File.read!(pack_file_p)) + {pack_dir, pack_file_p, full_pack} = pack_info(pack_name) if Map.has_key?(full_pack["files"], shortcode) do {emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) @@ -494,7 +508,8 @@ def update_file(conn, %{ end end - update_file_and_send(conn, updated_full_pack, pack_file_p) + update_pack_file(updated_full_pack, pack_file_p) + json(conn, %{shortcode => full_pack["files"][shortcode]}) else conn |> put_status(:bad_request) @@ -507,10 +522,7 @@ def update_file( conn, %{"pack_name" => pack_name, "action" => "update", "shortcode" => shortcode} = params ) do - pack_dir = Path.join(emoji_dir_path(), pack_name) - pack_file_p = Path.join(pack_dir, "pack.json") - - full_pack = Jason.decode!(File.read!(pack_file_p)) + {pack_dir, pack_file_p, full_pack} = pack_info(pack_name) with {_, true} <- {:has_shortcode, Map.has_key?(full_pack["files"], shortcode)}, %{"new_shortcode" => new_shortcode, "new_filename" => new_filename} <- params, @@ -522,9 +534,7 @@ def update_file( new_emoji_file_path = Path.join(pack_dir, new_filename) # If the name contains directories, create them - if String.contains?(new_emoji_file_path, "/") do - File.mkdir_p!(Path.dirname(new_emoji_file_path)) - end + create_subdirs(new_emoji_file_path) # Move/Rename the old filename to a new filename # These are probably on the same filesystem, so just rename should work @@ -540,8 +550,11 @@ def update_file( end # Then, put in the new shortcode with the new path - updated_full_pack = put_in(updated_full_pack, ["files", new_shortcode], new_filename) - update_file_and_send(conn, updated_full_pack, pack_file_p) + updated_full_pack + |> put_in(["files", new_shortcode], new_filename) + |> update_pack_file(pack_file_p) + + json(conn, %{new_shortcode => new_filename}) else {:has_shortcode, _} -> conn diff --git a/test/instance_static/add/shortcode.png b/test/instance_static/add/shortcode.png new file mode 100644 index 0000000000000000000000000000000000000000..8f50fa02340e7e09e562f86e00b6e4bd6ad1d565 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PU - File.write!(pack_file, original_content) + on_exit(fn -> + File.write!(pack_file, original_content) + end) - File.rm_rf!("#{@emoji_dir_path}/test_pack/blank_url.png") - File.rm_rf!("#{@emoji_dir_path}/test_pack/dir") - File.rm_rf!("#{@emoji_dir_path}/test_pack/dir_2") - end) + admin = insert(:user, is_admin: true) + %{conn: conn} = oauth_access(["admin:write"], user: admin) + {:ok, conn: conn} + end - admin = insert(:user, is_admin: true) - %{conn: conn} = oauth_access(["admin:write"], user: admin) + test "update file without shortcode", %{conn: conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_dir_path}/test_pack/shortcode.png") end) - same_name = %{ - "action" => "add", - "shortcode" => "blank", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_dir_path}/test_pack/blank.png" + assert conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "file" => %Plug.Upload{ + filename: "shortcode.png", + path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" + } + }) + |> json_response(200) == %{"shortcode" => "shortcode.png"} + end + + test "updating pack files", %{conn: conn} do + on_exit(fn -> + File.rm_rf!("#{@emoji_dir_path}/test_pack/blank_url.png") + File.rm_rf!("#{@emoji_dir_path}/test_pack/dir") + File.rm_rf!("#{@emoji_dir_path}/test_pack/dir_2") + end) + + same_name = %{ + "action" => "add", + "shortcode" => "blank", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_dir_path}/test_pack/blank.png" + } } - } - different_name = %{same_name | "shortcode" => "blank_2"} + different_name = %{same_name | "shortcode" => "blank_2"} - assert (conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), same_name) - |> json_response(:conflict))["error"] =~ "already exists" + assert (conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), same_name) + |> json_response(:conflict))["error"] =~ "already exists" - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), different_name) - |> json_response(200) == %{"blank" => "blank.png", "blank_2" => "dir/blank.png"} + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), different_name) + |> json_response(200) == %{"blank_2" => "dir/blank.png"} - assert File.exists?("#{@emoji_dir_path}/test_pack/dir/blank.png") + assert File.exists?("#{@emoji_dir_path}/test_pack/dir/blank.png") - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ - "action" => "update", - "shortcode" => "blank_2", - "new_shortcode" => "blank_3", - "new_filename" => "dir_2/blank_3.png" - }) - |> json_response(200) == %{"blank" => "blank.png", "blank_3" => "dir_2/blank_3.png"} + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + "action" => "update", + "shortcode" => "blank_2", + "new_shortcode" => "blank_3", + "new_filename" => "dir_2/blank_3.png" + }) + |> json_response(200) == %{"blank_3" => "dir_2/blank_3.png"} - refute File.exists?("#{@emoji_dir_path}/test_pack/dir/") - assert File.exists?("#{@emoji_dir_path}/test_pack/dir_2/blank_3.png") + refute File.exists?("#{@emoji_dir_path}/test_pack/dir/") + assert File.exists?("#{@emoji_dir_path}/test_pack/dir_2/blank_3.png") - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ - "action" => "remove", - "shortcode" => "blank_3" - }) - |> json_response(200) == %{"blank" => "blank.png"} + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + "action" => "remove", + "shortcode" => "blank_3" + }) + |> json_response(200) == %{"blank_3" => "dir_2/blank_3.png"} - refute File.exists?("#{@emoji_dir_path}/test_pack/dir_2/") + refute File.exists?("#{@emoji_dir_path}/test_pack/dir_2/") - mock(fn - %{ - method: :get, - url: "https://test-blank/blank_url.png" - } -> - text(File.read!("#{@emoji_dir_path}/test_pack/blank.png")) - end) + mock(fn + %{ + method: :get, + url: "https://test-blank/blank_url.png" + } -> + text(File.read!("#{@emoji_dir_path}/test_pack/blank.png")) + end) - # The name should be inferred from the URL ending - from_url = %{ - "action" => "add", - "shortcode" => "blank_url", - "file" => "https://test-blank/blank_url.png" - } + # The name should be inferred from the URL ending + from_url = %{ + "action" => "add", + "shortcode" => "blank_url", + "file" => "https://test-blank/blank_url.png" + } - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), from_url) - |> json_response(200) == %{ - "blank" => "blank.png", - "blank_url" => "blank_url.png" - } + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), from_url) + |> json_response(200) == %{ + "blank_url" => "blank_url.png" + } - assert File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") + assert File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ - "action" => "remove", - "shortcode" => "blank_url" - }) - |> json_response(200) == %{"blank" => "blank.png"} + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + "action" => "remove", + "shortcode" => "blank_url" + }) + |> json_response(200) == %{"blank_url" => "blank_url.png"} - refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") + refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") + end end test "creating and deleting a pack" do From 342f55fb92c723acf7f53de2dae390b72051c94b Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 28 Mar 2020 13:34:32 +0300 Subject: [PATCH 126/137] refactor emoji api with fixes --- lib/pleroma/emoji/pack.ex | 509 ++++++++++ .../controllers/emoji_api_controller.ex | 616 ++++-------- lib/pleroma/web/router.ex | 3 +- .../emoji/pack_bad_sha/blank.png | Bin 0 -> 95 bytes .../emoji/pack_bad_sha/pack.json | 13 + .../emoji/pack_bad_sha/pack_bad_sha.zip | Bin 0 -> 256 bytes .../instance_static/emoji/test_pack/pack.json | 16 +- .../emoji/test_pack_nonshared/pack.json | 5 +- .../controllers/emoji_api_controller_test.exs | 944 ++++++++++++------ 9 files changed, 1327 insertions(+), 779 deletions(-) create mode 100644 lib/pleroma/emoji/pack.ex create mode 100644 test/instance_static/emoji/pack_bad_sha/blank.png create mode 100644 test/instance_static/emoji/pack_bad_sha/pack.json create mode 100644 test/instance_static/emoji/pack_bad_sha/pack_bad_sha.zip diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex new file mode 100644 index 000000000..21ed12c78 --- /dev/null +++ b/lib/pleroma/emoji/pack.ex @@ -0,0 +1,509 @@ +defmodule Pleroma.Emoji.Pack do + @derive {Jason.Encoder, only: [:files, :pack]} + defstruct files: %{}, + pack_file: nil, + path: nil, + pack: %{}, + name: nil + + @type t() :: %__MODULE__{ + files: %{String.t() => Path.t()}, + pack_file: Path.t(), + path: Path.t(), + pack: map(), + name: String.t() + } + + alias Pleroma.Emoji + + @spec emoji_path() :: Path.t() + def emoji_path do + static = Pleroma.Config.get!([:instance, :static_dir]) + Path.join(static, "emoji") + end + + @spec create(String.t()) :: :ok | {:error, File.posix()} | {:error, :empty_values} + def create(name) when byte_size(name) > 0 do + dir = Path.join(emoji_path(), name) + + with :ok <- File.mkdir(dir) do + %__MODULE__{ + pack_file: Path.join(dir, "pack.json") + } + |> save_pack() + end + end + + def create(_), do: {:error, :empty_values} + + @spec show(String.t()) :: {:ok, t()} | {:loaded, nil} | {:error, :empty_values} + def show(name) when byte_size(name) > 0 do + with {_, %__MODULE__{} = pack} <- {:loaded, load_pack(name)}, + {_, pack} <- validate_pack(pack) do + {:ok, pack} + end + end + + def show(_), do: {:error, :empty_values} + + @spec delete(String.t()) :: + {:ok, [binary()]} | {:error, File.posix(), binary()} | {:error, :empty_values} + def delete(name) when byte_size(name) > 0 do + emoji_path() + |> Path.join(name) + |> File.rm_rf() + end + + def delete(_), do: {:error, :empty_values} + + @spec add_file(String.t(), String.t(), Path.t(), Plug.Upload.t() | String.t()) :: + {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} + def add_file(name, shortcode, filename, file) + when byte_size(name) > 0 and byte_size(shortcode) > 0 and byte_size(filename) > 0 do + with {_, nil} <- {:exists, Emoji.get(shortcode)}, + {_, %__MODULE__{} = pack} <- {:loaded, load_pack(name)} do + file_path = Path.join(pack.path, filename) + + create_subdirs(file_path) + + case file do + %Plug.Upload{path: upload_path} -> + # Copy the uploaded file from the temporary directory + File.copy!(upload_path, file_path) + + url when is_binary(url) -> + # Download and write the file + file_contents = Tesla.get!(url).body + File.write!(file_path, file_contents) + end + + files = Map.put(pack.files, shortcode, filename) + + updated_pack = %{pack | files: files} + + case save_pack(updated_pack) do + :ok -> + Emoji.reload() + {:ok, updated_pack} + + e -> + e + end + end + end + + def add_file(_, _, _, _), do: {:error, :empty_values} + + defp create_subdirs(file_path) do + if String.contains?(file_path, "/") do + file_path + |> Path.dirname() + |> File.mkdir_p!() + end + end + + @spec remove_file(String.t(), String.t()) :: + {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} + def remove_file(name, shortcode) when byte_size(name) > 0 and byte_size(shortcode) > 0 do + with {_, %__MODULE__{} = pack} <- {:loaded, load_pack(name)}, + {_, {filename, files}} when not is_nil(filename) <- + {:exists, Map.pop(pack.files, shortcode)}, + emoji <- Path.join(pack.path, filename), + {_, true} <- {:exists, File.exists?(emoji)} do + emoji_dir = Path.dirname(emoji) + + File.rm!(emoji) + + if String.contains?(filename, "/") and File.ls!(emoji_dir) == [] do + File.rmdir!(emoji_dir) + end + + updated_pack = %{pack | files: files} + + case save_pack(updated_pack) do + :ok -> + Emoji.reload() + {:ok, updated_pack} + + e -> + e + end + end + end + + def remove_file(_, _), do: {:error, :empty_values} + + @spec update_file(String.t(), String.t(), String.t(), String.t(), boolean()) :: + {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} + def update_file(name, shortcode, new_shortcode, new_filename, force) + when byte_size(name) > 0 and byte_size(shortcode) > 0 and byte_size(new_shortcode) > 0 and + byte_size(new_filename) > 0 do + with {_, %__MODULE__{} = pack} <- {:loaded, load_pack(name)}, + {_, {filename, files}} when not is_nil(filename) <- + {:exists, Map.pop(pack.files, shortcode)}, + {_, true} <- {:not_used, force or is_nil(Emoji.get(new_shortcode))} do + old_path = Path.join(pack.path, filename) + old_dir = Path.dirname(old_path) + new_path = Path.join(pack.path, new_filename) + + create_subdirs(new_path) + + :ok = File.rename(old_path, new_path) + + if String.contains?(filename, "/") and File.ls!(old_dir) == [] do + File.rmdir!(old_dir) + end + + files = Map.put(files, new_shortcode, new_filename) + + updated_pack = %{pack | files: files} + + case save_pack(updated_pack) do + :ok -> + Emoji.reload() + {:ok, updated_pack} + + e -> + e + end + end + end + + def update_file(_, _, _, _, _), do: {:error, :empty_values} + + @spec import_from_filesystem() :: {:ok, [String.t()]} | {:error, atom()} + def import_from_filesystem do + emoji_path = emoji_path() + + with {:ok, %{access: :read_write}} <- File.stat(emoji_path), + {:ok, results} <- File.ls(emoji_path) do + names = + results + |> Enum.map(&Path.join(emoji_path, &1)) + |> Enum.reject(fn path -> + File.dir?(path) and File.exists?(Path.join(path, "pack.json")) + end) + |> Enum.map(&write_pack_contents/1) + |> Enum.filter(& &1) + + {:ok, names} + else + {:ok, %{access: _}} -> {:error, :not_writable} + e -> e + end + end + + defp write_pack_contents(path) do + pack = %__MODULE__{ + files: files_from_path(path), + path: path, + pack_file: Path.join(path, "pack.json") + } + + case save_pack(pack) do + :ok -> Path.basename(path) + _ -> nil + end + end + + defp files_from_path(path) do + txt_path = Path.join(path, "emoji.txt") + + if File.exists?(txt_path) do + # There's an emoji.txt file, it's likely from a pack installed by the pack manager. + # Make a pack.json file from the contents of that emoji.txt file + + # FIXME: Copy-pasted from Pleroma.Emoji/load_from_file_stream/2 + + # Create a map of shortcodes to filenames from emoji.txt + File.read!(txt_path) + |> String.split("\n") + |> Enum.map(&String.trim/1) + |> Enum.map(fn line -> + case String.split(line, ~r/,\s*/) do + # This matches both strings with and without tags + # and we don't care about tags here + [name, file | _] -> + file_dir_name = Path.dirname(file) + + file = + if String.ends_with?(path, file_dir_name) do + Path.basename(file) + else + file + end + + {name, file} + + _ -> + nil + end + end) + |> Enum.filter(& &1) + |> Enum.into(%{}) + else + # If there's no emoji.txt, assume all files + # that are of certain extensions from the config are emojis and import them all + pack_extensions = Pleroma.Config.get!([:emoji, :pack_extensions]) + Emoji.Loader.make_shortcode_to_file_map(path, pack_extensions) + end + end + + @spec list_remote_packs(String.t()) :: {:ok, map()} + def list_remote_packs(url) do + uri = + url + |> String.trim() + |> URI.parse() + + with {_, true} <- {:shareable, shareable_packs_available?(uri)} do + packs = + uri + |> URI.merge("/api/pleroma/emoji/packs") + |> to_string() + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + + {:ok, packs} + end + end + + @spec list_local_packs() :: {:ok, map()} + def list_local_packs do + emoji_path = emoji_path() + + # Create the directory first if it does not exist. This is probably the first request made + # with the API so it should be sufficient + with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_path)}, + {:ls, {:ok, results}} <- {:ls, File.ls(emoji_path)} do + packs = + results + |> Enum.map(&load_pack/1) + |> Enum.filter(& &1) + |> Enum.map(&validate_pack/1) + |> Map.new() + + {:ok, packs} + end + end + + defp validate_pack(pack) do + if downloadable?(pack) do + archive = fetch_archive(pack) + archive_sha = :crypto.hash(:sha256, archive) |> Base.encode16() + + info = + pack.pack + |> Map.put("can-download", true) + |> Map.put("download-sha256", archive_sha) + + {pack.name, Map.put(pack, :pack, info)} + else + info = Map.put(pack.pack, "can-download", false) + {pack.name, Map.put(pack, :pack, info)} + end + end + + defp downloadable?(pack) do + # If the pack is set as shared, check if it can be downloaded + # That means that when asked, the pack can be packed and sent to the remote + # Otherwise, they'd have to download it from external-src + pack.pack["share-files"] && + Enum.all?(pack.files, fn {_, file} -> + File.exists?(Path.join(pack.path, file)) + end) + end + + @spec download(String.t()) :: {:ok, binary()} + def download(name) do + with {_, %__MODULE__{} = pack} <- {:exists?, load_pack(name)}, + {_, true} <- {:can_download?, downloadable?(pack)} do + {:ok, fetch_archive(pack)} + end + end + + defp fetch_archive(pack) do + hash = :crypto.hash(:md5, File.read!(pack.pack_file)) + + case Cachex.get!(:emoji_packs_cache, pack.name) do + %{hash: ^hash, pack_data: archive} -> + archive + + _ -> + create_archive_and_cache(pack, hash) + end + end + + defp create_archive_and_cache(pack, hash) do + files = ['pack.json' | Enum.map(pack.files, fn {_, file} -> to_charlist(file) end)] + + {:ok, {_, result}} = + :zip.zip('#{pack.name}.zip', files, [:memory, cwd: to_charlist(pack.path)]) + + ttl_per_file = Pleroma.Config.get!([:emoji, :shared_pack_cache_seconds_per_file]) + overall_ttl = :timer.seconds(ttl_per_file * Enum.count(files)) + + Cachex.put!( + :emoji_packs_cache, + pack.name, + # if pack.json MD5 changes, the cache is not valid anymore + %{hash: hash, pack_data: result}, + # Add a minute to cache time for every file in the pack + ttl: overall_ttl + ) + + result + end + + @spec download_from_source(String.t(), String.t(), String.t()) :: :ok + def download_from_source(name, url, as) do + uri = + url + |> String.trim() + |> URI.parse() + + with {_, true} <- {:shareable, shareable_packs_available?(uri)} do + # TODO: why do we load all packs, if we know the name of pack we need + remote_pack = + uri + |> URI.merge("/api/pleroma/emoji/packs/#{name}") + |> to_string() + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + + result = + case remote_pack["pack"] do + %{"share-files" => true, "can-download" => true, "download-sha256" => sha} -> + {:ok, + %{ + sha: sha, + url: + URI.merge(uri, "/api/pleroma/emoji/packs/#{name}/download_shared") |> to_string() + }} + + %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> + {:ok, + %{ + sha: sha, + url: src, + fallback: true + }} + + _ -> + {:error, + "The pack was not set as shared and there is no fallback src to download from"} + end + + with {:ok, %{sha: sha, url: url} = pinfo} <- result, + %{body: archive} <- Tesla.get!(url), + {_, true} <- {:checksum, Base.decode16!(sha) == :crypto.hash(:sha256, archive)} do + local_name = as || name + + path = Path.join(emoji_path(), local_name) + + pack = %__MODULE__{ + name: local_name, + path: path, + files: remote_pack["files"], + pack_file: Path.join(path, "pack.json") + } + + File.mkdir_p!(pack.path) + + files = Enum.map(remote_pack["files"], fn {_, path} -> to_charlist(path) end) + # Fallback cannot contain a pack.json file + files = if pinfo[:fallback], do: files, else: ['pack.json' | files] + + {:ok, _} = :zip.unzip(archive, cwd: to_charlist(pack.path), file_list: files) + + # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 + # in it to depend on itself + if pinfo[:fallback] do + save_pack(pack) + end + + :ok + end + end + end + + defp save_pack(pack), do: File.write(pack.pack_file, Jason.encode!(pack, pretty: true)) + + @spec save_metadata(map(), t()) :: {:ok, t()} | {:error, File.posix()} + def save_metadata(metadata, %__MODULE__{} = pack) do + pack = Map.put(pack, :pack, metadata) + + with :ok <- save_pack(pack) do + {:ok, pack} + end + end + + @spec update_metadata(String.t(), map()) :: {:ok, t()} | {:error, File.posix()} + def update_metadata(name, data) do + pack = load_pack(name) + + fb_sha_changed? = + not is_nil(data["fallback-src"]) and data["fallback-src"] != pack.pack["fallback-src"] + + with {_, true} <- {:update?, fb_sha_changed?}, + {:ok, %{body: zip}} <- Tesla.get(data["fallback-src"]), + {:ok, f_list} <- :zip.unzip(zip, [:memory]), + {_, true} <- {:has_all_files?, has_all_files?(pack.files, f_list)} do + fallback_sha = :crypto.hash(:sha256, zip) |> Base.encode16() + + data + |> Map.put("fallback-src-sha256", fallback_sha) + |> save_metadata(pack) + else + {:update?, _} -> save_metadata(data, pack) + e -> e + end + end + + # Check if all files from the pack.json are in the archive + defp has_all_files?(files, f_list) do + Enum.all?(files, fn {_, from_manifest} -> + List.keyfind(f_list, to_charlist(from_manifest), 0) + end) + end + + @spec load_pack(String.t()) :: t() | nil + def load_pack(name) do + pack_file = Path.join([emoji_path(), name, "pack.json"]) + + if File.exists?(pack_file) do + pack_file + |> File.read!() + |> from_json() + |> Map.put(:pack_file, pack_file) + |> Map.put(:path, Path.dirname(pack_file)) + |> Map.put(:name, name) + end + end + + defp from_json(json) do + map = Jason.decode!(json) + + struct(__MODULE__, %{files: map["files"], pack: map["pack"]}) + end + + defp shareable_packs_available?(uri) do + uri + |> URI.merge("/.well-known/nodeinfo") + |> to_string() + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + |> Map.get("links") + |> List.last() + |> Map.get("href") + # Get the actual nodeinfo address and fetch it + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + |> get_in(["metadata", "features"]) + |> Enum.member?("shareable_emoji_packs") + end +end diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index 981bac4fa..9fa857474 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -1,18 +1,15 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do use Pleroma.Web, :controller - alias Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug - alias Pleroma.Plugs.OAuthScopesPlug - - require Logger + alias Pleroma.Emoji.Pack plug( - OAuthScopesPlug, + Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["write"], admin: true} when action in [ :create, :delete, - :save_from, + :download_from, :import_from_fs, :update_file, :update_metadata @@ -21,17 +18,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do plug( :skip_plug, - [OAuthScopesPlug, ExpectPublicOrAuthenticatedCheckPlug] + [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug] when action in [:download_shared, :list_packs, :list_from] ) - defp emoji_dir_path do - Path.join( - Pleroma.Config.get!([:instance, :static_dir]), - "emoji" - ) - end - @doc """ Lists packs from the remote instance. @@ -39,17 +29,13 @@ defp emoji_dir_path do be done by the server """ def list_from(conn, %{"instance_address" => address}) do - address = String.trim(address) - - if shareable_packs_available(address) do - list_resp = - "#{address}/api/pleroma/emoji/packs" |> Tesla.get!() |> Map.get(:body) |> Jason.decode!() - - json(conn, list_resp) + with {:ok, packs} <- Pack.list_remote_packs(address) do + json(conn, packs) else - conn - |> put_status(:internal_server_error) - |> json(%{error: "The requested instance does not support sharing emoji packs"}) + {:shareable, _} -> + conn + |> put_status(:internal_server_error) + |> json(%{error: "The requested instance does not support sharing emoji packs"}) end end @@ -60,113 +46,44 @@ def list_from(conn, %{"instance_address" => address}) do a map of "pack directory name" to pack.json contents. """ def list_packs(conn, _params) do - # Create the directory first if it does not exist. This is probably the first request made - # with the API so it should be sufficient - with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_dir_path())}, - {:ls, {:ok, results}} <- {:ls, File.ls(emoji_dir_path())} do - pack_infos = - results - |> Enum.filter(&has_pack_json?/1) - |> Enum.map(&load_pack/1) - # Check if all the files are in place and can be sent - |> Enum.map(&validate_pack/1) - # Transform into a map of pack-name => pack-data - |> Enum.into(%{}) + emoji_path = + Path.join( + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ) - json(conn, pack_infos) + with {:ok, packs} <- Pack.list_local_packs() do + json(conn, packs) else {:create_dir, {:error, e}} -> conn |> put_status(:internal_server_error) - |> json(%{error: "Failed to create the emoji pack directory at #{emoji_dir_path()}: #{e}"}) + |> json(%{error: "Failed to create the emoji pack directory at #{emoji_path}: #{e}"}) {:ls, {:error, e}} -> conn |> put_status(:internal_server_error) |> json(%{ - error: - "Failed to get the contents of the emoji pack directory at #{emoji_dir_path()}: #{e}" + error: "Failed to get the contents of the emoji pack directory at #{emoji_path}: #{e}" }) end end - defp has_pack_json?(file) do - dir_path = Path.join(emoji_dir_path(), file) - # Filter to only use the pack.json packs - File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.json")) - end + def show(conn, %{"name" => name}) do + name = String.trim(name) - defp load_pack(pack_name) do - pack_path = Path.join(emoji_dir_path(), pack_name) - pack_file = Path.join(pack_path, "pack.json") - - {pack_name, Jason.decode!(File.read!(pack_file))} - end - - defp validate_pack({name, pack}) do - pack_path = Path.join(emoji_dir_path(), name) - - if can_download?(pack, pack_path) do - archive_for_sha = make_archive(name, pack, pack_path) - archive_sha = :crypto.hash(:sha256, archive_for_sha) |> Base.encode16() - - pack = - pack - |> put_in(["pack", "can-download"], true) - |> put_in(["pack", "download-sha256"], archive_sha) - - {name, pack} + with {:ok, pack} <- Pack.show(name) do + json(conn, pack) else - {name, put_in(pack, ["pack", "can-download"], false)} - end - end + {:loaded, _} -> + conn + |> put_status(:not_found) + |> json(%{error: "Pack #{name} does not exist"}) - defp can_download?(pack, pack_path) do - # If the pack is set as shared, check if it can be downloaded - # That means that when asked, the pack can be packed and sent to the remote - # Otherwise, they'd have to download it from external-src - pack["pack"]["share-files"] && - Enum.all?(pack["files"], fn {_, path} -> - File.exists?(Path.join(pack_path, path)) - end) - end - - defp create_archive_and_cache(name, pack, pack_dir, md5) do - files = - ['pack.json'] ++ - (pack["files"] |> Enum.map(fn {_, path} -> to_charlist(path) end)) - - {:ok, {_, zip_result}} = :zip.zip('#{name}.zip', files, [:memory, cwd: to_charlist(pack_dir)]) - - cache_seconds_per_file = Pleroma.Config.get!([:emoji, :shared_pack_cache_seconds_per_file]) - cache_ms = :timer.seconds(cache_seconds_per_file * Enum.count(files)) - - Cachex.put!( - :emoji_packs_cache, - name, - # if pack.json MD5 changes, the cache is not valid anymore - %{pack_json_md5: md5, pack_data: zip_result}, - # Add a minute to cache time for every file in the pack - ttl: cache_ms - ) - - Logger.debug("Created an archive for the '#{name}' emoji pack, \ -keeping it in cache for #{div(cache_ms, 1000)}s") - - zip_result - end - - defp make_archive(name, pack, pack_dir) do - # Having a different pack.json md5 invalidates cache - pack_file_md5 = :crypto.hash(:md5, File.read!(Path.join(pack_dir, "pack.json"))) - - case Cachex.get!(:emoji_packs_cache, name) do - %{pack_file_md5: ^pack_file_md5, pack_data: zip_result} -> - Logger.debug("Using cache for the '#{name}' shared emoji pack") - zip_result - - _ -> - create_archive_and_cache(name, pack, pack_dir, pack_file_md5) + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name cannot be empty"}) end end @@ -175,21 +92,15 @@ defp make_archive(name, pack, pack_dir) do to download packs that the instance shares. """ def download_shared(conn, %{"name" => name}) do - pack_dir = Path.join(emoji_dir_path(), name) - pack_file = Path.join(pack_dir, "pack.json") - - with {_, true} <- {:exists?, File.exists?(pack_file)}, - pack = Jason.decode!(File.read!(pack_file)), - {_, true} <- {:can_download?, can_download?(pack, pack_dir)} do - zip_result = make_archive(name, pack, pack_dir) - send_download(conn, {:binary, zip_result}, filename: "#{name}.zip") + with {:ok, archive} <- Pack.download(name) do + send_download(conn, {:binary, archive}, filename: "#{name}.zip") else {:can_download?, _} -> conn |> put_status(:forbidden) |> json(%{ - error: "Pack #{name} cannot be downloaded from this instance, either pack sharing\ - was disabled for this pack or some files are missing" + error: + "Pack #{name} cannot be downloaded from this instance, either pack sharing was disabled for this pack or some files are missing" }) {:exists?, _} -> @@ -199,22 +110,6 @@ def download_shared(conn, %{"name" => name}) do end end - defp shareable_packs_available(address) do - "#{address}/.well-known/nodeinfo" - |> Tesla.get!() - |> Map.get(:body) - |> Jason.decode!() - |> Map.get("links") - |> List.last() - |> Map.get("href") - # Get the actual nodeinfo address and fetch it - |> Tesla.get!() - |> Map.get(:body) - |> Jason.decode!() - |> get_in(["metadata", "features"]) - |> Enum.member?("shareable_emoji_packs") - end - @doc """ An admin endpoint to request downloading and storing a pack named `pack_name` from the instance `instance_address`. @@ -222,74 +117,24 @@ defp shareable_packs_available(address) do If the requested instance's admin chose to share the pack, it will be downloaded from that instance, otherwise it will be downloaded from the fallback source, if there is one. """ - def save_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do - address = String.trim(address) - - if shareable_packs_available(address) do - full_pack = - "#{address}/api/pleroma/emoji/packs/list" - |> Tesla.get!() - |> Map.get(:body) - |> Jason.decode!() - |> Map.get(name) - - pack_info_res = - case full_pack["pack"] do - %{"share-files" => true, "can-download" => true, "download-sha256" => sha} -> - {:ok, - %{ - sha: sha, - uri: "#{address}/api/pleroma/emoji/packs/download_shared/#{name}" - }} - - %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> - {:ok, - %{ - sha: sha, - uri: src, - fallback: true - }} - - _ -> - {:error, - "The pack was not set as shared and there is no fallback src to download from"} - end - - with {:ok, %{sha: sha, uri: uri} = pinfo} <- pack_info_res, - %{body: emoji_archive} <- Tesla.get!(uri), - {_, true} <- {:checksum, Base.decode16!(sha) == :crypto.hash(:sha256, emoji_archive)} do - local_name = data["as"] || name - pack_dir = Path.join(emoji_dir_path(), local_name) - File.mkdir_p!(pack_dir) - - files = Enum.map(full_pack["files"], fn {_, path} -> to_charlist(path) end) - # Fallback cannot contain a pack.json file - files = if pinfo[:fallback], do: files, else: ['pack.json'] ++ files - - {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - - # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 - # in it to depend on itself - if pinfo[:fallback] do - pack_file_path = Path.join(pack_dir, "pack.json") - - File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) - end - - json(conn, "ok") - else - {:error, e} -> - conn |> put_status(:internal_server_error) |> json(%{error: e}) - - {:checksum, _} -> - conn - |> put_status(:internal_server_error) - |> json(%{error: "SHA256 for the pack doesn't match the one sent by the server"}) - end + def download_from(conn, %{"instance_address" => address, "pack_name" => name} = params) do + with :ok <- Pack.download_from_source(name, address, params["as"]) do + json(conn, "ok") else - conn - |> put_status(:internal_server_error) - |> json(%{error: "The requested instance does not support sharing emoji packs"}) + {:shareable, _} -> + conn + |> put_status(:internal_server_error) + |> json(%{error: "The requested instance does not support sharing emoji packs"}) + + {:checksum, _} -> + conn + |> put_status(:internal_server_error) + |> json(%{error: "SHA256 for the pack doesn't match the one sent by the server"}) + + {:error, e} -> + conn + |> put_status(:internal_server_error) + |> json(%{error: e}) end end @@ -297,23 +142,27 @@ def save_from(conn, %{"instance_address" => address, "pack_name" => name} = data Creates an empty pack named `name` which then can be updated via the admin UI. """ def create(conn, %{"name" => name}) do - pack_dir = Path.join(emoji_dir_path(), name) + name = String.trim(name) - if not File.exists?(pack_dir) do - File.mkdir_p!(pack_dir) - - pack_file_p = Path.join(pack_dir, "pack.json") - - File.write!( - pack_file_p, - Jason.encode!(%{pack: %{}, files: %{}}, pretty: true) - ) - - conn |> json("ok") + with :ok <- Pack.create(name) do + json(conn, "ok") else - conn - |> put_status(:conflict) - |> json(%{error: "A pack named \"#{name}\" already exists"}) + {:error, :eexist} -> + conn + |> put_status(:conflict) + |> json(%{error: "A pack named \"#{name}\" already exists"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while creating pack." + ) end end @@ -321,11 +170,20 @@ def create(conn, %{"name" => name}) do Deletes the pack `name` and all it's files. """ def delete(conn, %{"name" => name}) do - pack_dir = Path.join(emoji_dir_path(), name) + name = String.trim(name) - case File.rm_rf(pack_dir) do - {:ok, _} -> - conn |> json("ok") + with {:ok, deleted} when deleted != [] <- Pack.delete(name) do + json(conn, "ok") + else + {:ok, []} -> + conn + |> put_status(:not_found) + |> json(%{error: "Pack #{name} does not exist"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name cannot be empty"}) {:error, _, _} -> conn @@ -340,82 +198,23 @@ def delete(conn, %{"name" => name}) do `new_data` is the new metadata for the pack, that will replace the old metadata. """ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do - pack_file_p = Path.join([emoji_dir_path(), name, "pack.json"]) - - full_pack = Jason.decode!(File.read!(pack_file_p)) - - # The new fallback-src is in the new data and it's not the same as it was in the old data - should_update_fb_sha = - not is_nil(new_data["fallback-src"]) and - new_data["fallback-src"] != full_pack["pack"]["fallback-src"] - - with {_, true} <- {:should_update?, should_update_fb_sha}, - %{body: pack_arch} <- Tesla.get!(new_data["fallback-src"]), - {:ok, flist} <- :zip.unzip(pack_arch, [:memory]), - {_, true} <- {:has_all_files?, has_all_files?(full_pack, flist)} do - fallback_sha = :crypto.hash(:sha256, pack_arch) |> Base.encode16() - - new_data = Map.put(new_data, "fallback-src-sha256", fallback_sha) - update_metadata_and_send(conn, full_pack, new_data, pack_file_p) + with {:ok, pack} <- Pack.update_metadata(name, new_data) do + json(conn, pack.pack) else - {:should_update?, _} -> - update_metadata_and_send(conn, full_pack, new_data, pack_file_p) - {:has_all_files?, _} -> conn |> put_status(:bad_request) |> json(%{error: "The fallback archive does not have all files specified in pack.json"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while updating pack metadata." + ) end end - # Check if all files from the pack.json are in the archive - defp has_all_files?(%{"files" => files}, flist) do - Enum.all?(files, fn {_, from_manifest} -> - Enum.find(flist, fn {from_archive, _} -> - to_string(from_archive) == from_manifest - end) - end) - end - - defp update_metadata_and_send(conn, full_pack, new_data, pack_file_p) do - full_pack = Map.put(full_pack, "pack", new_data) - File.write!(pack_file_p, Jason.encode!(full_pack, pretty: true)) - - # Send new data back with fallback sha filled - json(conn, new_data) - end - - defp get_filename(%Plug.Upload{filename: filename}), do: filename - defp get_filename(url) when is_binary(url), do: Path.basename(url) - - defp empty?(str), do: String.trim(str) == "" - - defp update_pack_file(updated_full_pack, pack_file_p) do - content = Jason.encode!(updated_full_pack, pretty: true) - - File.write!(pack_file_p, content) - end - - defp create_subdirs(file_path) do - if String.contains?(file_path, "/") do - file_path - |> Path.dirname() - |> File.mkdir_p!() - end - end - - defp pack_info(pack_name) do - dir = Path.join(emoji_dir_path(), pack_name) - json_path = Path.join(dir, "pack.json") - - json = - json_path - |> File.read!() - |> Jason.decode!() - - {dir, json_path, json} - end - @doc """ Updates a file in a pack. @@ -436,50 +235,33 @@ def update_file( conn, %{"pack_name" => pack_name, "action" => "add"} = params ) do - shortcode = - if params["shortcode"] do - params["shortcode"] - else - filename = get_filename(params["file"]) - Path.basename(filename, Path.extname(filename)) - end + filename = params["filename"] || get_filename(params["file"]) + shortcode = params["shortcode"] || Path.basename(filename, Path.extname(filename)) - {pack_dir, pack_file_p, full_pack} = pack_info(pack_name) - - with {_, false} <- {:has_shortcode, Map.has_key?(full_pack["files"], shortcode)}, - filename <- params["filename"] || get_filename(params["file"]), - false <- empty?(shortcode), - false <- empty?(filename), - file_path <- Path.join(pack_dir, filename) do - # If the name contains directories, create them - create_subdirs(file_path) - - case params["file"] do - %Plug.Upload{path: upload_path} -> - # Copy the uploaded file from the temporary directory - File.copy!(upload_path, file_path) - - url when is_binary(url) -> - # Download and write the file - file_contents = Tesla.get!(url).body - File.write!(file_path, file_contents) - end - - full_pack - |> put_in(["files", shortcode], filename) - |> update_pack_file(pack_file_p) - - json(conn, %{shortcode => filename}) + with {:ok, pack} <- Pack.add_file(pack_name, shortcode, filename, params["file"]) do + json(conn, pack.files) else - {:has_shortcode, _} -> + {:exists, _} -> conn |> put_status(:conflict) |> json(%{error: "An emoji with the \"#{shortcode}\" shortcode already exists"}) - true -> + {:loaded, _} -> conn |> put_status(:bad_request) - |> json(%{error: "shortcode or filename cannot be empty"}) + |> json(%{error: "pack \"#{pack_name}\" is not found"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name, shortcode or filename cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while adding file to pack." + ) end end @@ -489,87 +271,74 @@ def update_file(conn, %{ "action" => "remove", "shortcode" => shortcode }) do - {pack_dir, pack_file_p, full_pack} = pack_info(pack_name) - - if Map.has_key?(full_pack["files"], shortcode) do - {emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) - - emoji_file_path = Path.join(pack_dir, emoji_file_path) - - # Delete the emoji file - File.rm!(emoji_file_path) - - # If the old directory has no more files, remove it - if String.contains?(emoji_file_path, "/") do - dir = Path.dirname(emoji_file_path) - - if Enum.empty?(File.ls!(dir)) do - File.rmdir!(dir) - end - end - - update_pack_file(updated_full_pack, pack_file_p) - json(conn, %{shortcode => full_pack["files"][shortcode]}) + with {:ok, pack} <- Pack.remove_file(pack_name, shortcode) do + json(conn, pack.files) else - conn - |> put_status(:bad_request) - |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + {:exists, _} -> + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + + {:loaded, _} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack \"#{pack_name}\" is not found"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name or shortcode cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while removing file from pack." + ) end end # Update def update_file( conn, - %{"pack_name" => pack_name, "action" => "update", "shortcode" => shortcode} = params + %{"pack_name" => name, "action" => "update", "shortcode" => shortcode} = params ) do - {pack_dir, pack_file_p, full_pack} = pack_info(pack_name) + new_shortcode = params["new_shortcode"] + new_filename = params["new_filename"] + force = params["force"] == true - with {_, true} <- {:has_shortcode, Map.has_key?(full_pack["files"], shortcode)}, - %{"new_shortcode" => new_shortcode, "new_filename" => new_filename} <- params, - false <- empty?(new_shortcode), - false <- empty?(new_filename) do - # First, remove the old shortcode, saving the old path - {old_emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) - old_emoji_file_path = Path.join(pack_dir, old_emoji_file_path) - new_emoji_file_path = Path.join(pack_dir, new_filename) - - # If the name contains directories, create them - create_subdirs(new_emoji_file_path) - - # Move/Rename the old filename to a new filename - # These are probably on the same filesystem, so just rename should work - :ok = File.rename(old_emoji_file_path, new_emoji_file_path) - - # If the old directory has no more files, remove it - if String.contains?(old_emoji_file_path, "/") do - dir = Path.dirname(old_emoji_file_path) - - if Enum.empty?(File.ls!(dir)) do - File.rmdir!(dir) - end - end - - # Then, put in the new shortcode with the new path - updated_full_pack - |> put_in(["files", new_shortcode], new_filename) - |> update_pack_file(pack_file_p) - - json(conn, %{new_shortcode => new_filename}) + with {:ok, pack} <- Pack.update_file(name, shortcode, new_shortcode, new_filename, force) do + json(conn, pack.files) else - {:has_shortcode, _} -> + {:exists, _} -> conn |> put_status(:bad_request) |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) - true -> + {:not_used, _} -> + conn + |> put_status(:conflict) + |> json(%{ + error: + "New shortcode \"#{new_shortcode}\" is already used. If you want to override emoji use 'force' option" + }) + + {:loaded, _} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack \"#{name}\" is not found"}) + + {:error, :empty_values} -> conn |> put_status(:bad_request) |> json(%{error: "new_shortcode or new_filename cannot be empty"}) - _ -> - conn - |> put_status(:bad_request) - |> json(%{error: "new_shortcode or new_file were not specified"}) + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while updating file in pack." + ) end end @@ -589,23 +358,12 @@ def update_file(conn, %{"action" => action}) do neither, all the files with specific configured extenstions will be assumed to be emojis and stored in the new `pack.json` file. """ + def import_from_fs(conn, _params) do - emoji_path = emoji_dir_path() - - with {:ok, %{access: :read_write}} <- File.stat(emoji_path), - {:ok, results} <- File.ls(emoji_path) do - imported_pack_names = - results - |> Enum.filter(fn file -> - dir_path = Path.join(emoji_path, file) - # Find the directories that do NOT have pack.json - File.dir?(dir_path) and not File.exists?(Path.join(dir_path, "pack.json")) - end) - |> Enum.map(&write_pack_json_contents/1) - - json(conn, imported_pack_names) + with {:ok, names} <- Pack.import_from_filesystem() do + json(conn, names) else - {:ok, %{access: _}} -> + {:error, :not_writable} -> conn |> put_status(:internal_server_error) |> json(%{error: "Error: emoji pack directory must be writable"}) @@ -617,44 +375,6 @@ def import_from_fs(conn, _params) do end end - defp write_pack_json_contents(dir) do - dir_path = Path.join(emoji_dir_path(), dir) - emoji_txt_path = Path.join(dir_path, "emoji.txt") - - files_for_pack = files_for_pack(emoji_txt_path, dir_path) - pack_json_contents = Jason.encode!(%{pack: %{}, files: files_for_pack}) - - File.write!(Path.join(dir_path, "pack.json"), pack_json_contents) - - dir - end - - defp files_for_pack(emoji_txt_path, dir_path) do - if File.exists?(emoji_txt_path) do - # There's an emoji.txt file, it's likely from a pack installed by the pack manager. - # Make a pack.json file from the contents of that emoji.txt fileh - - # FIXME: Copy-pasted from Pleroma.Emoji/load_from_file_stream/2 - - # Create a map of shortcodes to filenames from emoji.txt - File.read!(emoji_txt_path) - |> String.split("\n") - |> Enum.map(&String.trim/1) - |> Enum.map(fn line -> - case String.split(line, ~r/,\s*/) do - # This matches both strings with and without tags - # and we don't care about tags here - [name, file | _] -> {name, file} - _ -> nil - end - end) - |> Enum.filter(fn x -> not is_nil(x) end) - |> Enum.into(%{}) - else - # If there's no emoji.txt, assume all files - # that are of certain extensions from the config are emojis and import them all - pack_extensions = Pleroma.Config.get!([:emoji, :pack_extensions]) - Pleroma.Emoji.Loader.make_shortcode_to_file_map(dir_path, pack_extensions) - end - end + defp get_filename(%Plug.Upload{filename: filename}), do: filename + defp get_filename(url) when is_binary(url), do: Path.basename(url) end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index becce3098..0fcb517cf 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -221,12 +221,13 @@ defmodule Pleroma.Web.Router do delete("/:name", EmojiAPIController, :delete) # Note: /download_from downloads and saves to instance, not to requester - post("/download_from", EmojiAPIController, :save_from) + post("/download_from", EmojiAPIController, :download_from) end # Pack info / downloading scope "/packs" do get("/", EmojiAPIController, :list_packs) + get("/:name", EmojiAPIController, :show) get("/:name/download_shared/", EmojiAPIController, :download_shared) get("/list_from", EmojiAPIController, :list_from) diff --git a/test/instance_static/emoji/pack_bad_sha/blank.png b/test/instance_static/emoji/pack_bad_sha/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..8f50fa02340e7e09e562f86e00b6e4bd6ad1d565 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PU7++V2?-CrektH&y2Pt+hC@XnZuhYzjGD_PDeO;RYuj`( zUAMu8(_j4f1g>LGSdR&<=@xdWn#IJs;|^bzfkATSK6P%elQ2Vo rHzSiAGcLzT0G$W{OBz8ml2chBPDOKOfHx}}NFgH-`UC0NAPxfnZrnv? literal 0 HcmV?d00001 diff --git a/test/instance_static/emoji/test_pack/pack.json b/test/instance_static/emoji/test_pack/pack.json index 5a8ee75f9..481891b08 100644 --- a/test/instance_static/emoji/test_pack/pack.json +++ b/test/instance_static/emoji/test_pack/pack.json @@ -1,13 +1,11 @@ { - "pack": { - "license": "Test license", - "homepage": "https://pleroma.social", - "description": "Test description", - - "share-files": true - }, - "files": { "blank": "blank.png" + }, + "pack": { + "description": "Test description", + "homepage": "https://pleroma.social", + "license": "Test license", + "share-files": true } -} +} \ No newline at end of file diff --git a/test/instance_static/emoji/test_pack_nonshared/pack.json b/test/instance_static/emoji/test_pack_nonshared/pack.json index b96781f81..93d643a5f 100644 --- a/test/instance_static/emoji/test_pack_nonshared/pack.json +++ b/test/instance_static/emoji/test_pack_nonshared/pack.json @@ -3,14 +3,11 @@ "license": "Test license", "homepage": "https://pleroma.social", "description": "Test description", - "fallback-src": "https://nonshared-pack", "fallback-src-sha256": "74409E2674DAA06C072729C6C8426C4CB3B7E0B85ED77792DB7A436E11D76DAF", - "share-files": false }, - "files": { "blank": "blank.png" } -} +} \ No newline at end of file diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 6844601d7..6a0d7dd11 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -8,212 +8,309 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do import Tesla.Mock import Pleroma.Factory - @emoji_dir_path Path.join( - Pleroma.Config.get!([:instance, :static_dir]), - "emoji" - ) + @emoji_path Path.join( + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ) setup do: clear_config([:auth, :enforce_oauth_admin_scope_usage], false) - test "shared & non-shared pack information in list_packs is ok" do - conn = build_conn() - resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) - - assert Map.has_key?(resp, "test_pack") - - pack = resp["test_pack"] - - assert Map.has_key?(pack["pack"], "download-sha256") - assert pack["pack"]["can-download"] - - assert pack["files"] == %{"blank" => "blank.png"} - - # Non-shared pack - - assert Map.has_key?(resp, "test_pack_nonshared") - - pack = resp["test_pack_nonshared"] - - refute pack["pack"]["shared"] - refute pack["pack"]["can-download"] - end - - test "listing remote packs" do - conn = build_conn() - - resp = - build_conn() - |> get(emoji_api_path(conn, :list_packs)) - |> json_response(200) - - mock(fn - %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> - json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) - - %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> - json(%{metadata: %{features: ["shareable_emoji_packs"]}}) - - %{method: :get, url: "https://example.com/api/pleroma/emoji/packs"} -> - json(resp) - end) - - assert conn - |> post(emoji_api_path(conn, :list_from), %{instance_address: "https://example.com"}) - |> json_response(200) == resp - end - - test "downloading a shared pack from download_shared" do - conn = build_conn() - - resp = - conn - |> get(emoji_api_path(conn, :download_shared, "test_pack")) - |> response(200) - - {:ok, arch} = :zip.unzip(resp, [:memory]) - - assert Enum.find(arch, fn {n, _} -> n == 'pack.json' end) - assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) - end - - test "downloading shared & unshared packs from another instance, deleting them" do - on_exit(fn -> - File.rm_rf!("#{@emoji_dir_path}/test_pack2") - File.rm_rf!("#{@emoji_dir_path}/test_pack_nonshared2") - end) - - mock(fn - %{method: :get, url: "https://old-instance/.well-known/nodeinfo"} -> - json(%{links: [%{href: "https://old-instance/nodeinfo/2.1.json"}]}) - - %{method: :get, url: "https://old-instance/nodeinfo/2.1.json"} -> - json(%{metadata: %{features: []}}) - - %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> - json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) - - %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> - json(%{metadata: %{features: ["shareable_emoji_packs"]}}) - - %{ - method: :get, - url: "https://example.com/api/pleroma/emoji/packs/list" - } -> - conn = build_conn() - - conn - |> get(emoji_api_path(conn, :list_packs)) - |> json_response(200) - |> json() - - %{ - method: :get, - url: "https://example.com/api/pleroma/emoji/packs/download_shared/test_pack" - } -> - conn = build_conn() - - conn - |> get(emoji_api_path(conn, :download_shared, "test_pack")) - |> response(200) - |> text() - - %{ - method: :get, - url: "https://nonshared-pack" - } -> - text(File.read!("#{@emoji_dir_path}/test_pack_nonshared/nonshared.zip")) - end) - + setup do admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) - conn = + admin_conn = build_conn() |> assign(:user, admin) - |> assign(:token, insert(:oauth_admin_token, user: admin, scopes: ["admin:write"])) + |> assign(:token, token) - assert (conn - |> put_req_header("content-type", "application/json") - |> post( - emoji_api_path( - conn, - :save_from - ), - %{ - instance_address: "https://old-instance", - pack_name: "test_pack", - as: "test_pack2" - } - |> Jason.encode!() - ) - |> json_response(500))["error"] =~ "does not support" + Pleroma.Emoji.reload() + {:ok, %{admin_conn: admin_conn}} + end - assert conn - |> put_req_header("content-type", "application/json") - |> post( - emoji_api_path( - conn, - :save_from - ), - %{ + test "GET /api/pleroma/emoji/packs", %{conn: conn} do + resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) + + shared = resp["test_pack"] + assert shared["files"] == %{"blank" => "blank.png"} + assert Map.has_key?(shared["pack"], "download-sha256") + assert shared["pack"]["can-download"] + assert shared["pack"]["share-files"] + + non_shared = resp["test_pack_nonshared"] + assert non_shared["pack"]["share-files"] == false + assert non_shared["pack"]["can-download"] == false + end + + describe "POST /api/pleroma/emoji/packs/list_from" do + test "shareable instance", %{admin_conn: admin_conn, conn: conn} do + resp = + conn + |> get("/api/pleroma/emoji/packs") + |> json_response(200) + + mock(fn + %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> + json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) + + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> + json(%{metadata: %{features: ["shareable_emoji_packs"]}}) + + %{method: :get, url: "https://example.com/api/pleroma/emoji/packs"} -> + json(resp) + end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/list_from", %{ + instance_address: "https://example.com" + }) + |> json_response(200) == resp + end + + test "non shareable instance", %{admin_conn: admin_conn} do + mock(fn + %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> + json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) + + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> + json(%{metadata: %{features: []}}) + end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/list_from", %{ + instance_address: "https://example.com" + }) + |> json_response(500) == %{ + "error" => "The requested instance does not support sharing emoji packs" + } + end + end + + describe "GET /api/pleroma/emoji/packs/:name/download_shared" do + test "download shared pack", %{conn: conn} do + resp = + conn + |> get("/api/pleroma/emoji/packs/test_pack/download_shared") + |> response(200) + + {:ok, arch} = :zip.unzip(resp, [:memory]) + + assert Enum.find(arch, fn {n, _} -> n == 'pack.json' end) + assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) + end + + test "non existing pack", %{conn: conn} do + assert conn + |> get("/api/pleroma/emoji/packs/test_pack_for_import/download_shared") + |> json_response(:not_found) == %{ + "error" => "Pack test_pack_for_import does not exist" + } + end + + test "non downloadable pack", %{conn: conn} do + assert conn + |> get("/api/pleroma/emoji/packs/test_pack_nonshared/download_shared") + |> json_response(:forbidden) == %{ + "error" => + "Pack test_pack_nonshared cannot be downloaded from this instance, either pack sharing was disabled for this pack or some files are missing" + } + end + end + + describe "POST /api/pleroma/emoji/packs/download_from" do + test "shared pack from remote and non shared from fallback-src", %{ + admin_conn: admin_conn, + conn: conn + } do + mock(fn + %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> + json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) + + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> + json(%{metadata: %{features: ["shareable_emoji_packs"]}}) + + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/test_pack" + } -> + conn + |> get("/api/pleroma/emoji/packs/test_pack") + |> json_response(200) + |> json() + + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/test_pack/download_shared" + } -> + conn + |> get("/api/pleroma/emoji/packs/test_pack/download_shared") + |> response(200) + |> text() + + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/test_pack_nonshared" + } -> + conn + |> get("/api/pleroma/emoji/packs/test_pack_nonshared") + |> json_response(200) + |> json() + + %{ + method: :get, + url: "https://nonshared-pack" + } -> + text(File.read!("#{@emoji_path}/test_pack_nonshared/nonshared.zip")) + end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/download_from", %{ instance_address: "https://example.com", pack_name: "test_pack", as: "test_pack2" + }) + |> json_response(200) == "ok" + + assert File.exists?("#{@emoji_path}/test_pack2/pack.json") + assert File.exists?("#{@emoji_path}/test_pack2/blank.png") + + assert admin_conn + |> delete("/api/pleroma/emoji/packs/test_pack2") + |> json_response(200) == "ok" + + refute File.exists?("#{@emoji_path}/test_pack2") + + assert admin_conn + |> post( + "/api/pleroma/emoji/packs/download_from", + %{ + instance_address: "https://example.com", + pack_name: "test_pack_nonshared", + as: "test_pack_nonshared2" + } + ) + |> json_response(200) == "ok" + + assert File.exists?("#{@emoji_path}/test_pack_nonshared2/pack.json") + assert File.exists?("#{@emoji_path}/test_pack_nonshared2/blank.png") + + assert admin_conn + |> delete("/api/pleroma/emoji/packs/test_pack_nonshared2") + |> json_response(200) == "ok" + + refute File.exists?("#{@emoji_path}/test_pack_nonshared2") + end + + test "nonshareable instance", %{admin_conn: admin_conn} do + mock(fn + %{method: :get, url: "https://old-instance/.well-known/nodeinfo"} -> + json(%{links: [%{href: "https://old-instance/nodeinfo/2.1.json"}]}) + + %{method: :get, url: "https://old-instance/nodeinfo/2.1.json"} -> + json(%{metadata: %{features: []}}) + end) + + assert admin_conn + |> post( + "/api/pleroma/emoji/packs/download_from", + %{ + instance_address: "https://old-instance", + pack_name: "test_pack", + as: "test_pack2" + } + ) + |> json_response(500) == %{ + "error" => "The requested instance does not support sharing emoji packs" } - |> Jason.encode!() - ) - |> json_response(200) == "ok" + end - assert File.exists?("#{@emoji_dir_path}/test_pack2/pack.json") - assert File.exists?("#{@emoji_dir_path}/test_pack2/blank.png") + test "checksum fail", %{admin_conn: admin_conn} do + mock(fn + %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> + json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) - assert conn - |> delete(emoji_api_path(conn, :delete, "test_pack2")) - |> json_response(200) == "ok" + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> + json(%{metadata: %{features: ["shareable_emoji_packs"]}}) - refute File.exists?("#{@emoji_dir_path}/test_pack2") + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha" + } -> + %Tesla.Env{ + status: 200, + body: Pleroma.Emoji.Pack.load_pack("pack_bad_sha") |> Jason.encode!() + } - # non-shared, downloaded from the fallback URL + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/download_shared" + } -> + %Tesla.Env{ + status: 200, + body: File.read!("test/instance_static/emoji/pack_bad_sha/pack_bad_sha.zip") + } + end) - assert conn - |> put_req_header("content-type", "application/json") - |> post( - emoji_api_path( - conn, - :save_from - ), - %{ + assert admin_conn + |> post("/api/pleroma/emoji/packs/download_from", %{ instance_address: "https://example.com", - pack_name: "test_pack_nonshared", - as: "test_pack_nonshared2" + pack_name: "pack_bad_sha", + as: "pack_bad_sha2" + }) + |> json_response(:internal_server_error) == %{ + "error" => "SHA256 for the pack doesn't match the one sent by the server" } - |> Jason.encode!() - ) - |> json_response(200) == "ok" + end - assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/pack.json") - assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/blank.png") + test "other error", %{admin_conn: admin_conn} do + mock(fn + %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> + json(%{links: [%{href: "https://example.com/nodeinfo/2.1.json"}]}) - assert conn - |> delete(emoji_api_path(conn, :delete, "test_pack_nonshared2")) - |> json_response(200) == "ok" + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> + json(%{metadata: %{features: ["shareable_emoji_packs"]}}) - refute File.exists?("#{@emoji_dir_path}/test_pack_nonshared2") + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/test_pack" + } -> + %Tesla.Env{ + status: 200, + body: %{"test_pack" => Pleroma.Emoji.Pack.load_pack("test_pack")} |> Jason.encode!() + } + + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/test_pack/download_shared" + } -> + %Tesla.Env{ + status: 200, + body: File.read!("test/instance_static/emoji/test_pack/pack.json") + } + end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/download_from", %{ + instance_address: "https://example.com", + pack_name: "test_pack", + as: "test_pack2" + }) + |> json_response(:internal_server_error) == %{ + "error" => + "The pack was not set as shared and there is no fallback src to download from" + } + end end describe "updating pack metadata" do setup do - pack_file = "#{@emoji_dir_path}/test_pack/pack.json" + pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) on_exit(fn -> File.write!(pack_file, original_content) end) - admin = insert(:user, is_admin: true) - %{conn: conn} = oauth_access(["admin:write"], user: admin) - {:ok, - admin: admin, - conn: conn, pack_file: pack_file, new_data: %{ "license" => "Test license changed", @@ -224,11 +321,9 @@ test "downloading shared & unshared packs from another instance, deleting them" end test "for a pack without a fallback source", ctx do - conn = ctx[:conn] - - assert conn + assert ctx[:admin_conn] |> post( - emoji_api_path(conn, :update_metadata, "test_pack"), + "/api/pleroma/emoji/packs/test_pack/update_metadata", %{ "new_data" => ctx[:new_data] } @@ -244,7 +339,7 @@ test "for a pack with a fallback source", ctx do method: :get, url: "https://nonshared-pack" } -> - text(File.read!("#{@emoji_dir_path}/test_pack_nonshared/nonshared.zip")) + text(File.read!("#{@emoji_path}/test_pack_nonshared/nonshared.zip")) end) new_data = Map.put(ctx[:new_data], "fallback-src", "https://nonshared-pack") @@ -256,11 +351,9 @@ test "for a pack with a fallback source", ctx do "74409E2674DAA06C072729C6C8426C4CB3B7E0B85ED77792DB7A436E11D76DAF" ) - conn = ctx[:conn] - - assert conn + assert ctx[:admin_conn] |> post( - emoji_api_path(conn, :update_metadata, "test_pack"), + "/api/pleroma/emoji/packs/test_pack/update_metadata", %{ "new_data" => new_data } @@ -282,37 +375,241 @@ test "when the fallback source doesn't have all the files", ctx do new_data = Map.put(ctx[:new_data], "fallback-src", "https://nonshared-pack") - conn = ctx[:conn] - - assert (conn - |> post( - emoji_api_path(conn, :update_metadata, "test_pack"), - %{ - "new_data" => new_data - } - ) - |> json_response(:bad_request))["error"] =~ "does not have all" + assert ctx[:admin_conn] + |> post( + "/api/pleroma/emoji/packs/test_pack/update_metadata", + %{ + "new_data" => new_data + } + ) + |> json_response(:bad_request) == %{ + "error" => "The fallback archive does not have all files specified in pack.json" + } end end - describe "update_file/2" do + describe "POST /api/pleroma/emoji/packs/:pack_name/update_file" do setup do - pack_file = "#{@emoji_dir_path}/test_pack/pack.json" + pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) on_exit(fn -> File.write!(pack_file, original_content) end) - admin = insert(:user, is_admin: true) - %{conn: conn} = oauth_access(["admin:write"], user: admin) - {:ok, conn: conn} + :ok end - test "update file without shortcode", %{conn: conn} do - on_exit(fn -> File.rm_rf!("#{@emoji_dir_path}/test_pack/shortcode.png") end) + test "create shortcode exists", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "shortcode" => "blank", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response(:conflict) == %{ + "error" => "An emoji with the \"blank\" shortcode already exists" + } + end - assert conn + test "don't rewrite old emoji", %{admin_conn: admin_conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "shortcode" => "blank2", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response(200) == %{"blank" => "blank.png", "blank2" => "dir/blank.png"} + + assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "update", + "shortcode" => "blank", + "new_shortcode" => "blank2", + "new_filename" => "dir_2/blank_3.png" + }) + |> json_response(:conflict) == %{ + "error" => + "New shortcode \"blank2\" is already used. If you want to override emoji use 'force' option" + } + end + + test "rewrite old emoji with force option", %{admin_conn: admin_conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "shortcode" => "blank2", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response(200) == %{"blank" => "blank.png", "blank2" => "dir/blank.png"} + + assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "update", + "shortcode" => "blank2", + "new_shortcode" => "blank3", + "new_filename" => "dir_2/blank_3.png", + "force" => true + }) + |> json_response(200) == %{ + "blank" => "blank.png", + "blank3" => "dir_2/blank_3.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") + end + + test "with empty filename", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "shortcode" => "blank2", + "filename" => "", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response(:bad_request) == %{ + "error" => "pack name, shortcode or filename cannot be empty" + } + end + + test "add file with not loaded pack", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ + "action" => "add", + "shortcode" => "blank2", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response(:bad_request) == %{ + "error" => "pack \"not_loaded\" is not found" + } + end + + test "remove file with not loaded pack", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ + "action" => "remove", + "shortcode" => "blank3" + }) + |> json_response(:bad_request) == %{"error" => "pack \"not_loaded\" is not found"} + end + + test "remove file with empty shortcode", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ + "action" => "remove", + "shortcode" => "" + }) + |> json_response(:bad_request) == %{ + "error" => "pack name or shortcode cannot be empty" + } + end + + test "update file with not loaded pack", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ + "action" => "update", + "shortcode" => "blank4", + "new_shortcode" => "blank3", + "new_filename" => "dir_2/blank_3.png" + }) + |> json_response(:bad_request) == %{"error" => "pack \"not_loaded\" is not found"} + end + + test "new with shortcode as file with update", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "shortcode" => "blank4", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response(200) == %{"blank" => "blank.png", "blank4" => "dir/blank.png"} + + assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "update", + "shortcode" => "blank4", + "new_shortcode" => "blank3", + "new_filename" => "dir_2/blank_3.png" + }) + |> json_response(200) == %{"blank3" => "dir_2/blank_3.png", "blank" => "blank.png"} + + refute File.exists?("#{@emoji_path}/test_pack/dir/") + assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "remove", + "shortcode" => "blank3" + }) + |> json_response(200) == %{"blank" => "blank.png"} + + refute File.exists?("#{@emoji_path}/test_pack/dir_2/") + + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir") end) + end + + test "new with shortcode from url", %{admin_conn: admin_conn} do + mock(fn + %{ + method: :get, + url: "https://test-blank/blank_url.png" + } -> + text(File.read!("#{@emoji_path}/test_pack/blank.png")) + end) + + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "add", + "shortcode" => "blank_url", + "file" => "https://test-blank/blank_url.png" + }) + |> json_response(200) == %{ + "blank_url" => "blank_url.png", + "blank" => "blank.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/blank_url.png") + + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/blank_url.png") end) + end + + test "new without shortcode", %{admin_conn: admin_conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end) + + assert admin_conn |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ "action" => "add", "file" => %Plug.Upload{ @@ -320,163 +617,176 @@ test "update file without shortcode", %{conn: conn} do path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" } }) - |> json_response(200) == %{"shortcode" => "shortcode.png"} + |> json_response(200) == %{"shortcode" => "shortcode.png", "blank" => "blank.png"} end - test "updating pack files", %{conn: conn} do - on_exit(fn -> - File.rm_rf!("#{@emoji_dir_path}/test_pack/blank_url.png") - File.rm_rf!("#{@emoji_dir_path}/test_pack/dir") - File.rm_rf!("#{@emoji_dir_path}/test_pack/dir_2") - end) + test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "remove", + "shortcode" => "blank2" + }) + |> json_response(:bad_request) == %{"error" => "Emoji \"blank2\" does not exist"} + end - same_name = %{ - "action" => "add", - "shortcode" => "blank", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_dir_path}/test_pack/blank.png" - } - } - - different_name = %{same_name | "shortcode" => "blank_2"} - - assert (conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), same_name) - |> json_response(:conflict))["error"] =~ "already exists" - - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), different_name) - |> json_response(200) == %{"blank_2" => "dir/blank.png"} - - assert File.exists?("#{@emoji_dir_path}/test_pack/dir/blank.png") - - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + test "update non existing emoji", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ "action" => "update", - "shortcode" => "blank_2", - "new_shortcode" => "blank_3", + "shortcode" => "blank2", + "new_shortcode" => "blank3", "new_filename" => "dir_2/blank_3.png" }) - |> json_response(200) == %{"blank_3" => "dir_2/blank_3.png"} + |> json_response(:bad_request) == %{"error" => "Emoji \"blank2\" does not exist"} + end - refute File.exists?("#{@emoji_dir_path}/test_pack/dir/") - assert File.exists?("#{@emoji_dir_path}/test_pack/dir_2/blank_3.png") - - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ - "action" => "remove", - "shortcode" => "blank_3" + test "update with empty shortcode", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "update", + "shortcode" => "blank", + "new_filename" => "dir_2/blank_3.png" }) - |> json_response(200) == %{"blank_3" => "dir_2/blank_3.png"} - - refute File.exists?("#{@emoji_dir_path}/test_pack/dir_2/") - - mock(fn - %{ - method: :get, - url: "https://test-blank/blank_url.png" - } -> - text(File.read!("#{@emoji_dir_path}/test_pack/blank.png")) - end) - - # The name should be inferred from the URL ending - from_url = %{ - "action" => "add", - "shortcode" => "blank_url", - "file" => "https://test-blank/blank_url.png" - } - - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), from_url) - |> json_response(200) == %{ - "blank_url" => "blank_url.png" + |> json_response(:bad_request) == %{ + "error" => "new_shortcode or new_filename cannot be empty" } + end - assert File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") - - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ - "action" => "remove", - "shortcode" => "blank_url" + test "undefined action", %{admin_conn: admin_conn} do + assert admin_conn + |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ + "action" => "undefined" }) - |> json_response(200) == %{"blank_url" => "blank_url.png"} - - refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") + |> json_response(:bad_request) == %{ + "error" => "Unknown action: undefined" + } end end - test "creating and deleting a pack" do - on_exit(fn -> - File.rm_rf!("#{@emoji_dir_path}/test_created") - end) + describe "PUT /api/pleroma/emoji/packs/:name" do + test "creating and deleting a pack", %{admin_conn: admin_conn} do + assert admin_conn + |> put("/api/pleroma/emoji/packs/test_created") + |> json_response(200) == "ok" - admin = insert(:user, is_admin: true) - %{conn: conn} = oauth_access(["admin:write"], user: admin) + assert File.exists?("#{@emoji_path}/test_created/pack.json") - assert conn - |> put_req_header("content-type", "application/json") - |> put( - emoji_api_path( - conn, - :create, - "test_created" - ) - ) - |> json_response(200) == "ok" + assert Jason.decode!(File.read!("#{@emoji_path}/test_created/pack.json")) == %{ + "pack" => %{}, + "files" => %{} + } - assert File.exists?("#{@emoji_dir_path}/test_created/pack.json") + assert admin_conn + |> delete("/api/pleroma/emoji/packs/test_created") + |> json_response(200) == "ok" - assert Jason.decode!(File.read!("#{@emoji_dir_path}/test_created/pack.json")) == %{ - "pack" => %{}, - "files" => %{} - } + refute File.exists?("#{@emoji_path}/test_created/pack.json") + end - assert conn - |> delete(emoji_api_path(conn, :delete, "test_created")) - |> json_response(200) == "ok" + test "if pack exists", %{admin_conn: admin_conn} do + path = Path.join(@emoji_path, "test_created") + File.mkdir(path) + pack_file = Jason.encode!(%{files: %{}, pack: %{}}) + File.write!(Path.join(path, "pack.json"), pack_file) - refute File.exists?("#{@emoji_dir_path}/test_created/pack.json") + assert admin_conn + |> put("/api/pleroma/emoji/packs/test_created") + |> json_response(:conflict) == %{ + "error" => "A pack named \"test_created\" already exists" + } + + on_exit(fn -> File.rm_rf(path) end) + end + + test "with empty name", %{admin_conn: admin_conn} do + assert admin_conn + |> put("/api/pleroma/emoji/packs/ ") + |> json_response(:bad_request) == %{"error" => "pack name cannot be empty"} + end end - test "filesystem import" do + test "deleting nonexisting pack", %{admin_conn: admin_conn} do + assert admin_conn + |> delete("/api/pleroma/emoji/packs/non_existing") + |> json_response(:not_found) == %{"error" => "Pack non_existing does not exist"} + end + + test "deleting with empty name", %{admin_conn: admin_conn} do + assert admin_conn + |> delete("/api/pleroma/emoji/packs/ ") + |> json_response(:bad_request) == %{"error" => "pack name cannot be empty"} + end + + test "filesystem import", %{admin_conn: admin_conn, conn: conn} do on_exit(fn -> - File.rm!("#{@emoji_dir_path}/test_pack_for_import/emoji.txt") - File.rm!("#{@emoji_dir_path}/test_pack_for_import/pack.json") + File.rm!("#{@emoji_path}/test_pack_for_import/emoji.txt") + File.rm!("#{@emoji_path}/test_pack_for_import/pack.json") end) - conn = build_conn() - resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) + resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) refute Map.has_key?(resp, "test_pack_for_import") - admin = insert(:user, is_admin: true) - %{conn: conn} = oauth_access(["admin:write"], user: admin) - - assert conn - |> post(emoji_api_path(conn, :import_from_fs)) + assert admin_conn + |> post("/api/pleroma/emoji/packs/import_from_fs") |> json_response(200) == ["test_pack_for_import"] - resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) + resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) assert resp["test_pack_for_import"]["files"] == %{"blank" => "blank.png"} - File.rm!("#{@emoji_dir_path}/test_pack_for_import/pack.json") - refute File.exists?("#{@emoji_dir_path}/test_pack_for_import/pack.json") + File.rm!("#{@emoji_path}/test_pack_for_import/pack.json") + refute File.exists?("#{@emoji_path}/test_pack_for_import/pack.json") - emoji_txt_content = "blank, blank.png, Fun\n\nblank2, blank.png" + emoji_txt_content = """ + blank, blank.png, Fun + blank2, blank.png + foo, /emoji/test_pack_for_import/blank.png + bar + """ - File.write!("#{@emoji_dir_path}/test_pack_for_import/emoji.txt", emoji_txt_content) + File.write!("#{@emoji_path}/test_pack_for_import/emoji.txt", emoji_txt_content) - assert conn - |> post(emoji_api_path(conn, :import_from_fs)) + assert admin_conn + |> post("/api/pleroma/emoji/packs/import_from_fs") |> json_response(200) == ["test_pack_for_import"] - resp = build_conn() |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) + resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) assert resp["test_pack_for_import"]["files"] == %{ "blank" => "blank.png", - "blank2" => "blank.png" + "blank2" => "blank.png", + "foo" => "blank.png" } end + + describe "GET /api/pleroma/emoji/packs/:name" do + test "shows pack.json", %{conn: conn} do + assert %{ + "files" => %{"blank" => "blank.png"}, + "pack" => %{ + "can-download" => true, + "description" => "Test description", + "download-sha256" => _, + "homepage" => "https://pleroma.social", + "license" => "Test license", + "share-files" => true + } + } = + conn + |> get("/api/pleroma/emoji/packs/test_pack") + |> json_response(200) + end + + test "non existing pack", %{conn: conn} do + assert conn + |> get("/api/pleroma/emoji/packs/non_existing") + |> json_response(:not_found) == %{"error" => "Pack non_existing does not exist"} + end + + test "error name", %{conn: conn} do + assert conn + |> get("/api/pleroma/emoji/packs/ ") + |> json_response(:bad_request) == %{"error" => "pack name cannot be empty"} + end + end end From 95759310abb597275335936efa4a59615b16da6e Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 28 Mar 2020 13:55:17 +0300 Subject: [PATCH 127/137] docs update --- docs/API/pleroma_api.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index a7c7731ce..49b75f5f9 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -330,6 +330,13 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Params: None * Response: JSON, "ok" and 200 status and the JSON hashmap of "pack name" to "pack contents" +## `GET /api/pleroma/emoji/packs/:name` +### Get pack.json for the pack +* Method `GET` +* Authentication: not required +* Params: None +* Response: JSON, pack json with `files` and `pack` keys with 200 status or 404 if the pack does not exist + ## `PUT /api/pleroma/emoji/packs/:name` ### Creates an empty custom emoji pack * Method `PUT` @@ -349,15 +356,17 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Method `POST` * Authentication: required * Params: - * if the `action` is `add`, adds an emoji named `shortcode` to the pack `pack_name`, - that means that the emoji file needs to be uploaded with the request + * if the `action` is `add`, adds an emoji file to the pack `pack_name`, (thus requiring it to be a multipart request) and be named `file`. + If `shortcode` is not specified, `shortcode` will be used from filename. There can also be an optional `filename` that will be the new emoji file name (if it's not there, the name will be taken from the uploaded file). * if the `action` is `update`, changes emoji shortcode - (from `shortcode` to `new_shortcode` or moves the file (from the current filename to `new_filename`) + (from `shortcode` to `new_shortcode` or moves the file (from the current filename to `new_filename`). + If new_shortcode is used in another emoji 409 status will be returned. If you want to override shortcode + pass `force` option with `true` value. * if the `action` is `remove`, removes the emoji named `shortcode` and it's associated file -* Response: JSON, emoji shortcode with filename which was added/updated/deleted and 200 status, 409 if the trying to use a shortcode +* Response: JSON, updated "files" section of the pack and 200 status, 409 if the trying to use a shortcode that is already taken, 400 if there was an error with the shortcode, filename or file (additional info in the "error" part of the response JSON) @@ -385,7 +394,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Method `POST` * Authentication: required * Params: - * `instance_address`: the address of the instance to download from + * `instance_address`: the address of the instance to get packs from * Response: JSON with the pack list, same as if the request was made to that instance's list endpoint directly + 200 status From f3070ddae5f4f7deda8365158e3750e5a575c222 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 28 Mar 2020 15:00:48 +0300 Subject: [PATCH 128/137] removing entry from changelog --- CHANGELOG.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a220c14f6..a8589bbdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -125,14 +125,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
API Changes -- **Breaking:** EmojiReactions: Change endpoints and responses to align with Mastodon -- **Breaking:** Admin API: `PATCH /api/pleroma/admin/users/:nickname/force_password_reset` is now `PATCH /api/pleroma/admin/users/force_password_reset` (accepts `nicknames` array in the request body) +- **Breaking** EmojiReactions: Change endpoints and responses to align with Mastodon +- **Breaking** Admin API: `PATCH /api/pleroma/admin/users/:nickname/force_password_reset` is now `PATCH /api/pleroma/admin/users/force_password_reset` (accepts `nicknames` array in the request body) - **Breaking:** Admin API: Return link alongside with token on password reset - **Breaking:** Admin API: `PUT /api/pleroma/admin/reports/:id` is now `PATCH /api/pleroma/admin/reports`, see admin_api.md for details - **Breaking:** `/api/pleroma/admin/users/invite_token` now uses `POST`, changed accepted params and returns full invite in json instead of only token string. -- **Breaking:** replying to reports is now "report notes", endpoint changed from `POST /api/pleroma/admin/reports/:id/respond` to `POST /api/pleroma/admin/reports/:id/notes` +- **Breaking** replying to reports is now "report notes", endpoint changed from `POST /api/pleroma/admin/reports/:id/respond` to `POST /api/pleroma/admin/reports/:id/notes` - Mastodon API: stopped sanitizing display names, field names and subject fields since they are supposed to be treated as plaintext -- **Breaking:** Pleroma API: `/api/pleroma/emoji/packs/:name/update_file` endpoint returns only updated emoji data. - Admin API: Return `total` when querying for reports - Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`) - Admin API: Return link alongside with token on password reset From ddb757f7434c7216eec1b6ba4fa8b0b7a54157c1 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 28 Mar 2020 21:15:14 +0300 Subject: [PATCH 129/137] emoji api packs changes in routes with docs update --- docs/API/pleroma_api.md | 114 ++++---- lib/pleroma/emoji/pack.ex | 26 +- .../controllers/emoji_api_controller.ex | 170 ++++-------- lib/pleroma/web/router.ex | 23 +- .../controllers/emoji_api_controller_test.exs | 254 +++++++----------- 5 files changed, 231 insertions(+), 356 deletions(-) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 49b75f5f9..65d22980b 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -323,27 +323,47 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Params: None * Response: JSON, returns a list of Mastodon Conversation entities that were marked as read (200 - healthy, 503 unhealthy). -## `GET /api/pleroma/emoji/packs` -### Lists the custom emoji packs on the server +## `GET /api/pleroma/emoji/packs/import` +### Imports packs from filesystem * Method `GET` -* Authentication: not required +* Authentication: required * Params: None -* Response: JSON, "ok" and 200 status and the JSON hashmap of "pack name" to "pack contents" +* Response: JSON, returns a list of imported packs. -## `GET /api/pleroma/emoji/packs/:name` -### Get pack.json for the pack +## `GET /api/pleroma/emoji/packs/remote` +### Make request to another instance for packs list * Method `GET` -* Authentication: not required -* Params: None -* Response: JSON, pack json with `files` and `pack` keys with 200 status or 404 if the pack does not exist +* Authentication: required +* Params: + * `url`: url of the instance to get packs from +* Response: JSON with the pack list, hashmap with pack name and pack contents -## `PUT /api/pleroma/emoji/packs/:name` -### Creates an empty custom emoji pack -* Method `PUT` +## `POST /api/pleroma/emoji/packs/download` +### Download pack from another instance +* Method `POST` +* Authentication: required +* Params: + * `url`: url of the instance to download from + * `name`: pack to download from that instance +* Response: JSON, "ok" with 200 status if the pack was downloaded, or 500 if there were + errors downloading the pack + +## `POST /api/pleroma/emoji/packs/:name` +### Creates an empty pack +* Method `POST` * Authentication: required * Params: None * Response: JSON, "ok" and 200 status or 409 if the pack with that name already exists +## `PATCH /api/pleroma/emoji/packs/:name` +### Updates (replaces) pack metadata +* Method `POST` +* Authentication: required +* Params: + * `metadata`: metadata to replace the old one +* Response: JSON, updated "metadata" section of the pack and 200 status or 400 if there was a + problem with the new metadata (the error is specified in the "error" part of the response JSON) + ## `DELETE /api/pleroma/emoji/packs/:name` ### Delete a custom emoji pack * Method `DELETE` @@ -351,54 +371,50 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Params: None * Response: JSON, "ok" and 200 status or 500 if there was an error deleting the pack -## `POST /api/pleroma/emoji/packs/:name/update_file` -### Update a file in a custom emoji pack +## `POST /api/pleroma/emoji/packs/:name/files` +### Add new file to the pack * Method `POST` * Authentication: required * Params: - * if the `action` is `add`, adds an emoji file to the pack `pack_name`, - (thus requiring it to be a multipart request) and be named `file`. - If `shortcode` is not specified, `shortcode` will be used from filename. - There can also be an optional `filename` that will be the new emoji file name - (if it's not there, the name will be taken from the uploaded file). - * if the `action` is `update`, changes emoji shortcode - (from `shortcode` to `new_shortcode` or moves the file (from the current filename to `new_filename`). - If new_shortcode is used in another emoji 409 status will be returned. If you want to override shortcode - pass `force` option with `true` value. - * if the `action` is `remove`, removes the emoji named `shortcode` and it's associated file -* Response: JSON, updated "files" section of the pack and 200 status, 409 if the trying to use a shortcode - that is already taken, 400 if there was an error with the shortcode, filename or file (additional info - in the "error" part of the response JSON) + * `file`: uploaded file or link to remote file. + * `shortcode`: (*optional*) shortcode for new emoji, must be uniq for all emoji. If not sended, shortcode will be taken from original filename. + * `filename`: (*optional*) new emoji file name. If not specified will be taken from original filename. +* Response: JSON, list of files for updated pack (hasmap -> shortcode => filename) with status 200, either error status with error message. -## `POST /api/pleroma/emoji/packs/:name/update_metadata` -### Updates (replaces) pack metadata -* Method `POST` +## `PATCH /api/pleroma/emoji/packs/:name/files` +### Update emoji file from pack +* Method `PATCH` * Authentication: required * Params: - * `new_data`: new metadata to replace the old one -* Response: JSON, updated "metadata" section of the pack and 200 status or 400 if there was a - problem with the new metadata (the error is specified in the "error" part of the response JSON) + * `shortcode`: emoji file shortcode + * `new_shortcode`: new emoji file shortcode + * `new_filename`: new filename for emoji file + * `force`: (*optional*) with true value to overwrite existing emoji with new shortcode +* Response: JSON, list with updated files for updated pack (hasmap -> shortcode => filename) with status 200, either error status with error message. -## `POST /api/pleroma/emoji/packs/download_from` -### Requests the instance to download the pack from another instance -* Method `POST` +## `DELETE /api/pleroma/emoji/packs/:name/files` +### Delete emoji file from pack +* Method `DELETE` * Authentication: required * Params: - * `instance_address`: the address of the instance to download from - * `pack_name`: the pack to download from that instance -* Response: JSON, "ok" and 200 status if the pack was downloaded, or 500 if there were - errors downloading the pack + * `shortcode`: emoji file shortcode +* Response: JSON, list with updated files for updated pack (hasmap -> shortcode => filename) with status 200, either error status with error message. -## `POST /api/pleroma/emoji/packs/list_from` -### Requests the instance to list the packs from another instance -* Method `POST` -* Authentication: required -* Params: - * `instance_address`: the address of the instance to get packs from -* Response: JSON with the pack list, same as if the request was made to that instance's - list endpoint directly + 200 status +## `GET /api/pleroma/emoji/packs` +### Lists local custom emoji packs +* Method `GET` +* Authentication: not required +* Params: None +* Response: JSON, "ok" and 200 status and the JSON hashmap of pack name to pack contents -## `GET /api/pleroma/emoji/packs/:name/download_shared` +## `GET /api/pleroma/emoji/packs/:name` +### Get pack.json for the pack +* Method `GET` +* Authentication: not required +* Params: None +* Response: JSON, pack json with `files` and `pack` keys with 200 status or 404 if the pack does not exist + +## `GET /api/pleroma/emoji/packs/:name/archive` ### Requests a local pack from the instance * Method `GET` * Authentication: not required diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 21ed12c78..eb50e52fa 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -102,9 +102,9 @@ defp create_subdirs(file_path) do end end - @spec remove_file(String.t(), String.t()) :: + @spec delete_file(String.t(), String.t()) :: {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} - def remove_file(name, shortcode) when byte_size(name) > 0 and byte_size(shortcode) > 0 do + def delete_file(name, shortcode) when byte_size(name) > 0 and byte_size(shortcode) > 0 do with {_, %__MODULE__{} = pack} <- {:loaded, load_pack(name)}, {_, {filename, files}} when not is_nil(filename) <- {:exists, Map.pop(pack.files, shortcode)}, @@ -131,7 +131,7 @@ def remove_file(name, shortcode) when byte_size(name) > 0 and byte_size(shortcod end end - def remove_file(_, _), do: {:error, :empty_values} + def delete_file(_, _), do: {:error, :empty_values} @spec update_file(String.t(), String.t(), String.t(), String.t(), boolean()) :: {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} @@ -249,8 +249,8 @@ defp files_from_path(path) do end end - @spec list_remote_packs(String.t()) :: {:ok, map()} - def list_remote_packs(url) do + @spec list_remote(String.t()) :: {:ok, map()} + def list_remote(url) do uri = url |> String.trim() @@ -269,8 +269,8 @@ def list_remote_packs(url) do end end - @spec list_local_packs() :: {:ok, map()} - def list_local_packs do + @spec list_local() :: {:ok, map()} + def list_local do emoji_path = emoji_path() # Create the directory first if it does not exist. This is probably the first request made @@ -315,8 +315,8 @@ defp downloadable?(pack) do end) end - @spec download(String.t()) :: {:ok, binary()} - def download(name) do + @spec get_archive(String.t()) :: {:ok, binary()} + def get_archive(name) do with {_, %__MODULE__{} = pack} <- {:exists?, load_pack(name)}, {_, true} <- {:can_download?, downloadable?(pack)} do {:ok, fetch_archive(pack)} @@ -356,15 +356,14 @@ defp create_archive_and_cache(pack, hash) do result end - @spec download_from_source(String.t(), String.t(), String.t()) :: :ok - def download_from_source(name, url, as) do + @spec download(String.t(), String.t(), String.t()) :: :ok + def download(name, url, as) do uri = url |> String.trim() |> URI.parse() with {_, true} <- {:shareable, shareable_packs_available?(uri)} do - # TODO: why do we load all packs, if we know the name of pack we need remote_pack = uri |> URI.merge("/api/pleroma/emoji/packs/#{name}") @@ -379,8 +378,7 @@ def download_from_source(name, url, as) do {:ok, %{ sha: sha, - url: - URI.merge(uri, "/api/pleroma/emoji/packs/#{name}/download_shared") |> to_string() + url: URI.merge(uri, "/api/pleroma/emoji/packs/#{name}/archive") |> to_string() }} %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index 9fa857474..83a7f03e8 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -7,12 +7,15 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["write"], admin: true} when action in [ + :import, + :remote, + :download, :create, + :update, :delete, - :download_from, - :import_from_fs, + :add_file, :update_file, - :update_metadata + :delete_file ] ) @@ -22,14 +25,8 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do when action in [:download_shared, :list_packs, :list_from] ) - @doc """ - Lists packs from the remote instance. - - Since JS cannot ask remote instances for their packs due to CPS, it has to - be done by the server - """ - def list_from(conn, %{"instance_address" => address}) do - with {:ok, packs} <- Pack.list_remote_packs(address) do + def remote(conn, %{"url" => url}) do + with {:ok, packs} <- Pack.list_remote(url) do json(conn, packs) else {:shareable, _} -> @@ -39,20 +36,14 @@ def list_from(conn, %{"instance_address" => address}) do end end - @doc """ - Lists the packs available on the instance as JSON. - - The information is public and does not require authentication. The format is - a map of "pack directory name" to pack.json contents. - """ - def list_packs(conn, _params) do + def list(conn, _params) do emoji_path = Path.join( Pleroma.Config.get!([:instance, :static_dir]), "emoji" ) - with {:ok, packs} <- Pack.list_local_packs() do + with {:ok, packs} <- Pack.list_local() do json(conn, packs) else {:create_dir, {:error, e}} -> @@ -87,12 +78,8 @@ def show(conn, %{"name" => name}) do end end - @doc """ - An endpoint for other instances (via admin UI) or users (via browser) - to download packs that the instance shares. - """ - def download_shared(conn, %{"name" => name}) do - with {:ok, archive} <- Pack.download(name) do + def archive(conn, %{"name" => name}) do + with {:ok, archive} <- Pack.get_archive(name) do send_download(conn, {:binary, archive}, filename: "#{name}.zip") else {:can_download?, _} -> @@ -110,15 +97,8 @@ def download_shared(conn, %{"name" => name}) do end end - @doc """ - An admin endpoint to request downloading and storing a pack named `pack_name` from the instance - `instance_address`. - - If the requested instance's admin chose to share the pack, it will be downloaded - from that instance, otherwise it will be downloaded from the fallback source, if there is one. - """ - def download_from(conn, %{"instance_address" => address, "pack_name" => name} = params) do - with :ok <- Pack.download_from_source(name, address, params["as"]) do + def download(conn, %{"url" => url, "name" => name} = params) do + with :ok <- Pack.download(name, url, params["as"]) do json(conn, "ok") else {:shareable, _} -> @@ -138,9 +118,6 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = end end - @doc """ - Creates an empty pack named `name` which then can be updated via the admin UI. - """ def create(conn, %{"name" => name}) do name = String.trim(name) @@ -166,9 +143,6 @@ def create(conn, %{"name" => name}) do end end - @doc """ - Deletes the pack `name` and all it's files. - """ def delete(conn, %{"name" => name}) do name = String.trim(name) @@ -192,13 +166,8 @@ def delete(conn, %{"name" => name}) do end end - @doc """ - An endpoint to update `pack_names`'s metadata. - - `new_data` is the new metadata for the pack, that will replace the old metadata. - """ - def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do - with {:ok, pack} <- Pack.update_metadata(name, new_data) do + def update(conn, %{"name" => name, "metadata" => metadata}) do + with {:ok, pack} <- Pack.update_metadata(name, metadata) do json(conn, pack.pack) else {:has_all_files?, _} -> @@ -215,30 +184,11 @@ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do end end - @doc """ - Updates a file in a pack. - - Updating can mean three things: - - - `add` adds an emoji named `shortcode` to the pack `pack_name`, - that means that the emoji file needs to be uploaded with the request - (thus requiring it to be a multipart request) and be named `file`. - There can also be an optional `filename` that will be the new emoji file name - (if it's not there, the name will be taken from the uploaded file). - - `update` changes emoji shortcode (from `shortcode` to `new_shortcode` or moves the file - (from the current filename to `new_filename`) - - `remove` removes the emoji named `shortcode` and it's associated file - """ - - # Add - def update_file( - conn, - %{"pack_name" => pack_name, "action" => "add"} = params - ) do + def add_file(conn, %{"name" => name} = params) do filename = params["filename"] || get_filename(params["file"]) shortcode = params["shortcode"] || Path.basename(filename, Path.extname(filename)) - with {:ok, pack} <- Pack.add_file(pack_name, shortcode, filename, params["file"]) do + with {:ok, pack} <- Pack.add_file(name, shortcode, filename, params["file"]) do json(conn, pack.files) else {:exists, _} -> @@ -249,7 +199,7 @@ def update_file( {:loaded, _} -> conn |> put_status(:bad_request) - |> json(%{error: "pack \"#{pack_name}\" is not found"}) + |> json(%{error: "pack \"#{name}\" is not found"}) {:error, :empty_values} -> conn @@ -265,44 +215,7 @@ def update_file( end end - # Remove - def update_file(conn, %{ - "pack_name" => pack_name, - "action" => "remove", - "shortcode" => shortcode - }) do - with {:ok, pack} <- Pack.remove_file(pack_name, shortcode) do - json(conn, pack.files) - else - {:exists, _} -> - conn - |> put_status(:bad_request) - |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) - - {:loaded, _} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack \"#{pack_name}\" is not found"}) - - {:error, :empty_values} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack name or shortcode cannot be empty"}) - - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while removing file from pack." - ) - end - end - - # Update - def update_file( - conn, - %{"pack_name" => name, "action" => "update", "shortcode" => shortcode} = params - ) do + def update_file(conn, %{"name" => name, "shortcode" => shortcode} = params) do new_shortcode = params["new_shortcode"] new_filename = params["new_filename"] force = params["force"] == true @@ -342,24 +255,35 @@ def update_file( end end - def update_file(conn, %{"action" => action}) do - conn - |> put_status(:bad_request) - |> json(%{error: "Unknown action: #{action}"}) + def delete_file(conn, %{"name" => name, "shortcode" => shortcode}) do + with {:ok, pack} <- Pack.delete_file(name, shortcode) do + json(conn, pack.files) + else + {:exists, _} -> + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + + {:loaded, _} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack \"#{name}\" is not found"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name or shortcode cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while removing file from pack." + ) + end end - @doc """ - Imports emoji from the filesystem. - - Importing means checking all the directories in the - `$instance_static/emoji/` for directories which do not have - `pack.json`. If one has an emoji.txt file, that file will be used - to create a `pack.json` file with it's contents. If the directory has - neither, all the files with specific configured extenstions will be - assumed to be emojis and stored in the new `pack.json` file. - """ - - def import_from_fs(conn, _params) do + def import_from_filesystem(conn, _params) do with {:ok, names} <- Pack.import_from_filesystem() do json(conn, names) else diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 0fcb517cf..a7e1f2f57 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -214,25 +214,24 @@ defmodule Pleroma.Web.Router do scope "/packs" do pipe_through(:admin_api) - post("/import_from_fs", EmojiAPIController, :import_from_fs) - post("/:pack_name/update_file", EmojiAPIController, :update_file) - post("/:pack_name/update_metadata", EmojiAPIController, :update_metadata) - put("/:name", EmojiAPIController, :create) + get("/import", EmojiAPIController, :import_from_filesystem) + get("/remote", EmojiAPIController, :remote) + post("/download", EmojiAPIController, :download) + + post("/:name", EmojiAPIController, :create) + patch("/:name", EmojiAPIController, :update) delete("/:name", EmojiAPIController, :delete) - # Note: /download_from downloads and saves to instance, not to requester - post("/download_from", EmojiAPIController, :download_from) + post("/:name/files", EmojiAPIController, :add_file) + patch("/:name/files", EmojiAPIController, :update_file) + delete("/:name/files", EmojiAPIController, :delete_file) end # Pack info / downloading scope "/packs" do - get("/", EmojiAPIController, :list_packs) + get("/", EmojiAPIController, :list) get("/:name", EmojiAPIController, :show) - get("/:name/download_shared/", EmojiAPIController, :download_shared) - get("/list_from", EmojiAPIController, :list_from) - - # Deprecated: POST /api/pleroma/emoji/packs/list_from (use GET instead) - post("/list_from", EmojiAPIController, :list_from) + get("/:name/archive", EmojiAPIController, :archive) end end diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 6a0d7dd11..d343256fe 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -41,7 +41,7 @@ test "GET /api/pleroma/emoji/packs", %{conn: conn} do assert non_shared["pack"]["can-download"] == false end - describe "POST /api/pleroma/emoji/packs/list_from" do + describe "GET /api/pleroma/emoji/packs/remote" do test "shareable instance", %{admin_conn: admin_conn, conn: conn} do resp = conn @@ -60,8 +60,8 @@ test "shareable instance", %{admin_conn: admin_conn, conn: conn} do end) assert admin_conn - |> post("/api/pleroma/emoji/packs/list_from", %{ - instance_address: "https://example.com" + |> get("/api/pleroma/emoji/packs/remote", %{ + url: "https://example.com" }) |> json_response(200) == resp end @@ -76,20 +76,18 @@ test "non shareable instance", %{admin_conn: admin_conn} do end) assert admin_conn - |> post("/api/pleroma/emoji/packs/list_from", %{ - instance_address: "https://example.com" - }) + |> get("/api/pleroma/emoji/packs/remote", %{url: "https://example.com"}) |> json_response(500) == %{ "error" => "The requested instance does not support sharing emoji packs" } end end - describe "GET /api/pleroma/emoji/packs/:name/download_shared" do + describe "GET /api/pleroma/emoji/packs/:name/archive" do test "download shared pack", %{conn: conn} do resp = conn - |> get("/api/pleroma/emoji/packs/test_pack/download_shared") + |> get("/api/pleroma/emoji/packs/test_pack/archive") |> response(200) {:ok, arch} = :zip.unzip(resp, [:memory]) @@ -100,7 +98,7 @@ test "download shared pack", %{conn: conn} do test "non existing pack", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/test_pack_for_import/download_shared") + |> get("/api/pleroma/emoji/packs/test_pack_for_import/archive") |> json_response(:not_found) == %{ "error" => "Pack test_pack_for_import does not exist" } @@ -108,7 +106,7 @@ test "non existing pack", %{conn: conn} do test "non downloadable pack", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/test_pack_nonshared/download_shared") + |> get("/api/pleroma/emoji/packs/test_pack_nonshared/archive") |> json_response(:forbidden) == %{ "error" => "Pack test_pack_nonshared cannot be downloaded from this instance, either pack sharing was disabled for this pack or some files are missing" @@ -116,7 +114,7 @@ test "non downloadable pack", %{conn: conn} do end end - describe "POST /api/pleroma/emoji/packs/download_from" do + describe "POST /api/pleroma/emoji/packs/download" do test "shared pack from remote and non shared from fallback-src", %{ admin_conn: admin_conn, conn: conn @@ -139,10 +137,10 @@ test "shared pack from remote and non shared from fallback-src", %{ %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/test_pack/download_shared" + url: "https://example.com/api/pleroma/emoji/packs/test_pack/archive" } -> conn - |> get("/api/pleroma/emoji/packs/test_pack/download_shared") + |> get("/api/pleroma/emoji/packs/test_pack/archive") |> response(200) |> text() @@ -163,9 +161,9 @@ test "shared pack from remote and non shared from fallback-src", %{ end) assert admin_conn - |> post("/api/pleroma/emoji/packs/download_from", %{ - instance_address: "https://example.com", - pack_name: "test_pack", + |> post("/api/pleroma/emoji/packs/download", %{ + url: "https://example.com", + name: "test_pack", as: "test_pack2" }) |> json_response(200) == "ok" @@ -181,10 +179,10 @@ test "shared pack from remote and non shared from fallback-src", %{ assert admin_conn |> post( - "/api/pleroma/emoji/packs/download_from", + "/api/pleroma/emoji/packs/download", %{ - instance_address: "https://example.com", - pack_name: "test_pack_nonshared", + url: "https://example.com", + name: "test_pack_nonshared", as: "test_pack_nonshared2" } ) @@ -211,10 +209,10 @@ test "nonshareable instance", %{admin_conn: admin_conn} do assert admin_conn |> post( - "/api/pleroma/emoji/packs/download_from", + "/api/pleroma/emoji/packs/download", %{ - instance_address: "https://old-instance", - pack_name: "test_pack", + url: "https://old-instance", + name: "test_pack", as: "test_pack2" } ) @@ -242,7 +240,7 @@ test "checksum fail", %{admin_conn: admin_conn} do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/download_shared" + url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/archive" } -> %Tesla.Env{ status: 200, @@ -251,9 +249,9 @@ test "checksum fail", %{admin_conn: admin_conn} do end) assert admin_conn - |> post("/api/pleroma/emoji/packs/download_from", %{ - instance_address: "https://example.com", - pack_name: "pack_bad_sha", + |> post("/api/pleroma/emoji/packs/download", %{ + url: "https://example.com", + name: "pack_bad_sha", as: "pack_bad_sha2" }) |> json_response(:internal_server_error) == %{ @@ -275,23 +273,14 @@ test "other error", %{admin_conn: admin_conn} do } -> %Tesla.Env{ status: 200, - body: %{"test_pack" => Pleroma.Emoji.Pack.load_pack("test_pack")} |> Jason.encode!() - } - - %{ - method: :get, - url: "https://example.com/api/pleroma/emoji/packs/test_pack/download_shared" - } -> - %Tesla.Env{ - status: 200, - body: File.read!("test/instance_static/emoji/test_pack/pack.json") + body: Pleroma.Emoji.Pack.load_pack("test_pack") |> Jason.encode!() } end) assert admin_conn - |> post("/api/pleroma/emoji/packs/download_from", %{ - instance_address: "https://example.com", - pack_name: "test_pack", + |> post("/api/pleroma/emoji/packs/download", %{ + url: "https://example.com", + name: "test_pack", as: "test_pack2" }) |> json_response(:internal_server_error) == %{ @@ -301,7 +290,7 @@ test "other error", %{admin_conn: admin_conn} do end end - describe "updating pack metadata" do + describe "PATCH /api/pleroma/emoji/packs/:name" do setup do pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) @@ -322,12 +311,7 @@ test "other error", %{admin_conn: admin_conn} do test "for a pack without a fallback source", ctx do assert ctx[:admin_conn] - |> post( - "/api/pleroma/emoji/packs/test_pack/update_metadata", - %{ - "new_data" => ctx[:new_data] - } - ) + |> patch("/api/pleroma/emoji/packs/test_pack", %{"metadata" => ctx[:new_data]}) |> json_response(200) == ctx[:new_data] assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == ctx[:new_data] @@ -352,12 +336,7 @@ test "for a pack with a fallback source", ctx do ) assert ctx[:admin_conn] - |> post( - "/api/pleroma/emoji/packs/test_pack/update_metadata", - %{ - "new_data" => new_data - } - ) + |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data}) |> json_response(200) == new_data_with_sha assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == new_data_with_sha @@ -376,19 +355,14 @@ test "when the fallback source doesn't have all the files", ctx do new_data = Map.put(ctx[:new_data], "fallback-src", "https://nonshared-pack") assert ctx[:admin_conn] - |> post( - "/api/pleroma/emoji/packs/test_pack/update_metadata", - %{ - "new_data" => new_data - } - ) + |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data}) |> json_response(:bad_request) == %{ "error" => "The fallback archive does not have all files specified in pack.json" } end end - describe "POST /api/pleroma/emoji/packs/:pack_name/update_file" do + describe "POST/PATCH/DELETE /api/pleroma/emoji/packs/:name/files" do setup do pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) @@ -402,11 +376,10 @@ test "when the fallback source doesn't have all the files", ctx do test "create shortcode exists", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "shortcode" => "blank", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank", + filename: "dir/blank.png", + file: %Plug.Upload{ filename: "blank.png", path: "#{@emoji_path}/test_pack/blank.png" } @@ -420,11 +393,10 @@ test "don't rewrite old emoji", %{admin_conn: admin_conn} do on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end) assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "shortcode" => "blank2", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank2", + filename: "dir/blank.png", + file: %Plug.Upload{ filename: "blank.png", path: "#{@emoji_path}/test_pack/blank.png" } @@ -434,11 +406,10 @@ test "don't rewrite old emoji", %{admin_conn: admin_conn} do assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "update", - "shortcode" => "blank", - "new_shortcode" => "blank2", - "new_filename" => "dir_2/blank_3.png" + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank", + new_shortcode: "blank2", + new_filename: "dir_2/blank_3.png" }) |> json_response(:conflict) == %{ "error" => @@ -450,11 +421,10 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end) assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "shortcode" => "blank2", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank2", + filename: "dir/blank.png", + file: %Plug.Upload{ filename: "blank.png", path: "#{@emoji_path}/test_pack/blank.png" } @@ -464,12 +434,11 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "update", - "shortcode" => "blank2", - "new_shortcode" => "blank3", - "new_filename" => "dir_2/blank_3.png", - "force" => true + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank2", + new_shortcode: "blank3", + new_filename: "dir_2/blank_3.png", + force: true }) |> json_response(200) == %{ "blank" => "blank.png", @@ -481,11 +450,10 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do test "with empty filename", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "shortcode" => "blank2", - "filename" => "", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank2", + filename: "", + file: %Plug.Upload{ filename: "blank.png", path: "#{@emoji_path}/test_pack/blank.png" } @@ -497,11 +465,10 @@ test "with empty filename", %{admin_conn: admin_conn} do test "add file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ - "action" => "add", - "shortcode" => "blank2", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ + shortcode: "blank2", + filename: "dir/blank.png", + file: %Plug.Upload{ filename: "blank.png", path: "#{@emoji_path}/test_pack/blank.png" } @@ -513,19 +480,13 @@ test "add file with not loaded pack", %{admin_conn: admin_conn} do test "remove file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ - "action" => "remove", - "shortcode" => "blank3" - }) + |> delete("/api/pleroma/emoji/packs/not_loaded/files", %{shortcode: "blank3"}) |> json_response(:bad_request) == %{"error" => "pack \"not_loaded\" is not found"} end test "remove file with empty shortcode", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ - "action" => "remove", - "shortcode" => "" - }) + |> delete("/api/pleroma/emoji/packs/not_loaded/files", %{shortcode: ""}) |> json_response(:bad_request) == %{ "error" => "pack name or shortcode cannot be empty" } @@ -533,22 +494,20 @@ test "remove file with empty shortcode", %{admin_conn: admin_conn} do test "update file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/not_loaded/update_file", %{ - "action" => "update", - "shortcode" => "blank4", - "new_shortcode" => "blank3", - "new_filename" => "dir_2/blank_3.png" + |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ + shortcode: "blank4", + new_shortcode: "blank3", + new_filename: "dir_2/blank_3.png" }) |> json_response(:bad_request) == %{"error" => "pack \"not_loaded\" is not found"} end test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "shortcode" => "blank4", - "filename" => "dir/blank.png", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank4", + filename: "dir/blank.png", + file: %Plug.Upload{ filename: "blank.png", path: "#{@emoji_path}/test_pack/blank.png" } @@ -558,11 +517,10 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "update", - "shortcode" => "blank4", - "new_shortcode" => "blank3", - "new_filename" => "dir_2/blank_3.png" + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank4", + new_shortcode: "blank3", + new_filename: "dir_2/blank_3.png" }) |> json_response(200) == %{"blank3" => "dir_2/blank_3.png", "blank" => "blank.png"} @@ -570,10 +528,7 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "remove", - "shortcode" => "blank3" - }) + |> delete("/api/pleroma/emoji/packs/test_pack/files", %{shortcode: "blank3"}) |> json_response(200) == %{"blank" => "blank.png"} refute File.exists?("#{@emoji_path}/test_pack/dir_2/") @@ -591,10 +546,9 @@ test "new with shortcode from url", %{admin_conn: admin_conn} do end) assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "shortcode" => "blank_url", - "file" => "https://test-blank/blank_url.png" + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank_url", + file: "https://test-blank/blank_url.png" }) |> json_response(200) == %{ "blank_url" => "blank_url.png", @@ -610,9 +564,8 @@ test "new without shortcode", %{admin_conn: admin_conn} do on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end) assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "add", - "file" => %Plug.Upload{ + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + file: %Plug.Upload{ filename: "shortcode.png", path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" } @@ -622,51 +575,36 @@ test "new without shortcode", %{admin_conn: admin_conn} do test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "remove", - "shortcode" => "blank2" - }) + |> delete("/api/pleroma/emoji/packs/test_pack/files", %{shortcode: "blank2"}) |> json_response(:bad_request) == %{"error" => "Emoji \"blank2\" does not exist"} end test "update non existing emoji", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "update", - "shortcode" => "blank2", - "new_shortcode" => "blank3", - "new_filename" => "dir_2/blank_3.png" + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank2", + new_shortcode: "blank3", + new_filename: "dir_2/blank_3.png" }) |> json_response(:bad_request) == %{"error" => "Emoji \"blank2\" does not exist"} end test "update with empty shortcode", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "update", - "shortcode" => "blank", - "new_filename" => "dir_2/blank_3.png" + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank", + new_filename: "dir_2/blank_3.png" }) |> json_response(:bad_request) == %{ "error" => "new_shortcode or new_filename cannot be empty" } end - - test "undefined action", %{admin_conn: admin_conn} do - assert admin_conn - |> post("/api/pleroma/emoji/packs/test_pack/update_file", %{ - "action" => "undefined" - }) - |> json_response(:bad_request) == %{ - "error" => "Unknown action: undefined" - } - end end - describe "PUT /api/pleroma/emoji/packs/:name" do + describe "POST/DELETE /api/pleroma/emoji/packs/:name" do test "creating and deleting a pack", %{admin_conn: admin_conn} do assert admin_conn - |> put("/api/pleroma/emoji/packs/test_created") + |> post("/api/pleroma/emoji/packs/test_created") |> json_response(200) == "ok" assert File.exists?("#{@emoji_path}/test_created/pack.json") @@ -690,7 +628,7 @@ test "if pack exists", %{admin_conn: admin_conn} do File.write!(Path.join(path, "pack.json"), pack_file) assert admin_conn - |> put("/api/pleroma/emoji/packs/test_created") + |> post("/api/pleroma/emoji/packs/test_created") |> json_response(:conflict) == %{ "error" => "A pack named \"test_created\" already exists" } @@ -700,7 +638,7 @@ test "if pack exists", %{admin_conn: admin_conn} do test "with empty name", %{admin_conn: admin_conn} do assert admin_conn - |> put("/api/pleroma/emoji/packs/ ") + |> post("/api/pleroma/emoji/packs/ ") |> json_response(:bad_request) == %{"error" => "pack name cannot be empty"} end end @@ -728,7 +666,7 @@ test "filesystem import", %{admin_conn: admin_conn, conn: conn} do refute Map.has_key?(resp, "test_pack_for_import") assert admin_conn - |> post("/api/pleroma/emoji/packs/import_from_fs") + |> get("/api/pleroma/emoji/packs/import") |> json_response(200) == ["test_pack_for_import"] resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) @@ -747,7 +685,7 @@ test "filesystem import", %{admin_conn: admin_conn, conn: conn} do File.write!("#{@emoji_path}/test_pack_for_import/emoji.txt", emoji_txt_content) assert admin_conn - |> post("/api/pleroma/emoji/packs/import_from_fs") + |> get("/api/pleroma/emoji/packs/import") |> json_response(200) == ["test_pack_for_import"] resp = conn |> get("/api/pleroma/emoji/packs") |> json_response(200) From 9855018425f073dec11e35e624185c6e939f33fb Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 28 Mar 2020 21:21:23 +0300 Subject: [PATCH 130/137] changelog entry --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8589bbdc..65dd1b9c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [unreleased] + +### Changed +
+ API Changes +- **Breaking:** Emoji API: changed methods and renamed routes. +
+ ### Removed - **Breaking:** removed `with_move` parameter from notifications timeline. From 36abeedf9fdd5f90c2c03a4366f8d2cc563f9386 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 30 Mar 2020 09:09:27 +0300 Subject: [PATCH 131/137] error rename --- lib/pleroma/emoji/pack.ex | 2 +- lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index eb50e52fa..242344374 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -188,7 +188,7 @@ def import_from_filesystem do {:ok, names} else - {:ok, %{access: _}} -> {:error, :not_writable} + {:ok, %{access: _}} -> {:error, :no_read_write} e -> e end end diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index 83a7f03e8..7af9d38a1 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -287,7 +287,7 @@ def import_from_filesystem(conn, _params) do with {:ok, names} <- Pack.import_from_filesystem() do json(conn, names) else - {:error, :not_writable} -> + {:error, :no_read_write} -> conn |> put_status(:internal_server_error) |> json(%{error: "Error: emoji pack directory must be writable"}) From 1c1b7e22afd25c5d1c4ff71d03a08ee39149fca1 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 30 Mar 2020 10:07:37 +0300 Subject: [PATCH 132/137] list of options for pack metadata --- docs/API/pleroma_api.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 65d22980b..dc39c8b0b 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -361,6 +361,12 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Authentication: required * Params: * `metadata`: metadata to replace the old one + * `license`: Pack license + * `homepage`: Pack home page url + * `description`: Pack description + * `fallback-src`: Fallback url to download pack from + * `fallback-src-sha256`: SHA256 encoded for fallback pack archive + * `share-files`: is pack allowed for sharing (boolean) * Response: JSON, updated "metadata" section of the pack and 200 status or 400 if there was a problem with the new metadata (the error is specified in the "error" part of the response JSON) From 1fd40532aeac2c6988e2b439af1350cbf59cd697 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 31 Mar 2020 11:38:37 +0300 Subject: [PATCH 133/137] docs fix --- docs/API/pleroma_api.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index dc39c8b0b..0c4d5c797 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -345,6 +345,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Params: * `url`: url of the instance to download from * `name`: pack to download from that instance + * `as`: (*optional*) name how to save pack * Response: JSON, "ok" with 200 status if the pack was downloaded, or 500 if there were errors downloading the pack @@ -357,7 +358,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa ## `PATCH /api/pleroma/emoji/packs/:name` ### Updates (replaces) pack metadata -* Method `POST` +* Method `PATCH` * Authentication: required * Params: * `metadata`: metadata to replace the old one From 631e8c1febb32910a8e44c7c39790c9364620567 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Wed, 1 Apr 2020 13:57:27 +0300 Subject: [PATCH 134/137] docs update --- docs/API/pleroma_api.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 0c4d5c797..b927be026 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -383,10 +383,10 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Method `POST` * Authentication: required * Params: - * `file`: uploaded file or link to remote file. + * `file`: file needs to be uploaded with the multipart request or link to remote file. * `shortcode`: (*optional*) shortcode for new emoji, must be uniq for all emoji. If not sended, shortcode will be taken from original filename. * `filename`: (*optional*) new emoji file name. If not specified will be taken from original filename. -* Response: JSON, list of files for updated pack (hasmap -> shortcode => filename) with status 200, either error status with error message. +* Response: JSON, list of files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. ## `PATCH /api/pleroma/emoji/packs/:name/files` ### Update emoji file from pack @@ -397,7 +397,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * `new_shortcode`: new emoji file shortcode * `new_filename`: new filename for emoji file * `force`: (*optional*) with true value to overwrite existing emoji with new shortcode -* Response: JSON, list with updated files for updated pack (hasmap -> shortcode => filename) with status 200, either error status with error message. +* Response: JSON, list with updated files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. ## `DELETE /api/pleroma/emoji/packs/:name/files` ### Delete emoji file from pack @@ -405,7 +405,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Authentication: required * Params: * `shortcode`: emoji file shortcode -* Response: JSON, list with updated files for updated pack (hasmap -> shortcode => filename) with status 200, either error status with error message. +* Response: JSON, list with updated files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. ## `GET /api/pleroma/emoji/packs` ### Lists local custom emoji packs @@ -422,7 +422,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON, pack json with `files` and `pack` keys with 200 status or 404 if the pack does not exist ## `GET /api/pleroma/emoji/packs/:name/archive` -### Requests a local pack from the instance +### Requests a local pack archive from the instance * Method `GET` * Authentication: not required * Params: None From 4a487e4d0b744edac0d83306b80e4bd0cdef5358 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 30 Apr 2020 17:50:57 +0300 Subject: [PATCH 135/137] fix for auth check --- .../web/pleroma_api/controllers/emoji_api_controller.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index 7af9d38a1..d276b96a4 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["write"], admin: true} when action in [ - :import, + :import_from_filesystem, :remote, :download, :create, @@ -22,7 +22,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do plug( :skip_plug, [Pleroma.Plugs.OAuthScopesPlug, Pleroma.Plugs.ExpectPublicOrAuthenticatedCheckPlug] - when action in [:download_shared, :list_packs, :list_from] + when action in [:archive, :show, :list] ) def remote(conn, %{"url" => url}) do From bef34568f0d005baabca266b99ac0f6e620e6899 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Thu, 30 Apr 2020 15:02:35 +0300 Subject: [PATCH 136/137] Dismiss the follow request notification on rejection --- lib/pleroma/notification.ex | 10 ++++++++++ lib/pleroma/web/common_api/common_api.ex | 2 ++ test/notification_test.exs | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index aaa675253..9a109dfab 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -261,6 +261,16 @@ def destroy_multiple(%{id: user_id} = _user, ids) do |> Repo.delete_all() end + def dismiss(%Pleroma.Activity{} = activity) do + Notification + |> where([n], n.activity_id == ^activity.id) + |> Repo.delete_all() + |> case do + {_, notifications} -> {:ok, notifications} + _ -> {:error, "Cannot dismiss notification"} + end + end + def dismiss(%{id: user_id} = _user, id) do notification = Repo.get(Notification, id) diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index d1efe0c36..4112e441a 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.CommonAPI do alias Pleroma.ActivityExpiration alias Pleroma.Conversation.Participation alias Pleroma.FollowingRelationship + alias Pleroma.Notification alias Pleroma.Object alias Pleroma.ThreadMute alias Pleroma.User @@ -61,6 +62,7 @@ def reject_follow_request(follower, followed) do with %Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), {:ok, follow_activity} <- Utils.update_follow_state_for_all(follow_activity, "reject"), {:ok, _relationship} <- FollowingRelationship.update(follower, followed, :follow_reject), + {:ok, _notifications} <- Notification.dismiss(follow_activity), {:ok, _activity} <- ActivityPub.reject(%{ to: [follower.ap_id], diff --git a/test/notification_test.exs b/test/notification_test.exs index 6ad824c57..0e9ffcb18 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -362,6 +362,16 @@ test "it doesn't create a notification for follow-unfollow-follow chains" do notification_id = notification.id assert [%{id: ^notification_id}] = Notification.for_user(followed_user) end + + test "dismisses the notification on follow request rejection" do + clear_config([:notifications, :enable_follow_request_notifications], true) + user = insert(:user, locked: true) + follower = insert(:user) + {:ok, _, _, _follow_activity} = CommonAPI.follow(follower, user) + assert [notification] = Notification.for_user(user) + {:ok, _follower} = CommonAPI.reject_follow_request(follower, user) + assert [] = Notification.for_user(user) + end end describe "get notification" do From f1523f9acd61021d5026e8f8f991fa5c21f23b1f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 30 Apr 2020 18:55:25 +0200 Subject: [PATCH 137/137] Increase tests on AP C2S Related: https://git.pleroma.social/pleroma/pleroma/-/issues/954 --- .../activity_pub_controller_test.exs | 70 ++++++++++++++----- 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index eca526604..6b5913f95 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -765,51 +765,87 @@ test "it requires authentication if instance is NOT federating", %{ end end - describe "POST /users/:nickname/outbox" do - test "it rejects posts from other users / unauthenticated users", %{conn: conn} do - data = File.read!("test/fixtures/activitypub-client-post-activity.json") |> Poison.decode!() + describe "POST /users/:nickname/outbox (C2S)" do + setup do + [ + activity: %{ + "@context" => "https://www.w3.org/ns/activitystreams", + "type" => "Create", + "object" => %{"type" => "Note", "content" => "AP C2S test"}, + "to" => "https://www.w3.org/ns/activitystreams#Public", + "cc" => [] + } + ] + end + + test "it rejects posts from other users / unauthenticated users", %{ + conn: conn, + activity: activity + } do user = insert(:user) other_user = insert(:user) conn = put_req_header(conn, "content-type", "application/activity+json") conn - |> post("/users/#{user.nickname}/outbox", data) + |> post("/users/#{user.nickname}/outbox", activity) |> json_response(403) conn |> assign(:user, other_user) - |> post("/users/#{user.nickname}/outbox", data) + |> post("/users/#{user.nickname}/outbox", activity) |> json_response(403) end - test "it inserts an incoming create activity into the database", %{conn: conn} do - data = File.read!("test/fixtures/activitypub-client-post-activity.json") |> Poison.decode!() + test "it inserts an incoming create activity into the database", %{ + conn: conn, + activity: activity + } do user = insert(:user) - conn = + result = conn |> assign(:user, user) |> put_req_header("content-type", "application/activity+json") - |> post("/users/#{user.nickname}/outbox", data) - - result = json_response(conn, 201) + |> post("/users/#{user.nickname}/outbox", activity) + |> json_response(201) assert Activity.get_by_ap_id(result["id"]) + assert result["object"] + assert %Object{data: object} = Object.normalize(result["object"]) + assert object["content"] == activity["object"]["content"] end - test "it rejects an incoming activity with bogus type", %{conn: conn} do - data = File.read!("test/fixtures/activitypub-client-post-activity.json") |> Poison.decode!() + test "it inserts an incoming sensitive activity into the database", %{ + conn: conn, + activity: activity + } do user = insert(:user) + object = Map.put(activity["object"], "sensitive", true) + activity = Map.put(activity, "object", object) - data = - data - |> Map.put("type", "BadType") + result = + conn + |> assign(:user, user) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{user.nickname}/outbox", activity) + |> json_response(201) + + assert Activity.get_by_ap_id(result["id"]) + assert result["object"] + assert %Object{data: object} = Object.normalize(result["object"]) + assert object["sensitive"] == activity["object"]["sensitive"] + assert object["content"] == activity["object"]["content"] + end + + test "it rejects an incoming activity with bogus type", %{conn: conn, activity: activity} do + user = insert(:user) + activity = Map.put(activity, "type", "BadType") conn = conn |> assign(:user, user) |> put_req_header("content-type", "application/activity+json") - |> post("/users/#{user.nickname}/outbox", data) + |> post("/users/#{user.nickname}/outbox", activity) assert json_response(conn, 400) end

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 adeO6AmhXr=_a5B&@$OxG9j!A7rvC$uV~I8Z diff --git a/priv/static/adminfe/static/js/chunk-88c9.e3583744.js.map b/priv/static/adminfe/static/js/chunk-88c9.e3583744.js.map deleted file mode 100644 index 20e503d0c633b4e7eda94948db6a3f78d548fc31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92387 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 diff --git a/priv/static/adminfe/static/js/chunk-970d.2457e066.js b/priv/static/adminfe/static/js/chunk-970d.2457e066.js new file mode 100644 index 0000000000000000000000000000000000000000..0f99d835e6fabf9afe148ffddff88e4a9552a5d7 GIT binary patch literal 26608 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 literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-970d.2457e066.js.map b/priv/static/adminfe/static/js/chunk-970d.2457e066.js.map new file mode 100644 index 0000000000000000000000000000000000000000..6896407b0d80225bf8a6f452960bbc462aa7981b GIT binary patch literal 100000 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 B<^%u$ literal 0 HcmV?d00001 diff --git a/priv/static/adminfe/static/js/chunk-cf57.3e45f57f.js b/priv/static/adminfe/static/js/chunk-cf57.3e45f57f.js deleted file mode 100644 index 2b4fd918f45d545b6ff3ab7f795810df2c9a5ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29728 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