diff options
| author | Egor Kislitsyn <egor@kislitsyn.com> | 2020-03-03 00:32:34 +0400 | 
|---|---|---|
| committer | Egor Kislitsyn <egor@kislitsyn.com> | 2020-03-03 00:32:34 +0400 | 
| commit | 0f386110c6e15148ff1ff5ea3451885485fcb7ff (patch) | |
| tree | 8a4dcbede6c674730980e1fafa5b956518170a14 /lib/mix | |
| parent | 011ede45361096f55dda938078e24574cdf33b2b (diff) | |
| parent | 4c02e049358441529c54a72cd11f1c81ee897d49 (diff) | |
| download | pleroma-0f386110c6e15148ff1ff5ea3451885485fcb7ff.tar.gz pleroma-0f386110c6e15148ff1ff5ea3451885485fcb7ff.zip | |
Merge remote-tracking branch 'origin/develop' into global-status-expiration
Diffstat (limited to 'lib/mix')
| -rw-r--r-- | lib/mix/tasks/pleroma/config.ex | 2 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/emoji.ex | 8 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/instance.ex | 17 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/refresh_counter_cache.ex | 46 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/robotstxt.ex | 2 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/user.ex | 5 | 
6 files changed, 66 insertions, 14 deletions
| diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex index 3e76d2c97..5c9ef6904 100644 --- a/lib/mix/tasks/pleroma/config.ex +++ b/lib/mix/tasks/pleroma/config.ex @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Mix.Tasks.Pleroma.Config do diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 24d999707..2b03a3009 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Mix.Tasks.Pleroma.Emoji do @@ -186,11 +186,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do      tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}") -    {:ok, _} = -      :zip.unzip( -        binary_archive, -        cwd: tmp_pack_dir -      ) +    {:ok, _} = :zip.unzip(binary_archive, cwd: String.to_charlist(tmp_pack_dir))      emoji_map = Pleroma.Emoji.Loader.make_shortcode_to_file_map(tmp_pack_dir, exts) diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index 9af6cda30..bc842a59f 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -1,11 +1,13 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Mix.Tasks.Pleroma.Instance do    use Mix.Task    import Mix.Pleroma +  alias Pleroma.Config +    @shortdoc "Manages Pleroma instance"    @moduledoc File.read!("docs/administration/CLI_tasks/instance.md") @@ -63,7 +65,8 @@ defmodule Mix.Tasks.Pleroma.Instance do          get_option(            options,            :instance_name, -          "What is the name of your instance? (e.g. Pleroma/Soykaf)" +          "What is the name of your instance? (e.g. The Corndog Emporium)", +          domain          )        email = get_option(options, :admin_email, "What is your admin email address?") @@ -153,6 +156,8 @@ defmodule Mix.Tasks.Pleroma.Instance do            Pleroma.Config.get([:instance, :static_dir])          ) +      Config.put([:instance, :static_dir], static_dir) +        secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)        jwt_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)        signing_salt = :crypto.strong_rand_bytes(8) |> Base.encode64() |> binary_part(0, 8) @@ -202,8 +207,14 @@ defmodule Mix.Tasks.Pleroma.Instance do        write_robots_txt(indexable, template_dir)        shell_info( -        "\n All files successfully written! Refer to the installation instructions for your platform for next steps" +        "\n All files successfully written! Refer to the installation instructions for your platform for next steps."        ) + +      if db_configurable? do +        shell_info( +          " Please transfer your config to the database after running database migrations. Refer to \"Transfering the config to/from the database\" section of the docs for more information." +        ) +      end      else        shell_error(          "The task would have overwritten the following files:\n" <> diff --git a/lib/mix/tasks/pleroma/refresh_counter_cache.ex b/lib/mix/tasks/pleroma/refresh_counter_cache.ex new file mode 100644 index 000000000..15b4dbfa6 --- /dev/null +++ b/lib/mix/tasks/pleroma/refresh_counter_cache.ex @@ -0,0 +1,46 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.RefreshCounterCache do +  @shortdoc "Refreshes counter cache" + +  use Mix.Task + +  alias Pleroma.Activity +  alias Pleroma.CounterCache +  alias Pleroma.Repo + +  require Logger +  import Ecto.Query + +  def run([]) do +    Mix.Pleroma.start_pleroma() + +    ["public", "unlisted", "private", "direct"] +    |> Enum.each(fn visibility -> +      count = status_visibility_count_query(visibility) +      name = "status_visibility_#{visibility}" +      CounterCache.set(name, count) +      Mix.Pleroma.shell_info("Set #{name} to #{count}") +    end) + +    Mix.Pleroma.shell_info("Done") +  end + +  defp status_visibility_count_query(visibility) do +    Activity +    |> where( +      [a], +      fragment( +        "activity_visibility(?, ?, ?) = ?", +        a.actor, +        a.recipients, +        a.data, +        ^visibility +      ) +    ) +    |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) +    |> Repo.aggregate(:count, :id, timeout: :timer.minutes(30)) +  end +end diff --git a/lib/mix/tasks/pleroma/robotstxt.ex b/lib/mix/tasks/pleroma/robotstxt.ex index e99dd8502..24f08180e 100644 --- a/lib/mix/tasks/pleroma/robotstxt.ex +++ b/lib/mix/tasks/pleroma/robotstxt.ex @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2019 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Mix.Tasks.Pleroma.RobotsTxt do diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 85c9e4954..40dd9bdc0 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Mix.Tasks.Pleroma.User do @@ -100,8 +100,7 @@ defmodule Mix.Tasks.Pleroma.User do        User.perform(:delete, user)        shell_info("User #{nickname} deleted.")      else -      _ -> -        shell_error("No local user #{nickname}") +      _ -> shell_error("No local user #{nickname}")      end    end | 
