Fix AntiFollowbotPolicy when trying to follow a relay
authorfeld <feld@feld.me>
Fri, 30 Aug 2019 00:38:03 +0000 (00:38 +0000)
committerkaniini <ariadne@dereferenced.org>
Fri, 30 Aug 2019 00:38:03 +0000 (00:38 +0000)
CHANGELOG.md
lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex

index 20af9badcc90938abeccdf284a3ed7d5eb3fe28e..4acb749aca91f3bcbacd64c47a0d430ab50466a4 100644 (file)
@@ -49,6 +49,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Reverse Proxy limiting `max_body_length` was incorrectly defined and only checked `Content-Length` headers which may not be sufficient in some circumstances
 - MRF: fix use of unserializable keyword lists in describe() implementations
 - ActivityPub: Deactivated user deletion
+- MRF: fix ability to follow a relay when AntiFollowbotPolicy was enabled
 
 ### Added
 - Expiring/ephemeral activites. All activities can have expires_at value set, which controls when they should be deleted automatically.
index de1eb4aa5325249010fdc3e8e0b3764845dbedc1..b3547ecd4530de87ecf7d04d4abc72dc5ba0f862 100644 (file)
@@ -25,11 +25,15 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy do
   defp score_displayname(_), do: 0.0
 
   defp determine_if_followbot(%User{nickname: nickname, name: displayname}) do
-    # nickname will always be a binary string because it's generated by Pleroma.
+    # nickname will be a binary string except when following a relay
     nick_score =
-      nickname
-      |> String.downcase()
-      |> score_nickname()
+      if is_binary(nickname) do
+        nickname
+        |> String.downcase()
+        |> score_nickname()
+      else
+        0.0
+      end
 
     # displayname will either be a binary string or nil, if a displayname isn't set.
     name_score =