diff options
Diffstat (limited to 'lib/mix/tasks')
-rw-r--r-- | lib/mix/tasks/fix_ap_users.ex | 13 | ||||
-rw-r--r-- | lib/mix/tasks/generate_config.ex | 48 | ||||
-rw-r--r-- | lib/mix/tasks/generate_password_reset.ex | 18 | ||||
-rw-r--r-- | lib/mix/tasks/make_moderator.ex | 19 | ||||
-rw-r--r-- | lib/mix/tasks/register_user.ex | 3 | ||||
-rw-r--r-- | lib/mix/tasks/rm_user.ex | 13 | ||||
-rw-r--r-- | lib/mix/tasks/sample_config.eex | 6 |
7 files changed, 77 insertions, 43 deletions
diff --git a/lib/mix/tasks/fix_ap_users.ex b/lib/mix/tasks/fix_ap_users.ex index ff09074c3..7e970850e 100644 --- a/lib/mix/tasks/fix_ap_users.ex +++ b/lib/mix/tasks/fix_ap_users.ex @@ -1,6 +1,5 @@ defmodule Mix.Tasks.FixApUsers do use Mix.Task - import Mix.Ecto import Ecto.Query alias Pleroma.{Repo, User} @@ -8,12 +7,16 @@ defmodule Mix.Tasks.FixApUsers do def run([]) do Mix.Task.run("app.start") - q = from u in User, - where: fragment("? @> ?", u.info, ^%{"ap_enabled" => true}), - where: u.local == false + q = + from( + u in User, + where: fragment("? @> ?", u.info, ^%{"ap_enabled" => true}), + where: u.local == false + ) + users = Repo.all(q) - Enum.each(users, fn(user) -> + Enum.each(users, fn user -> try do IO.puts("Fetching #{user.nickname}") Pleroma.Web.ActivityPub.Transmogrifier.upgrade_user_from_ap_id(user.ap_id, false) diff --git a/lib/mix/tasks/generate_config.ex b/lib/mix/tasks/generate_config.ex index 2d962124f..70a110561 100644 --- a/lib/mix/tasks/generate_config.ex +++ b/lib/mix/tasks/generate_config.ex @@ -5,27 +5,35 @@ defmodule Mix.Tasks.GenerateConfig do def run(_) do IO.puts("Answer a few questions to generate a new config\n") IO.puts("--- THIS WILL OVERWRITE YOUR config/generated_config.exs! ---\n") - domain = IO.gets("What is your domain name? (e.g. pleroma.soykaf.com): ") |> String.trim - name = IO.gets("What is the name of your instance? (e.g. Pleroma/Soykaf): ") |> String.trim - email = IO.gets("What's your admin email address: ") |> String.trim - mediaproxy = IO.gets("Do you want to activate the mediaproxy? (y/N): ") - |> String.trim() - |> String.downcase() - |> String.starts_with?("y") - proxy_url = if mediaproxy do - IO.gets("What is the mediaproxy's URL? (e.g. https://cache.example.com): ") |> String.trim - else - "https://cache.example.com" - end - secret = :crypto.strong_rand_bytes(64) |> Base.encode64 |> binary_part(0, 64) - dbpass = :crypto.strong_rand_bytes(64) |> Base.encode64 |> binary_part(0, 64) - - resultSql = EEx.eval_file("lib/mix/tasks/sample_psql.eex", [dbpass: dbpass]) - result = EEx.eval_file("lib/mix/tasks/sample_config.eex", [domain: domain, email: email, name: name, secret: secret, mediaproxy: mediaproxy, proxy_url: proxy_url, dbpass: dbpass]) - - IO.puts("\nWriting config to config/generated_config.exs.\n\nCheck it and configure your database, then copy it to either config/dev.secret.exs or config/prod.secret.exs") + domain = IO.gets("What is your domain name? (e.g. pleroma.soykaf.com): ") |> String.trim() + name = IO.gets("What is the name of your instance? (e.g. Pleroma/Soykaf): ") |> String.trim() + email = IO.gets("What's your admin email address: ") |> String.trim() + + secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) + dbpass = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) + + resultSql = EEx.eval_file("lib/mix/tasks/sample_psql.eex", dbpass: dbpass) + + result = + EEx.eval_file( + "lib/mix/tasks/sample_config.eex", + domain: domain, + email: email, + name: name, + secret: secret, + dbpass: dbpass + ) + + IO.puts( + "\nWriting config to config/generated_config.exs.\n\nCheck it and configure your database, then copy it to either config/dev.secret.exs or config/prod.secret.exs" + ) + File.write("config/generated_config.exs", result) - IO.puts("\nWriting setup_db.psql, please run it as postgre superuser, i.e.: sudo su postgres -c 'psql -f config/setup_db.psql'") + + IO.puts( + "\nWriting setup_db.psql, please run it as postgre superuser, i.e.: sudo su postgres -c 'psql -f config/setup_db.psql'" + ) + File.write("config/setup_db.psql", resultSql) end end diff --git a/lib/mix/tasks/generate_password_reset.ex b/lib/mix/tasks/generate_password_reset.ex index b968b1f98..6bf640150 100644 --- a/lib/mix/tasks/generate_password_reset.ex +++ b/lib/mix/tasks/generate_password_reset.ex @@ -1,7 +1,6 @@ defmodule Mix.Tasks.GeneratePasswordReset do use Mix.Task - import Mix.Ecto - alias Pleroma.{Repo, User} + alias Pleroma.User @shortdoc "Generate password reset link for user" def run([nickname]) do @@ -9,11 +8,20 @@ defmodule Mix.Tasks.GeneratePasswordReset do with %User{local: true} = user <- User.get_by_nickname(nickname), {:ok, token} <- Pleroma.PasswordResetToken.create_token(user) do - IO.puts "Generated password reset token for #{user.nickname}" - IO.puts "Url: #{Pleroma.Web.Router.Helpers.util_url(Pleroma.Web.Endpoint, :show_password_reset, token.token)}" + IO.puts("Generated password reset token for #{user.nickname}") + + IO.puts( + "Url: #{ + Pleroma.Web.Router.Helpers.util_url( + Pleroma.Web.Endpoint, + :show_password_reset, + token.token + ) + }" + ) else _ -> - IO.puts "No local user #{nickname}" + IO.puts("No local user #{nickname}") end end end diff --git a/lib/mix/tasks/make_moderator.ex b/lib/mix/tasks/make_moderator.ex index a76b54f40..20f04c54c 100644 --- a/lib/mix/tasks/make_moderator.ex +++ b/lib/mix/tasks/make_moderator.ex @@ -7,21 +7,24 @@ defmodule Mix.Tasks.SetModerator do def run([nickname | rest]) do ensure_started(Repo, []) - moderator = case rest do - [moderator] -> moderator == "true" - _ -> true - end + moderator = + case rest do + [moderator] -> moderator == "true" + _ -> true + end with %User{local: true} = user <- User.get_by_nickname(nickname) do - info = user.info - |> Map.put("is_moderator", !!moderator) + info = + user.info + |> Map.put("is_moderator", !!moderator) + cng = User.info_changeset(user, %{info: info}) user = Repo.update!(cng) - IO.puts "Moderator status of #{nickname}: #{user.info["is_moderator"]}" + IO.puts("Moderator status of #{nickname}: #{user.info["is_moderator"]}") else _ -> - IO.puts "No local user #{nickname}" + IO.puts("No local user #{nickname}") end end end diff --git a/lib/mix/tasks/register_user.ex b/lib/mix/tasks/register_user.ex index 48236439b..e74721c49 100644 --- a/lib/mix/tasks/register_user.ex +++ b/lib/mix/tasks/register_user.ex @@ -1,11 +1,10 @@ defmodule Mix.Tasks.RegisterUser do use Mix.Task - import Mix.Ecto alias Pleroma.{Repo, User} @shortdoc "Register user" def run([name, nickname, email, bio, password]) do - ensure_started(Repo, []) + Mix.Task.run("app.start") params = %{ name: name, diff --git a/lib/mix/tasks/rm_user.ex b/lib/mix/tasks/rm_user.ex new file mode 100644 index 000000000..27521b745 --- /dev/null +++ b/lib/mix/tasks/rm_user.ex @@ -0,0 +1,13 @@ +defmodule Mix.Tasks.RmUser do + use Mix.Task + alias Pleroma.User + + @shortdoc "Permanently delete a user" + def run([nickname]) do + Mix.Task.run("app.start") + + with %User{local: true} = user <- User.get_by_nickname(nickname) do + User.delete(user) + end + end +end diff --git a/lib/mix/tasks/sample_config.eex b/lib/mix/tasks/sample_config.eex index 9330fae2d..e37c864c0 100644 --- a/lib/mix/tasks/sample_config.eex +++ b/lib/mix/tasks/sample_config.eex @@ -11,9 +11,9 @@ config :pleroma, :instance, registrations_open: true config :pleroma, :media_proxy, - enabled: <%= mediaproxy %>, - redirect_on_failure: true, - base_url: "<%= proxy_url %>" + enabled: false, + redirect_on_failure: true + #base_url: "https://cache.pleroma.social" # Configure your database config :pleroma, Pleroma.Repo, |