aboutsummaryrefslogtreecommitdiff
path: root/lib/mix/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mix/tasks')
-rw-r--r--lib/mix/tasks/deactivate_user.ex8
-rw-r--r--lib/mix/tasks/generate_config.ex10
-rw-r--r--lib/mix/tasks/generate_invite_token.ex9
-rw-r--r--lib/mix/tasks/generate_password_reset.ex8
-rw-r--r--lib/mix/tasks/make_moderator.ex9
-rw-r--r--lib/mix/tasks/reactivate_user.ex19
-rw-r--r--lib/mix/tasks/register_user.ex8
-rw-r--r--lib/mix/tasks/relay_follow.ex7
-rw-r--r--lib/mix/tasks/relay_unfollow.ex8
-rw-r--r--lib/mix/tasks/rm_user.ex10
-rw-r--r--lib/mix/tasks/sample_config.eex4
-rw-r--r--lib/mix/tasks/sample_psql.eex7
-rw-r--r--lib/mix/tasks/set_locked.ex11
-rw-r--r--lib/mix/tasks/unsubscribe_user.ex38
14 files changed, 142 insertions, 14 deletions
diff --git a/lib/mix/tasks/deactivate_user.ex b/lib/mix/tasks/deactivate_user.ex
index 96b3db6e4..e71ed1ec0 100644
--- a/lib/mix/tasks/deactivate_user.ex
+++ b/lib/mix/tasks/deactivate_user.ex
@@ -2,7 +2,13 @@ defmodule Mix.Tasks.DeactivateUser do
use Mix.Task
alias Pleroma.User
- @shortdoc "Toggle deactivation status for a user"
+ @moduledoc """
+ Deactivates a user (local or remote)
+
+ Usage: ``mix deactivate_user <nickname>``
+
+ Example: ``mix deactivate_user lain``
+ """
def run([nickname]) do
Mix.Task.run("app.start")
diff --git a/lib/mix/tasks/generate_config.ex b/lib/mix/tasks/generate_config.ex
index 70a110561..e3cbbf131 100644
--- a/lib/mix/tasks/generate_config.ex
+++ b/lib/mix/tasks/generate_config.ex
@@ -1,7 +1,15 @@
defmodule Mix.Tasks.GenerateConfig do
use Mix.Task
- @shortdoc "Generates a new config"
+ @moduledoc """
+ Generate a new config
+
+ ## Usage
+ ``mix generate_config``
+
+ This mix task is interactive, and will overwrite the config present at ``config/generated_config.exs``.
+ """
+
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")
diff --git a/lib/mix/tasks/generate_invite_token.ex b/lib/mix/tasks/generate_invite_token.ex
index c4daa9a6c..418ef3790 100644
--- a/lib/mix/tasks/generate_invite_token.ex
+++ b/lib/mix/tasks/generate_invite_token.ex
@@ -1,7 +1,14 @@
defmodule Mix.Tasks.GenerateInviteToken do
use Mix.Task
- @shortdoc "Generate invite token for user"
+ @moduledoc """
+ Generates invite token
+
+ This is in the form of a URL to be used by the Invited user to register themselves.
+
+ ## Usage
+ ``mix generate_invite_token``
+ """
def run([]) do
Mix.Task.run("app.start")
diff --git a/lib/mix/tasks/generate_password_reset.ex b/lib/mix/tasks/generate_password_reset.ex
index 6bf640150..f7f4c4f59 100644
--- a/lib/mix/tasks/generate_password_reset.ex
+++ b/lib/mix/tasks/generate_password_reset.ex
@@ -2,7 +2,13 @@ defmodule Mix.Tasks.GeneratePasswordReset do
use Mix.Task
alias Pleroma.User
- @shortdoc "Generate password reset link for user"
+ @moduledoc """
+ Generate password reset link for user
+
+ Usage: ``mix generate_password_reset <nickname>``
+
+ Example: ``mix generate_password_reset lain``
+ """
def run([nickname]) do
Mix.Task.run("app.start")
diff --git a/lib/mix/tasks/make_moderator.ex b/lib/mix/tasks/make_moderator.ex
index a454a958e..15586dc30 100644
--- a/lib/mix/tasks/make_moderator.ex
+++ b/lib/mix/tasks/make_moderator.ex
@@ -1,9 +1,16 @@
defmodule Mix.Tasks.SetModerator do
+ @moduledoc """
+ Set moderator to a local user
+
+ Usage: ``mix set_moderator <nickname>``
+
+ Example: ``mix set_moderator lain``
+ """
+
use Mix.Task
import Mix.Ecto
alias Pleroma.{Repo, User}
- @shortdoc "Set moderator status"
def run([nickname | rest]) do
Application.ensure_all_started(:pleroma)
diff --git a/lib/mix/tasks/reactivate_user.ex b/lib/mix/tasks/reactivate_user.ex
new file mode 100644
index 000000000..a30d3ac8b
--- /dev/null
+++ b/lib/mix/tasks/reactivate_user.ex
@@ -0,0 +1,19 @@
+defmodule Mix.Tasks.ReactivateUser do
+ use Mix.Task
+ alias Pleroma.User
+
+ @moduledoc """
+ Reactivate a user
+
+ Usage: ``mix reactivate_user <nickname>``
+
+ Example: ``mix reactivate_user lain``
+ """
+ def run([nickname]) do
+ Mix.Task.run("app.start")
+
+ with user <- User.get_by_nickname(nickname) do
+ User.deactivate(user, false)
+ end
+ end
+end
diff --git a/lib/mix/tasks/register_user.ex b/lib/mix/tasks/register_user.ex
index e74721c49..1f5321093 100644
--- a/lib/mix/tasks/register_user.ex
+++ b/lib/mix/tasks/register_user.ex
@@ -1,4 +1,12 @@
defmodule Mix.Tasks.RegisterUser do
+ @moduledoc """
+ Manually register a local user
+
+ Usage: ``mix register_user <name> <nickname> <email> <bio> <password>``
+
+ Example: ``mix register_user 仮面の告白 lain lain@example.org "blushy-crushy fediverse idol + pleroma dev" pleaseDontHeckLain``
+ """
+
use Mix.Task
alias Pleroma.{Repo, User}
diff --git a/lib/mix/tasks/relay_follow.ex b/lib/mix/tasks/relay_follow.ex
index ac6f20924..4d57c6bca 100644
--- a/lib/mix/tasks/relay_follow.ex
+++ b/lib/mix/tasks/relay_follow.ex
@@ -4,6 +4,13 @@ defmodule Mix.Tasks.RelayFollow do
alias Pleroma.Web.ActivityPub.Relay
@shortdoc "Follows a remote relay"
+ @moduledoc """
+ Follows a remote relay
+
+ Usage: ``mix relay_follow <relay_url>``
+
+ Example: ``mix relay_follow https://example.org/relay``
+ """
def run([target]) do
Mix.Task.run("app.start")
diff --git a/lib/mix/tasks/relay_unfollow.ex b/lib/mix/tasks/relay_unfollow.ex
index 4621ace83..bd69fd8a0 100644
--- a/lib/mix/tasks/relay_unfollow.ex
+++ b/lib/mix/tasks/relay_unfollow.ex
@@ -3,7 +3,13 @@ defmodule Mix.Tasks.RelayUnfollow do
require Logger
alias Pleroma.Web.ActivityPub.Relay
- @shortdoc "Follows a remote relay"
+ @moduledoc """
+ Unfollows a remote relay
+
+ Usage: ``mix relay_follow <relay_url>``
+
+ Example: ``mix relay_follow https://example.org/relay``
+ """
def run([target]) do
Mix.Task.run("app.start")
diff --git a/lib/mix/tasks/rm_user.ex b/lib/mix/tasks/rm_user.ex
index 27521b745..50463046c 100644
--- a/lib/mix/tasks/rm_user.ex
+++ b/lib/mix/tasks/rm_user.ex
@@ -2,12 +2,18 @@ defmodule Mix.Tasks.RmUser do
use Mix.Task
alias Pleroma.User
- @shortdoc "Permanently delete a user"
+ @moduledoc """
+ Permanently deletes a user
+
+ Usage: ``mix rm_user [nickname]``
+
+ Example: ``mix rm_user lain``
+ """
def run([nickname]) do
Mix.Task.run("app.start")
with %User{local: true} = user <- User.get_by_nickname(nickname) do
- User.delete(user)
+ {:ok, _} = User.delete(user)
end
end
end
diff --git a/lib/mix/tasks/sample_config.eex b/lib/mix/tasks/sample_config.eex
index 3881ead26..462c34636 100644
--- a/lib/mix/tasks/sample_config.eex
+++ b/lib/mix/tasks/sample_config.eex
@@ -25,6 +25,10 @@ config :pleroma, Pleroma.Repo,
hostname: "localhost",
pool_size: 10
+# Enable Strict-Transport-Security once SSL is working:
+# config :pleroma, :http_security,
+# sts: true
+
# Configure S3 support if desired.
# The public S3 endpoint is different depending on region and provider,
# consult your S3 provider's documentation for details on what to use.
diff --git a/lib/mix/tasks/sample_psql.eex b/lib/mix/tasks/sample_psql.eex
index bc22f166c..b6f57948b 100644
--- a/lib/mix/tasks/sample_psql.eex
+++ b/lib/mix/tasks/sample_psql.eex
@@ -1,8 +1,5 @@
-CREATE USER pleroma WITH ENCRYPTED PASSWORD '<%= dbpass %>' CREATEDB;
--- in case someone runs this second time accidentally
-ALTER USER pleroma WITH ENCRYPTED PASSWORD '<%= dbpass %>' CREATEDB;
-CREATE DATABASE pleroma_dev;
-ALTER DATABASE pleroma_dev OWNER TO pleroma;
+CREATE USER pleroma WITH ENCRYPTED PASSWORD '<%= dbpass %>';
+CREATE DATABASE pleroma_dev OWNER pleroma;
\c pleroma_dev;
--Extensions made by ecto.migrate that need superuser access
CREATE EXTENSION IF NOT EXISTS citext;
diff --git a/lib/mix/tasks/set_locked.ex b/lib/mix/tasks/set_locked.ex
index 2b3b18b09..a154595ca 100644
--- a/lib/mix/tasks/set_locked.ex
+++ b/lib/mix/tasks/set_locked.ex
@@ -1,9 +1,18 @@
defmodule Mix.Tasks.SetLocked do
+ @moduledoc """
+ Lock a local user
+
+ The local user will then have to manually accept/reject followers. This can also be done by the user into their settings.
+
+ Usage: ``mix set_locked <username>``
+
+ Example: ``mix set_locked lain``
+ """
+
use Mix.Task
import Mix.Ecto
alias Pleroma.{Repo, User}
- @shortdoc "Set locked status"
def run([nickname | rest]) do
ensure_started(Repo, [])
diff --git a/lib/mix/tasks/unsubscribe_user.ex b/lib/mix/tasks/unsubscribe_user.ex
new file mode 100644
index 000000000..62ea61a5c
--- /dev/null
+++ b/lib/mix/tasks/unsubscribe_user.ex
@@ -0,0 +1,38 @@
+defmodule Mix.Tasks.UnsubscribeUser do
+ use Mix.Task
+ alias Pleroma.{User, Repo}
+ require Logger
+
+ @moduledoc """
+ Deactivate and Unsubscribe local users from a user
+
+ Usage: ``mix unsubscribe_user <nickname>``
+
+ Example: ``mix unsubscribe_user lain``
+ """
+ def run([nickname]) do
+ Mix.Task.run("app.start")
+
+ with %User{} = user <- User.get_by_nickname(nickname) do
+ Logger.info("Deactivating #{user.nickname}")
+ User.deactivate(user)
+
+ {:ok, friends} = User.get_friends(user)
+
+ Enum.each(friends, fn friend ->
+ user = Repo.get(User, user.id)
+
+ Logger.info("Unsubscribing #{friend.nickname} from #{user.nickname}")
+ User.unfollow(user, friend)
+ end)
+
+ :timer.sleep(500)
+
+ user = Repo.get(User, user.id)
+
+ if length(user.following) == 0 do
+ Logger.info("Successfully unsubscribed all followers from #{user.nickname}")
+ end
+ end
+ end
+end