From 52ee91efcedb1a004c27e27f252420c1f91f18dc Mon Sep 17 00:00:00 2001 From: Wim Vanderbauwhede Date: Tue, 24 Apr 2018 13:20:17 +0100 Subject: Patch to replace newlines with
tags in bio --- lib/pleroma/web/twitter_api/twitter_api_controller.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 6cf8682b8..0ee90496f 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -347,7 +347,8 @@ defmodule Pleroma.Web.TwitterAPI.Controller do def update_profile(%{assigns: %{user: user}} = conn, params) do params = if bio = params["description"] do - Map.put(params, "bio", bio) + bio_brs = Regex.replace(~r/\r\n/,bio,"
") + Map.put(params, "bio", bio_brs) else params end -- cgit v1.2.3 From 7517155544f85f0bd085c0ef0dd843fdac1fc4fd Mon Sep 17 00:00:00 2001 From: Wim Vanderbauwhede Date: Tue, 24 Apr 2018 13:28:55 +0100 Subject: Changed to support \r\n and \n --- lib/pleroma/web/twitter_api/twitter_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 0ee90496f..e8fc9c291 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -347,7 +347,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do def update_profile(%{assigns: %{user: user}} = conn, params) do params = if bio = params["description"] do - bio_brs = Regex.replace(~r/\r\n/,bio,"
") + bio_brs = Regex.replace(~r/\r?\n/,bio,"
") Map.put(params, "bio", bio_brs) else params -- cgit v1.2.3 From 4d55d7c95e8409f5018f3321d7e653b6349b9ba6 Mon Sep 17 00:00:00 2001 From: lain Date: Sat, 28 Apr 2018 16:10:24 +0200 Subject: Insert object after being rewritten. --- lib/pleroma/web/activity_pub/activity_pub.ex | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 984d1162d..3ddc009a1 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -20,8 +20,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do def insert(map, local \\ true) when is_map(map) do with nil <- Activity.get_by_ap_id(map["id"]), map <- lazy_put_activity_defaults(map), - :ok <- insert_full_object(map), - {:ok, map} <- @rewrite_policy.filter(map) do + {:ok, map} <- @rewrite_policy.filter(map), + :ok <- insert_full_object(map) do {:ok, activity} = Repo.insert(%Activity{ data: map, @@ -313,7 +313,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_blocked(query, %{"blocking_user" => %User{info: info}}) do blocks = info["blocks"] || [] - from(activity in query, + + from( + activity in query, where: fragment("not (? = ANY(?))", activity.actor, ^blocks), where: fragment("not (?->'to' \\?| ?)", activity.data, ^blocks) ) -- cgit v1.2.3 From bc215f568473bb3801b6eff238fee48f5de2bab8 Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 29 Apr 2018 11:28:26 +0200 Subject: Fix format. --- lib/pleroma/web/twitter_api/twitter_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index e8fc9c291..960925f42 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -347,7 +347,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do def update_profile(%{assigns: %{user: user}} = conn, params) do params = if bio = params["description"] do - bio_brs = Regex.replace(~r/\r?\n/,bio,"
") + bio_brs = Regex.replace(~r/\r?\n/, bio, "
") Map.put(params, "bio", bio_brs) else params -- cgit v1.2.3 From 67dadd954ee0bc0c42b95a9ca0e471051a75a7b6 Mon Sep 17 00:00:00 2001 From: Dashie Date: Wed, 2 May 2018 21:31:42 +0200 Subject: Add first try at nodeinfo --- lib/pleroma/web/nodeinfo/nodeinfo.ex | 2 + lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 53 +++++++++++++++++++++++++ lib/pleroma/web/router.ex | 5 +++ 3 files changed, 60 insertions(+) create mode 100644 lib/pleroma/web/nodeinfo/nodeinfo.ex create mode 100644 lib/pleroma/web/nodeinfo/nodeinfo_controller.ex (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex new file mode 100644 index 000000000..139597f9c --- /dev/null +++ b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -0,0 +1,2 @@ + + diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex new file mode 100644 index 000000000..2c06875f2 --- /dev/null +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -0,0 +1,53 @@ +defmodule Pleroma.Web.Nodeinfo.NodeinfoController do + use Pleroma.Web, :controller + + alias Pleroma.Web.Nodeinfo + alias Pleroma.Stats + alias Pleroma.Web + + @instance Application.get_env(:pleroma, :instance) + + def schemas(conn, _params) do + response = %{ + links: [ + %{ + rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", + href: Web.base_url() <> "/nodeinfo/2.0" + } + ] + } + + json(conn, response) + end + + # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json + def nodeinfo(conn, %{"version" => "2.0"}) do + response = %{ + version: "2.0", + software: %{ + name: "pleroma", + version: "#{Keyword.get(@instance, :version)})" + }, + protocols: ["ostatus", "activitypub"], + services: %{ + inbound: [], + outbound: [] + }, + openRegistrations: Keyword.get(@instance, :registrations_open), + usage: %{ + users: %{ + total: Stats.get_stats().user_count, + } + }, + metadata: %{} + } + + json(conn, response) + end + + def nodeinfo(conn, _) do + conn + |> put_status(404) + |> json(%{error: "Nodeinfo schema not handled"}) + end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index cecf5527c..c025dea33 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -295,6 +295,11 @@ defmodule Pleroma.Web.Router do get("/host-meta", WebFinger.WebFingerController, :host_meta) get("/webfinger", WebFinger.WebFingerController, :webfinger) + get("/nodeinfo", Nodeinfo.NodeinfoController, :schemas) + end + + scope "/nodeinfo", Pleroma.Web do + get("/:version", Nodeinfo.NodeinfoController, :nodeinfo) end end -- cgit v1.2.3 From 65168393d888ce071a1b17cb88aabcefb94b3c34 Mon Sep 17 00:00:00 2001 From: Dashie Date: Wed, 2 May 2018 21:43:12 +0200 Subject: Format files --- lib/pleroma/web/nodeinfo/nodeinfo.ex | 1 - lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex index 139597f9c..8b1378917 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -1,2 +1 @@ - diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 2c06875f2..7b152e315 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -36,7 +36,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do openRegistrations: Keyword.get(@instance, :registrations_open), usage: %{ users: %{ - total: Stats.get_stats().user_count, + total: Stats.get_stats().user_count } }, metadata: %{} -- cgit v1.2.3 From abeb009accaece7f05e8a16a4b5bc28cd6682bc0 Mon Sep 17 00:00:00 2001 From: Dashie Date: Wed, 2 May 2018 22:16:19 +0200 Subject: Change path of nodeinfo to use .json format --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 7b152e315..4f18a9c33 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -12,7 +12,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do links: [ %{ rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", - href: Web.base_url() <> "/nodeinfo/2.0" + href: Web.base_url() <> "/nodeinfo/2.0.json" } ] } -- cgit v1.2.3 From b8789cc8b68c64803dc2243768eda6c74837ba3c Mon Sep 17 00:00:00 2001 From: Dashie Date: Wed, 2 May 2018 22:36:19 +0200 Subject: Add localPosts count, also set to 0 if null --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 4f18a9c33..6db0d19e3 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -36,8 +36,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do openRegistrations: Keyword.get(@instance, :registrations_open), usage: %{ users: %{ - total: Stats.get_stats().user_count - } + total: Stats.get_stats().user_count || 0 + }, + localPosts: Stats.get_stats().status_count || 0 }, metadata: %{} } -- cgit v1.2.3 From fd0bf3aa71a67afab3cfe55d17d7dce9e2f2b305 Mon Sep 17 00:00:00 2001 From: Dashie Date: Wed, 2 May 2018 22:44:13 +0200 Subject: Simplify version and fix typo --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 6db0d19e3..722518763 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -26,7 +26,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do version: "2.0", software: %{ name: "pleroma", - version: "#{Keyword.get(@instance, :version)})" + version: Keyword.get(@instance, :version) }, protocols: ["ostatus", "activitypub"], services: %{ -- cgit v1.2.3 From e448734952088fb15b5d2f3be6c27041a6ba7efc Mon Sep 17 00:00:00 2001 From: Dashie Date: Wed, 2 May 2018 22:45:20 +0200 Subject: Explicit error message --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 722518763..bf845a442 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -49,6 +49,6 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do def nodeinfo(conn, _) do conn |> put_status(404) - |> json(%{error: "Nodeinfo schema not handled"}) + |> json(%{error: "Nodeinfo schema version not handled"}) end end -- cgit v1.2.3 From 804497542d8a0488b697bca1547e3f564e308a2e Mon Sep 17 00:00:00 2001 From: Dashie Date: Thu, 3 May 2018 10:50:02 +0200 Subject: Return the right content-type for the schema call --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index bf845a442..534a858ae 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -43,7 +43,12 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do metadata: %{} } - json(conn, response) + conn + |> put_resp_header( + "content-type", + "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" + ) + |> json(response) end def nodeinfo(conn, _) do -- cgit v1.2.3 From 724f096ac76f9f4c124721e3f0c2675655d7a8d0 Mon Sep 17 00:00:00 2001 From: Dashie Date: Thu, 3 May 2018 10:52:20 +0200 Subject: Add metadata.nodeName --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 534a858ae..83ad4f284 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -40,7 +40,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do }, localPosts: Stats.get_stats().status_count || 0 }, - metadata: %{} + metadata: %{ + nodeName: Keyword.get(@instance, :name) + } } conn -- cgit v1.2.3 From c3f9e24c70722366a31c20eae24fdb81790df2f8 Mon Sep 17 00:00:00 2001 From: Dashie Date: Thu, 3 May 2018 15:31:39 +0200 Subject: Use a variable for stats to avoid double call --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 83ad4f284..36a7802ed 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -22,6 +22,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json def nodeinfo(conn, %{"version" => "2.0"}) do + stats = Stats.get_stats() + response = %{ version: "2.0", software: %{ @@ -36,9 +38,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do openRegistrations: Keyword.get(@instance, :registrations_open), usage: %{ users: %{ - total: Stats.get_stats().user_count || 0 + total: stats.user_count || 0 }, - localPosts: Stats.get_stats().status_count || 0 + localPosts: stats.status_count || 0 }, metadata: %{ nodeName: Keyword.get(@instance, :name) -- cgit v1.2.3 From fcd3eca167508c1dde290f431353ace9d513de86 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 4 May 2018 20:30:29 +0200 Subject: MastodonAPI: Support idempotency key. --- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index c84c226e8..e2243538a 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -275,7 +275,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do |> Map.put("in_reply_to_status_id", params["in_reply_to_id"]) |> Map.put("no_attachment_links", true) - {:ok, activity} = CommonAPI.post(user, params) + idempotency_key = + case get_req_header(conn, "idempotency-key") do + [key] -> key + _ -> Ecto.UUID.generate() + end + + {:ok, activity} = + Cachex.get!( + :user_cache, + "idem:#{idempotency_key}", + fallback: fn _ -> CommonAPI.post(user, params) end + ) + render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity}) end -- cgit v1.2.3 From 90c4bed0af40911e0f8a28743814e4c07e91e9ae Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 4 May 2018 21:15:39 +0200 Subject: Don't expire idempotency cache for five minutes. --- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib') diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index e2243538a..bbd16482a 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -288,6 +288,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do fallback: fn _ -> CommonAPI.post(user, params) end ) + Cachex.expire(:user_cache, "idem:#{idempotency_key}", :timer.seconds(5 * 60)) + render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity}) end -- cgit v1.2.3 From ab4aa5720aeac8541fbf99e6c98e7260cb19d41e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 20:59:01 +0000 Subject: Fix a bunch of unused variable warnings --- lib/pleroma/plugs/http_signature.ex | 4 ++-- lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 2 +- lib/pleroma/web/activity_pub/transmogrifier.ex | 4 ++-- lib/pleroma/web/common_api/utils.ex | 4 ++-- lib/pleroma/web/federator/federator.ex | 8 ++++---- lib/pleroma/web/http_signatures/http_signatures.ex | 2 +- lib/pleroma/web/twitter_api/twitter_api.ex | 4 ++-- lib/pleroma/web/xml/xml.ex | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/plugs/http_signature.ex b/lib/pleroma/plugs/http_signature.ex index 8b9ccdd2d..efde652f5 100644 --- a/lib/pleroma/plugs/http_signature.ex +++ b/lib/pleroma/plugs/http_signature.ex @@ -7,11 +7,11 @@ defmodule Pleroma.Web.Plugs.HTTPSignaturePlug do options end - def call(%{assigns: %{valid_signature: true}} = conn, opts) do + def call(%{assigns: %{valid_signature: true}} = conn, _opts) do conn end - def call(conn, opts) do + def call(conn, _opts) do user = conn.params["actor"] Logger.debug("Checking sig for #{user}") [signature | _] = get_req_header(conn, "signature") diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index ea1af0f4d..ad28cbfe3 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -70,7 +70,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do {:ok, object} <- check_ftl_removal(actor_info, object) do {:ok, object} else - e -> {:reject, nil} + _e -> {:reject, nil} end end end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 2871a2544..221bc7dab 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -143,12 +143,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do end def handle_incoming( - %{"type" => "Like", "object" => object_id, "actor" => actor, "id" => id} = data + %{"type" => "Like", "object" => object_id, "actor" => actor, "id" => id} = _data ) do with %User{} = actor <- User.get_or_fetch_by_ap_id(actor), {:ok, object} <- get_obj_helper(object_id) || ActivityPub.fetch_object_from_id(object_id), - {:ok, activity, object} <- ActivityPub.like(actor, object, id, false) do + {:ok, activity, _object} <- ActivityPub.like(actor, object, id, false) do {:ok, activity} else _e -> :error diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 3c092d524..b142eda95 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -49,7 +49,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do {[user.follower_address | to], cc} end - def to_for_user_and_mentions(user, mentions, inReplyTo, "direct") do + def to_for_user_and_mentions(_user, mentions, inReplyTo, "direct") do mentioned_users = Enum.map(mentions, fn {_, %{ap_id: ap_id}} -> ap_id end) if inReplyTo do @@ -69,7 +69,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do def make_context(%Activity{data: %{"context" => context}}), do: context def make_context(_), do: Utils.generate_context_id() - def maybe_add_attachments(text, attachments, _no_links = true), do: text + def maybe_add_attachments(text, _attachments, _no_links = true), do: text def maybe_add_attachments(text, attachments, _no_links) do add_attachments(text, attachments) diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index 8335add9c..c4c18192c 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -89,12 +89,12 @@ defmodule Pleroma.Web.Federator do with {:ok, _user} <- ap_enabled_actor(params["actor"]), nil <- Activity.get_by_ap_id(params["id"]), - {:ok, activity} <- Transmogrifier.handle_incoming(params) do + {:ok, _activity} <- Transmogrifier.handle_incoming(params) do else %Activity{} -> Logger.info("Already had #{params["id"]}") - e -> + _e -> # Just drop those for now Logger.info("Unhandled activity") Logger.info(Poison.encode!(params, pretty: 2)) @@ -154,7 +154,7 @@ defmodule Pleroma.Web.Federator do end end - def handle_cast({:enqueue, type, payload, priority}, state) + def handle_cast({:enqueue, type, payload, _priority}, state) when type in [:incoming_doc, :incoming_ap_doc] do %{in: {i_running_jobs, i_queue}, out: {o_running_jobs, o_queue}} = state i_queue = enqueue_sorted(i_queue, {type, payload}, 1) @@ -162,7 +162,7 @@ defmodule Pleroma.Web.Federator do {:noreply, %{in: {i_running_jobs, i_queue}, out: {o_running_jobs, o_queue}}} end - def handle_cast({:enqueue, type, payload, priority}, state) do + def handle_cast({:enqueue, type, payload, _priority}, state) do %{in: {i_running_jobs, i_queue}, out: {o_running_jobs, o_queue}} = state o_queue = enqueue_sorted(o_queue, {type, payload}, 1) {o_running_jobs, o_queue} = maybe_start_job(o_running_jobs, o_queue) diff --git a/lib/pleroma/web/http_signatures/http_signatures.ex b/lib/pleroma/web/http_signatures/http_signatures.ex index 0ea3b7554..9035f5eb6 100644 --- a/lib/pleroma/web/http_signatures/http_signatures.ex +++ b/lib/pleroma/web/http_signatures/http_signatures.ex @@ -45,7 +45,7 @@ defmodule Pleroma.Web.HTTPSignatures do end end else - e -> + _e -> Logger.debug("Could not public key!") false end diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index c12cd7f8a..5a843a3ab 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -184,7 +184,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do defp parse_int(_, default), do: default - def search(user, %{"q" => query} = params) do + def search(_user, %{"q" => query} = params) do limit = parse_int(params["rpp"], 20) page = parse_int(params["page"], 1) offset = (page - 1) * limit @@ -206,7 +206,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do order_by: [desc: :inserted_at] ) - activities = Repo.all(q) + _activities = Repo.all(q) end defp make_date do diff --git a/lib/pleroma/web/xml/xml.ex b/lib/pleroma/web/xml/xml.ex index 8b609f695..36430a3fa 100644 --- a/lib/pleroma/web/xml/xml.ex +++ b/lib/pleroma/web/xml/xml.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Web.XML do if res == "", do: nil, else: res catch - e -> + _e -> Logger.debug("Couldn't find xpath #{xpath} in XML doc") nil end -- cgit v1.2.3 From 943820ae295dc52b2cf43ebb539093e24390edba Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:16:02 +0000 Subject: More unused variables --- lib/pleroma/web/activity_pub/activity_pub.ex | 10 +++++----- lib/pleroma/web/activity_pub/transmogrifier.ex | 14 +++++++------- lib/pleroma/web/activity_pub/views/user_view.ex | 4 ++-- lib/pleroma/web/twitter_api/views/activity_view.ex | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 3ddc009a1..fde6e12d7 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -66,7 +66,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do ), {:ok, activity} <- insert(create_data, local), :ok <- maybe_federate(activity), - {:ok, actor} <- User.increase_note_count(actor) do + {:ok, _actor} <- User.increase_note_count(actor) do {:ok, activity} end end @@ -177,7 +177,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Repo.delete_all(Activity.all_non_create_by_object_ap_id_q(id)), {:ok, activity} <- insert(data, local), :ok <- maybe_federate(activity), - {:ok, actor} <- User.decrease_note_count(user) do + {:ok, _actor} <- User.decrease_note_count(user) do {:ok, activity} end end @@ -236,7 +236,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_tag(query, _), do: query - defp restrict_recipients(query, [], user), 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)) @@ -400,7 +400,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end def make_user_from_ap_id(ap_id) do - if user = User.get_by_ap_id(ap_id) do + if _user = User.get_by_ap_id(ap_id) do Transmogrifier.upgrade_user_from_ap_id(ap_id) else with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id) do @@ -496,7 +496,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do object = %Object{} -> {:ok, object} - e -> + _e -> Logger.info("Couldn't get object via AP, trying out OStatus fetching...") case OStatus.fetch_activity_from_url(id) do diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 221bc7dab..da6562dcd 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -156,12 +156,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do end def handle_incoming( - %{"type" => "Announce", "object" => object_id, "actor" => actor, "id" => id} = data + %{"type" => "Announce", "object" => object_id, "actor" => actor, "id" => id} = _data ) do with %User{} = actor <- User.get_or_fetch_by_ap_id(actor), {:ok, object} <- get_obj_helper(object_id) || ActivityPub.fetch_object_from_id(object_id), - {:ok, activity, object} <- ActivityPub.announce(actor, object, id, false) do + {:ok, activity, _object} <- ActivityPub.announce(actor, object, id, false) do {:ok, activity} else _e -> :error @@ -202,7 +202,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do # TODO: Make secure. def handle_incoming( - %{"type" => "Delete", "object" => object_id, "actor" => actor, "id" => id} = data + %{"type" => "Delete", "object" => object_id, "actor" => actor, "id" => _id} = _data ) do object_id = case object_id do @@ -210,13 +210,13 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do id -> id end - with %User{} = actor <- User.get_or_fetch_by_ap_id(actor), + with %User{} = _actor <- User.get_or_fetch_by_ap_id(actor), {:ok, object} <- get_obj_helper(object_id) || ActivityPub.fetch_object_from_id(object_id), {:ok, activity} <- ActivityPub.delete(object, false) do {:ok, activity} else - e -> :error + _e -> :error end end @@ -272,7 +272,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do {:ok, data} end - def prepare_outgoing(%{"type" => type} = data) do + def prepare_outgoing(%{"type" => _type} = data) do data = data |> maybe_fix_object_url @@ -286,7 +286,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do case ActivityPub.fetch_object_from_id(data["object"]) do {:ok, relative_object} -> if relative_object.data["external_url"] do - data = + _data = data |> Map.put("object", relative_object.data["external_url"]) else diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 92afd0872..733e5fb57 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -47,11 +47,11 @@ defmodule Pleroma.Web.ActivityPub.UserView do |> Map.merge(Utils.make_json_ld_header()) end - def collection(collection, iri, page, total \\ nil) do + def collection(collection, iri, page, _total \\ nil) do offset = (page - 1) * 10 items = Enum.slice(collection, offset, 10) items = Enum.map(items, fn user -> user.ap_id end) - total = total || length(collection) + _total = _total || length(collection) map = %{ "id" => "#{iri}?page=#{page}", diff --git a/lib/pleroma/web/twitter_api/views/activity_view.ex b/lib/pleroma/web/twitter_api/views/activity_view.ex index 4e4433aed..580d4648c 100644 --- a/lib/pleroma/web/twitter_api/views/activity_view.ex +++ b/lib/pleroma/web/twitter_api/views/activity_view.ex @@ -31,7 +31,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do end defp collect_context_ids(activities) do - contexts = + _contexts = activities |> Enum.reject(& &1.data["context_id"]) |> Enum.map(fn %{data: data} -> -- cgit v1.2.3 From 636f0fa40240f567a2171b347f0722d601ba63db Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:25:31 +0000 Subject: Clean up unused aliases and imports --- lib/mix/tasks/generate_password_reset.ex | 3 +-- lib/mix/tasks/register_user.ex | 1 - lib/mix/tasks/rm_user.ex | 3 +-- lib/pleroma/stats.ex | 2 +- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 2 +- lib/pleroma/web/channels/user_socket.ex | 1 - lib/pleroma/web/common_api/common_api.ex | 2 +- lib/pleroma/web/common_api/utils.ex | 2 +- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 1 - lib/pleroma/web/ostatus/activity_representer.ex | 1 - lib/pleroma/web/ostatus/handlers/note_handler.ex | 2 +- lib/pleroma/web/ostatus/ostatus_controller.ex | 1 - lib/pleroma/web/twitter_api/twitter_api.ex | 1 - lib/pleroma/web/web_finger/web_finger.ex | 2 +- 14 files changed, 8 insertions(+), 16 deletions(-) (limited to 'lib') diff --git a/lib/mix/tasks/generate_password_reset.ex b/lib/mix/tasks/generate_password_reset.ex index e39134007..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 diff --git a/lib/mix/tasks/register_user.ex b/lib/mix/tasks/register_user.ex index 4bec6b9d9..e74721c49 100644 --- a/lib/mix/tasks/register_user.ex +++ b/lib/mix/tasks/register_user.ex @@ -1,6 +1,5 @@ defmodule Mix.Tasks.RegisterUser do use Mix.Task - import Mix.Ecto alias Pleroma.{Repo, User} @shortdoc "Register user" diff --git a/lib/mix/tasks/rm_user.ex b/lib/mix/tasks/rm_user.ex index 6a698f360..27521b745 100644 --- a/lib/mix/tasks/rm_user.ex +++ b/lib/mix/tasks/rm_user.ex @@ -1,7 +1,6 @@ defmodule Mix.Tasks.RmUser do use Mix.Task - import Mix.Ecto - alias Pleroma.{User, Repo} + alias Pleroma.User @shortdoc "Permanently delete a user" def run([nickname]) do diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 83b896a16..8478fe4ce 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -1,6 +1,6 @@ defmodule Pleroma.Stats do import Ecto.Query - alias Pleroma.{User, Repo, Activity} + alias Pleroma.{User, Repo} def start_link do agent = Agent.start_link(fn -> {[], %{}} end, name: __MODULE__) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 12f61f5f0..d374fd91f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -1,6 +1,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do use Pleroma.Web, :controller - alias Pleroma.{User, Repo, Object, Activity} + alias Pleroma.{User, Object} alias Pleroma.Web.ActivityPub.{ObjectView, UserView, Transmogrifier} alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.Federator diff --git a/lib/pleroma/web/channels/user_socket.ex b/lib/pleroma/web/channels/user_socket.ex index fd8918a7d..21b22b409 100644 --- a/lib/pleroma/web/channels/user_socket.ex +++ b/lib/pleroma/web/channels/user_socket.ex @@ -1,7 +1,6 @@ defmodule Pleroma.Web.UserSocket do use Phoenix.Socket alias Pleroma.User - alias Comeonin.Pbkdf2 ## Channels # channel "room:*", Pleroma.Web.RoomChannel diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 2c4b591d4..14a68929d 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -1,5 +1,5 @@ defmodule Pleroma.Web.CommonAPI do - alias Pleroma.{Repo, Activity, Object, User} + alias Pleroma.{Repo, Activity, Object} alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Formatter diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index b142eda95..57f8be894 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -1,5 +1,5 @@ defmodule Pleroma.Web.CommonAPI.Utils do - alias Pleroma.{Repo, Object, Formatter, User, Activity} + alias Pleroma.{Repo, Object, Formatter, Activity} alias Pleroma.Web.ActivityPub.Utils alias Calendar.Strftime diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 36a7802ed..aec77168a 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -1,7 +1,6 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do use Pleroma.Web, :controller - alias Pleroma.Web.Nodeinfo alias Pleroma.Stats alias Pleroma.Web diff --git a/lib/pleroma/web/ostatus/activity_representer.ex b/lib/pleroma/web/ostatus/activity_representer.ex index 921a89bd0..e8841a856 100644 --- a/lib/pleroma/web/ostatus/activity_representer.ex +++ b/lib/pleroma/web/ostatus/activity_representer.ex @@ -1,7 +1,6 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do alias Pleroma.{Activity, User, Object} alias Pleroma.Web.OStatus.UserRepresenter - alias Pleroma.Formatter require Logger defp get_href(id) do diff --git a/lib/pleroma/web/ostatus/handlers/note_handler.ex b/lib/pleroma/web/ostatus/handlers/note_handler.ex index bd6e92238..0d4080291 100644 --- a/lib/pleroma/web/ostatus/handlers/note_handler.ex +++ b/lib/pleroma/web/ostatus/handlers/note_handler.ex @@ -1,7 +1,7 @@ defmodule Pleroma.Web.OStatus.NoteHandler do require Logger alias Pleroma.Web.{XML, OStatus} - alias Pleroma.{Object, User, Activity} + alias Pleroma.{Object, Activity} alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index a02f55fe6..f39ebaf2b 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.Web.XML alias Pleroma.Web.ActivityPub.ActivityPubController alias Pleroma.Web.ActivityPub.ActivityPub - import Ecto.Query def feed_redirect(conn, %{"nickname" => nickname} = params) do user = User.get_cached_by_nickname(nickname) diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 5a843a3ab..44ea40a4e 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -1,7 +1,6 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do alias Pleroma.{User, Activity, Repo, Object} alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter alias Pleroma.Web.TwitterAPI.UserView alias Pleroma.Web.{OStatus, CommonAPI} import Ecto.Query diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger/web_finger.ex index dc9ad2014..9fe3b2ca1 100644 --- a/lib/pleroma/web/web_finger/web_finger.ex +++ b/lib/pleroma/web/web_finger/web_finger.ex @@ -1,7 +1,7 @@ defmodule Pleroma.Web.WebFinger do @httpoison Application.get_env(:pleroma, :httpoison) - alias Pleroma.{Repo, User, XmlBuilder} + alias Pleroma.{User, XmlBuilder} alias Pleroma.Web alias Pleroma.Web.{XML, Salmon, OStatus} require Jason -- cgit v1.2.3 From 42f1a098aa5f3e446964b439236b507d0002e837 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:26:33 +0000 Subject: Fix build. Too eager with the fixing of unused variables. == Compilation error in file lib/pleroma/web/activity_pub/views/user_view.ex == ** (CompileError) lib/pleroma/web/activity_pub/views/user_view.ex:54: undefined function _total/0 (stdlib) lists.erl:1338: :lists.foreach/2 (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6 --- lib/pleroma/web/activity_pub/views/user_view.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 733e5fb57..d6bf71884 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -51,7 +51,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do offset = (page - 1) * 10 items = Enum.slice(collection, offset, 10) items = Enum.map(items, fn user -> user.ap_id end) - _total = _total || length(collection) + total = _total || length(collection) map = %{ "id" => "#{iri}?page=#{page}", -- cgit v1.2.3 From aaacebd906b0506b1d0f55df3047f0d730bd4b26 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:42:20 +0000 Subject: Fix unused variables, imports, and aliases --- lib/mix/tasks/fix_ap_users.ex | 1 - lib/pleroma/web/activity_pub/activity_pub_controller.ex | 2 +- lib/pleroma/web/mastodon_api/views/status_view.ex | 2 +- lib/pleroma/web/twitter_api/controllers/util_controller.ex | 2 +- lib/pleroma/web/twitter_api/views/notification_view.ex | 1 - 5 files changed, 3 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/mix/tasks/fix_ap_users.ex b/lib/mix/tasks/fix_ap_users.ex index 2523cdbcb..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} diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index d374fd91f..80aae4f0f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -1,7 +1,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do use Pleroma.Web, :controller alias Pleroma.{User, Object} - alias Pleroma.Web.ActivityPub.{ObjectView, UserView, Transmogrifier} + alias Pleroma.Web.ActivityPub.{ObjectView, UserView} alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.Federator diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index df360644a..cbc2dd770 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -83,7 +83,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end def get_reply_to(activity, %{replied_to_activities: replied_to_activities}) do - id = activity.data["object"]["inReplyTo"] + _id = activity.data["object"]["inReplyTo"] replied_to_activities[activity.data["object"]["inReplyTo"]] end diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index c7b1a5b95..ea540b34c 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -92,7 +92,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do with %User{} = user <- User.get_cached_by_nickname(username), true <- Pbkdf2.checkpw(password, user.password_hash), - %User{} = followed <- Repo.get(User, id), + %User{} = _followed <- Repo.get(User, id), {:ok, follower} <- User.follow(user, followee), {:ok, _activity} <- ActivityPub.follow(follower, followee) do conn diff --git a/lib/pleroma/web/twitter_api/views/notification_view.ex b/lib/pleroma/web/twitter_api/views/notification_view.ex index f41edea0b..9eeb3afdc 100644 --- a/lib/pleroma/web/twitter_api/views/notification_view.ex +++ b/lib/pleroma/web/twitter_api/views/notification_view.ex @@ -2,7 +2,6 @@ defmodule Pleroma.Web.TwitterAPI.NotificationView do use Pleroma.Web, :view alias Pleroma.{Notification, User} alias Pleroma.Web.CommonAPI.Utils - alias Pleroma.Web.MediaProxy alias Pleroma.Web.TwitterAPI.UserView alias Pleroma.Web.TwitterAPI.ActivityView -- cgit v1.2.3 From 79d41aa12e900423a9717187a94faceec7f014fd Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:48:30 +0000 Subject: Dirty hack to remove the warning warning: code block contains unused literal "internal -> Mastodon\n" (remove the literal or assign it to _ to avoid warnings) lib/pleroma/web/activity_pub/transmogrifier.ex --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index da6562dcd..01b3eab27 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -255,7 +255,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do end @doc - """ + _ = """ internal -> Mastodon """ -- cgit v1.2.3 From a24eed0f575718f491f155a74febd9866cf2c09a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:53:52 +0000 Subject: That last change was stupid. Multiline comments in Elixir don't really exist. Instead we'll just pad with # intstead of playing stupid games with the compiler. --- lib/pleroma/web/activity_pub/transmogrifier.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 01b3eab27..2b6a97aa0 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -254,10 +254,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> set_reply_to_uri end - @doc - _ = """ - internal -> Mastodon - """ +# @doc +# """ +# internal -> Mastodon +# """ def prepare_outgoing(%{"type" => "Create", "object" => %{"type" => "Note"} = object} = data) do object = -- cgit v1.2.3 From 2a402fb3958fe1775afc69075ba394dde0b112a0 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 21:59:21 +0000 Subject: Group response declarations together --- lib/pleroma/gopher/server.ex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/gopher/server.ex b/lib/pleroma/gopher/server.ex index 82e241f21..f6abcd4d0 100644 --- a/lib/pleroma/gopher/server.ex +++ b/lib/pleroma/gopher/server.ex @@ -65,12 +65,6 @@ defmodule Pleroma.Gopher.Server.ProtocolHandler do "#{type}#{name}\t#{selector}\t#{address}\t#{port}\r\n" end - def response("") do - info("Welcome to #{Keyword.get(@instance, :name, "Pleroma")}!") <> - link("Public Timeline", "/main/public") <> - link("Federated Timeline", "/main/all") <> ".\r\n" - end - def render_activities(activities) do activities |> Enum.reverse() @@ -93,6 +87,12 @@ defmodule Pleroma.Gopher.Server.ProtocolHandler do |> Enum.join("\r\n") end + def response("") do + info("Welcome to #{Keyword.get(@instance, :name, "Pleroma")}!") <> + link("Public Timeline", "/main/public") <> + link("Federated Timeline", "/main/all") <> ".\r\n" + end + def response("/main/public") do posts = ActivityPub.fetch_public_activities(%{"type" => ["Create"], "local_only" => true}) -- cgit v1.2.3 From 14c0c6d16bd2c91ca02fc0c81dd0fb46ef8af41c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 22:03:14 +0000 Subject: Fix formatting --- lib/pleroma/web/activity_pub/transmogrifier.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 2b6a97aa0..c6b99da2e 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -254,10 +254,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> set_reply_to_uri end -# @doc -# """ -# internal -> Mastodon -# """ + # @doc + # """ + # internal -> Mastodon + # """ def prepare_outgoing(%{"type" => "Create", "object" => %{"type" => "Note"} = object} = data) do object = -- cgit v1.2.3 From 31ea9cbcd8e359838faf6587db73005f090040e1 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 22:28:13 +0000 Subject: Group def renders together to fix warning --- lib/pleroma/web/mastodon_api/views/status_view.ex | 52 +++++++++++------------ 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index cbc2dd770..5c6fd05f3 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -82,19 +82,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do } end - def get_reply_to(activity, %{replied_to_activities: replied_to_activities}) do - _id = activity.data["object"]["inReplyTo"] - replied_to_activities[activity.data["object"]["inReplyTo"]] - end - - def get_reply_to(%{data: %{"object" => object}}, _) do - if object["inReplyTo"] && object["inReplyTo"] != "" do - Activity.get_create_activity_by_object_ap_id(object["inReplyTo"]) - else - nil - end - end - def render("status.json", %{activity: %{data: %{"object" => object}} = activity} = opts) do user = User.get_cached_by_ap_id(activity.data["actor"]) @@ -164,19 +151,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do } end - def get_visibility(object) do - public = "https://www.w3.org/ns/activitystreams#Public" - to = object["to"] || [] - cc = object["cc"] || [] - - cond do - public in to -> "public" - public in cc -> "unlisted" - Enum.any?(to, &String.contains?(&1, "/followers")) -> "private" - true -> "direct" - end - end - def render("attachment.json", %{attachment: attachment}) do [%{"mediaType" => media_type, "href" => href} | _] = attachment["url"] @@ -199,4 +173,30 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do type: type } end + + def get_reply_to(activity, %{replied_to_activities: replied_to_activities}) do + _id = activity.data["object"]["inReplyTo"] + replied_to_activities[activity.data["object"]["inReplyTo"]] + end + + def get_reply_to(%{data: %{"object" => object}}, _) do + if object["inReplyTo"] && object["inReplyTo"] != "" do + Activity.get_create_activity_by_object_ap_id(object["inReplyTo"]) + else + nil + end + end + + def get_visibility(object) do + public = "https://www.w3.org/ns/activitystreams#Public" + to = object["to"] || [] + cc = object["cc"] || [] + + cond do + public in to -> "public" + public in cc -> "unlisted" + Enum.any?(to, &String.contains?(&1, "/followers")) -> "private" + true -> "direct" + end + end end -- cgit v1.2.3 From 7a884d70d8fd92a44c35911509b248a902275e07 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 May 2018 22:31:46 +0000 Subject: Group def renders here as well --- lib/pleroma/web/activity_pub/views/user_view.ex | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index d6bf71884..156a12f26 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -47,25 +47,6 @@ defmodule Pleroma.Web.ActivityPub.UserView do |> Map.merge(Utils.make_json_ld_header()) end - def collection(collection, iri, page, _total \\ nil) do - offset = (page - 1) * 10 - items = Enum.slice(collection, offset, 10) - items = Enum.map(items, fn user -> user.ap_id end) - total = _total || length(collection) - - map = %{ - "id" => "#{iri}?page=#{page}", - "type" => "OrderedCollectionPage", - "partOf" => iri, - "totalItems" => length(collection), - "orderedItems" => items - } - - if offset < length(collection) do - Map.put(map, "next", "#{iri}?page=#{page + 1}") - end - end - def render("following.json", %{user: user, page: page}) do query = User.get_friends_query(user) query = from(user in query, select: [:ap_id]) @@ -162,4 +143,23 @@ defmodule Pleroma.Web.ActivityPub.UserView do page |> Map.merge(Utils.make_json_ld_header()) end end + + def collection(collection, iri, page, _total \\ nil) do + offset = (page - 1) * 10 + items = Enum.slice(collection, offset, 10) + items = Enum.map(items, fn user -> user.ap_id end) + total = _total || length(collection) + + map = %{ + "id" => "#{iri}?page=#{page}", + "type" => "OrderedCollectionPage", + "partOf" => iri, + "totalItems" => length(collection), + "orderedItems" => items + } + + if offset < length(collection) do + Map.put(map, "next", "#{iri}?page=#{page + 1}") + end + end end -- cgit v1.2.3 From c464355d1ac7f9558aa50f7038035b9a47614822 Mon Sep 17 00:00:00 2001 From: lain Date: Sat, 5 May 2018 11:15:57 +0200 Subject: Idempotency: Use special cache, keep for 6 hours. --- lib/pleroma/application.ex | 12 ++++++++++++ lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 6 ++---- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 89826f515..e1e3bcd63 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -23,6 +23,18 @@ defmodule Pleroma.Application do limit: 2500 ] ]), + worker( + Cachex, + [ + :idempotency_cache, + [ + default_ttl: :timer.seconds(6 * 60 * 60), + ttl_interval: :timer.seconds(60), + limit: 2500 + ] + ], + id: :cachex_idem + ), worker(Pleroma.Web.Federator, []), worker(Pleroma.Gopher.Server, []), worker(Pleroma.Stats, []) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index bbd16482a..2b4e9e72b 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -283,13 +283,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do {:ok, activity} = Cachex.get!( - :user_cache, - "idem:#{idempotency_key}", + :idempotency_cache, + idempotency_key, fallback: fn _ -> CommonAPI.post(user, params) end ) - Cachex.expire(:user_cache, "idem:#{idempotency_key}", :timer.seconds(5 * 60)) - render(conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity}) end -- cgit v1.2.3 From 96add86b509da93e0069fc89ebb8474d4ac2c6fd Mon Sep 17 00:00:00 2001 From: lain Date: Sat, 5 May 2018 13:40:31 +0200 Subject: Unify wss uri generation. --- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 2b4e9e72b..b77c9fc02 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -112,7 +112,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do version: "#{@mastodon_api_level} (compatible; #{Keyword.get(@instance, :version)})", email: Keyword.get(@instance, :email), urls: %{ - streaming_api: String.replace(Web.base_url(), ["http", "https"], "wss") + streaming_api: String.replace(Pleroma.Web.Endpoint.static_url(), "http", "ws") }, stats: Stats.get_stats(), thumbnail: Web.base_url() <> "/instance/thumbnail.jpeg", -- cgit v1.2.3 From 9810153aebeb7dfd9b65774dd8775e382736bbf1 Mon Sep 17 00:00:00 2001 From: lain Date: Sat, 5 May 2018 13:40:47 +0200 Subject: Streamer: Don't send out stream events for blocked users. --- lib/pleroma/web/streamer.ex | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex index 10670e71f..3375af841 100644 --- a/lib/pleroma/web/streamer.ex +++ b/lib/pleroma/web/streamer.ex @@ -110,20 +110,26 @@ defmodule Pleroma.Web.Streamer do def push_to_socket(topics, topic, item) do Enum.each(topics[topic] || [], fn socket -> - json = - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: item, - for: socket.assigns[:user] - ) - |> Jason.encode!() - } - |> Jason.encode!() - - send(socket.transport_pid, {:text, json}) + # Get the current user so we have up-to-date blocks etc. + user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) + blocks = user.info["blocks"] || [] + + unless item.actor in blocks do + json = + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: item, + for: user + ) + |> Jason.encode!() + } + |> Jason.encode!() + + send(socket.transport_pid, {:text, json}) + end end) end -- cgit v1.2.3 From bfad57c7c975cdd455e165ee50001b202952564f Mon Sep 17 00:00:00 2001 From: eal Date: Sun, 6 May 2018 09:58:59 +0300 Subject: Get rid of unsafe variables. --- lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 42 +++++++++++++--------- lib/pleroma/web/activity_pub/transmogrifier.ex | 9 +++-- lib/pleroma/web/activity_pub/views/user_view.ex | 9 +++-- .../web/mastodon_api/mastodon_api_controller.ex | 12 +++---- lib/pleroma/web/web_finger/web_finger.ex | 13 +++---- 5 files changed, 50 insertions(+), 35 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index ea1af0f4d..31105ffe9 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -17,9 +17,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do if actor_info.host in @media_removal do child_object = Map.delete(object["object"], "attachment") object = Map.put(object, "object", child_object) + {:ok, object} + else + {:ok, object} end - - {:ok, object} end @media_nsfw Keyword.get(@mrf_policy, :media_nsfw) @@ -32,9 +33,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do child_object = Map.put(child_object, "tags", tags) child_object = Map.put(child_object, "sensitive", true) object = Map.put(object, "object", child_object) + {:ok, object} + else + {:ok, object} end - - {:ok, object} end @ftl_removal Keyword.get(@mrf_policy, :federated_timeline_removal) @@ -43,22 +45,28 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do user = User.get_by_ap_id(object["actor"]) # flip to/cc relationship to make the post unlisted - if "https://www.w3.org/ns/activitystreams#Public" in object["to"] and - user.follower_address in object["cc"] do - to = - List.delete(object["to"], "https://www.w3.org/ns/activitystreams#Public") ++ - [user.follower_address] + object = + if "https://www.w3.org/ns/activitystreams#Public" in object["to"] and + user.follower_address in object["cc"] do + to = + List.delete(object["to"], "https://www.w3.org/ns/activitystreams#Public") ++ + [user.follower_address] - cc = - List.delete(object["cc"], user.follower_address) ++ - ["https://www.w3.org/ns/activitystreams#Public"] + cc = + List.delete(object["cc"], user.follower_address) ++ + ["https://www.w3.org/ns/activitystreams#Public"] - object = Map.put(object, "to", to) - object = Map.put(object, "cc", cc) - end - end + object + |> Map.put("to", to) + |> Map.put("cc", cc) + else + object + end - {:ok, object} + {:ok, object} + else + {:ok, object} + end end def filter(object) do diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 2871a2544..c5d1ec0c2 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -72,9 +72,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> Enum.reduce(%{}, fn data, mapping -> name = data["name"] - if String.starts_with?(name, ":") do - name = name |> String.slice(1..-2) - end + name = + if String.starts_with?(name, ":") do + name = name |> String.slice(1..-2) + else + name + end mapping |> Map.put(name, data["icon"]["url"]) end) diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 92afd0872..74f89c516 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -123,9 +123,12 @@ defmodule Pleroma.Web.ActivityPub.UserView do "limit" => "10" } - if max_qid != nil do - params = Map.put(params, "max_id", max_qid) - end + params = + if max_qid != nil do + Map.put(params, "max_id", max_qid) + else + params + end activities = ActivityPub.fetch_public_activities(params) min_id = Enum.at(activities, 0).id diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index b77c9fc02..9f4261143 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -212,14 +212,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do |> Map.put("actor_id", ap_id) |> Map.put("whole_db", true) - if params["pinned"] == "true" do - # Since Pleroma has no "pinned" posts feature, we'll just set an empty list here - activities = [] - else - activities = + activities = + if params["pinned"] == "true" do + # Since Pleroma has no "pinned" posts feature, we'll just set an empty list here + [] + else ActivityPub.fetch_public_activities(params) |> Enum.reverse() - end + end conn |> add_link_headers(:user_statuses, activities, params["id"]) diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger/web_finger.ex index dc9ad2014..e1b552cdc 100644 --- a/lib/pleroma/web/web_finger/web_finger.ex +++ b/lib/pleroma/web/web_finger/web_finger.ex @@ -239,13 +239,14 @@ defmodule Pleroma.Web.WebFinger do URI.parse(account).host end - case find_lrdd_template(domain) do - {:ok, template} -> - address = String.replace(template, "{uri}", URI.encode(account)) + address = + case find_lrdd_template(domain) do + {:ok, template} -> + String.replace(template, "{uri}", URI.encode(account)) - _ -> - address = "http://#{domain}/.well-known/webfinger?resource=acct:#{account}" - end + _ -> + "http://#{domain}/.well-known/webfinger?resource=acct:#{account}" + end with response <- @httpoison.get( -- cgit v1.2.3 From ffe028cd7392404c85ab65eca167a16e85b3f788 Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 7 May 2018 18:11:37 +0200 Subject: More warning fixes. --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 +- lib/pleroma/web/activity_pub/views/user_view.ex | 8 ++++---- lib/pleroma/web/federator/federator.ex | 4 ++++ lib/pleroma/web/oauth/authorization.ex | 2 +- lib/pleroma/web/oauth/token.ex | 2 +- lib/pleroma/web/streamer.ex | 4 ++++ 6 files changed, 15 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index a0e45510c..5f86f67cd 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -74,7 +74,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do name = if String.starts_with?(name, ":") do - name = name |> String.slice(1..-2) + name |> String.slice(1..-2) else name end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index a1f0be9ed..ffd76b529 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -147,21 +147,21 @@ defmodule Pleroma.Web.ActivityPub.UserView do end end - def collection(collection, iri, page, _total \\ nil) do + def collection(collection, iri, page, total \\ nil) do offset = (page - 1) * 10 items = Enum.slice(collection, offset, 10) items = Enum.map(items, fn user -> user.ap_id end) - total = _total || length(collection) + total = total || length(collection) map = %{ "id" => "#{iri}?page=#{page}", "type" => "OrderedCollectionPage", "partOf" => iri, - "totalItems" => length(collection), + "totalItems" => total, "orderedItems" => items } - if offset < length(collection) do + if offset < total do Map.put(map, "next", "#{iri}?page=#{page + 1}") end end diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index c4c18192c..f84af2f15 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -14,6 +14,10 @@ defmodule Pleroma.Web.Federator do @federating Keyword.get(@instance, :federating) @max_jobs 20 + def init(args) do + {:ok, args} + end + def start_link do spawn(fn -> # 1 minute diff --git a/lib/pleroma/web/oauth/authorization.ex b/lib/pleroma/web/oauth/authorization.ex index 94f44c9f2..23e8eb7b1 100644 --- a/lib/pleroma/web/oauth/authorization.ex +++ b/lib/pleroma/web/oauth/authorization.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.OAuth.Authorization do field(:valid_until, :naive_datetime) field(:used, :boolean, default: false) belongs_to(:user, Pleroma.User) - belongs_to(:app, Pleroma.App) + belongs_to(:app, App) timestamps() end diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 65abd78c8..343fc0c45 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.OAuth.Token do field(:refresh_token, :string) field(:valid_until, :naive_datetime) belongs_to(:user, Pleroma.User) - belongs_to(:app, Pleroma.App) + belongs_to(:app, App) timestamps() end diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex index 3375af841..33041ec12 100644 --- a/lib/pleroma/web/streamer.ex +++ b/lib/pleroma/web/streamer.ex @@ -3,6 +3,10 @@ defmodule Pleroma.Web.Streamer do require Logger alias Pleroma.{User, Notification} + def init(args) do + {:ok, args} + end + def start_link do spawn(fn -> # 30 seconds -- cgit v1.2.3 From e9e6f37bda2620147a18eb0edb472a1aec46e8f9 Mon Sep 17 00:00:00 2001 From: href Date: Thu, 10 May 2018 18:34:09 +0200 Subject: Chain policies - The `:pleroma, :instance, :rewrite_policy` can now be either a policy or a list of policies - Made a behaviour for MRF policies --- lib/pleroma/web/activity_pub/activity_pub.ex | 5 ++--- lib/pleroma/web/activity_pub/mrf.ex | 21 +++++++++++++++++++++ lib/pleroma/web/activity_pub/mrf/drop_policy.ex | 2 ++ lib/pleroma/web/activity_pub/mrf/noop_policy.ex | 3 +++ lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 2 ++ 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 lib/pleroma/web/activity_pub/mrf.ex (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index fde6e12d7..956c223ee 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1,6 +1,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.{Activity, Repo, Object, Upload, User, Notification} - alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.ActivityPub.{Transmogrifier, MRF} alias Pleroma.Web.WebFinger alias Pleroma.Web.Federator alias Pleroma.Web.OStatus @@ -11,7 +11,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do @httpoison Application.get_env(:pleroma, :httpoison) @instance Application.get_env(:pleroma, :instance) - @rewrite_policy Keyword.get(@instance, :rewrite_policy) def get_recipients(data) do (data["to"] || []) ++ (data["cc"] || []) @@ -20,7 +19,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do def insert(map, local \\ true) when is_map(map) do with nil <- Activity.get_by_ap_id(map["id"]), map <- lazy_put_activity_defaults(map), - {:ok, map} <- @rewrite_policy.filter(map), + {:ok, map} <- MRF.filter(map), :ok <- insert_full_object(map) do {:ok, activity} = Repo.insert(%Activity{ diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex new file mode 100644 index 000000000..6d5aa9515 --- /dev/null +++ b/lib/pleroma/web/activity_pub/mrf.ex @@ -0,0 +1,21 @@ +defmodule Pleroma.Web.ActivityPub.MRF do + + @callback filter(Map.t) :: {:ok | :reject, Map.t} + + def filter(object) do + get_policies() + |> Enum.reduce({:ok, object}, fn + (policy, {:ok, object}) -> + policy.filter(object) + (_, error) -> error + end) + end + + def get_policies() do + Application.get_env(:pleroma, :instance, []) + |> Keyword.get(:rewrite_policy, []) + |> get_policies() + end + def get_policies(policy) when is_atom(policy), do: [policy] + def get_policies(policies) when is_list(policies), do: policies +end diff --git a/lib/pleroma/web/activity_pub/mrf/drop_policy.ex b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex index 4333bca28..811947943 100644 --- a/lib/pleroma/web/activity_pub/mrf/drop_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex @@ -1,6 +1,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.DropPolicy do require Logger + @behaviour Pleroma.Web.ActivityPub.MRF + @impl true def filter(object) do Logger.info("REJECTING #{inspect(object)}") {:reject, object} diff --git a/lib/pleroma/web/activity_pub/mrf/noop_policy.ex b/lib/pleroma/web/activity_pub/mrf/noop_policy.ex index 9dd3acb04..e26f60d26 100644 --- a/lib/pleroma/web/activity_pub/mrf/noop_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/noop_policy.ex @@ -1,4 +1,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoOpPolicy do + @behaviour Pleroma.Web.ActivityPub.MRF + + @impl true def filter(object) do {:ok, object} end diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index d840d759d..8d770387d 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -1,5 +1,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do alias Pleroma.User + @behaviour Pleroma.Web.ActivityPub.MRF @mrf_policy Application.get_env(:pleroma, :mrf_simple) @@ -69,6 +70,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do end end + @impl true def filter(object) do actor_info = URI.parse(object["actor"]) -- cgit v1.2.3 From c220a6db432f9b508dcf2ee9edf4ceee660672fc Mon Sep 17 00:00:00 2001 From: href Date: Thu, 10 May 2018 18:51:58 +0200 Subject: format & made get_policies/1 private --- lib/pleroma/web/activity_pub/mrf.ex | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex index 6d5aa9515..0a4e2bf80 100644 --- a/lib/pleroma/web/activity_pub/mrf.ex +++ b/lib/pleroma/web/activity_pub/mrf.ex @@ -1,13 +1,14 @@ defmodule Pleroma.Web.ActivityPub.MRF do - - @callback filter(Map.t) :: {:ok | :reject, Map.t} + @callback filter(Map.t()) :: {:ok | :reject, Map.t()} def filter(object) do get_policies() |> Enum.reduce({:ok, object}, fn - (policy, {:ok, object}) -> + policy, {:ok, object} -> policy.filter(object) - (_, error) -> error + + _, error -> + error end) end @@ -16,6 +17,8 @@ defmodule Pleroma.Web.ActivityPub.MRF do |> Keyword.get(:rewrite_policy, []) |> get_policies() end - def get_policies(policy) when is_atom(policy), do: [policy] - def get_policies(policies) when is_list(policies), do: policies + + defp get_policies(policy) when is_atom(policy), do: [policy] + defp get_policies(policies) when is_list(policies), do: policies + defp get_policies(_), do: [] end -- cgit v1.2.3 From 89603eda9ea51c5bd3c681fce958a4a6b446debe Mon Sep 17 00:00:00 2001 From: Pierrick Brun Date: Mon, 7 May 2018 20:51:14 +0200 Subject: do not create notification for yourself --- lib/pleroma/notification.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index e26e49c8c..e0dcd9823 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -91,7 +91,8 @@ defmodule Pleroma.Notification do # TODO move to sql, too. def create_notification(%Activity{} = activity, %User{} = user) do - unless User.blocks?(user, %{ap_id: activity.data["actor"]}) do + unless User.blocks?(user, %{ap_id: activity.data["actor"]}) or + user.ap_id == activity.data["actor"] do notification = %Notification{user_id: user.id, activity: activity} {:ok, notification} = Repo.insert(notification) Pleroma.Web.Streamer.stream("user", notification) -- cgit v1.2.3