From 5d4d51e6dcbdff442e8bbc7cd3924b621d8f1783 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 18 Jan 2019 19:25:37 +0100 Subject: Add fixes for SPC users. --- lib/pleroma/spc_fixes/spc_fixes.ex | 64 ++ lib/pleroma/spc_fixes/users_conversion.txt | 1043 ++++++++++++++++++++++++++++ 2 files changed, 1107 insertions(+) create mode 100644 lib/pleroma/spc_fixes/spc_fixes.ex create mode 100644 lib/pleroma/spc_fixes/users_conversion.txt (limited to 'lib') diff --git a/lib/pleroma/spc_fixes/spc_fixes.ex b/lib/pleroma/spc_fixes/spc_fixes.ex new file mode 100644 index 000000000..aa4830b51 --- /dev/null +++ b/lib/pleroma/spc_fixes/spc_fixes.ex @@ -0,0 +1,64 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +alias Pleroma.Repo +alias Pleroma.User +# alias Pleroma.Web.ActivityPub.Transmogrifier +import Ecto.Query + +defmodule Pleroma.SpcFixes do + def upgrade_users do + query = + from(u in User, + where: fragment("? like ?", u.ap_id, "https://shitposter.club/user/%") + ) + + {:ok, file} = File.read("lib/pleroma/spc_fixes/users_conversion.txt") + + mapping = + file + |> String.trim() + |> String.split("\n") + |> Enum.map(fn line -> + line + |> String.split("\t") + end) + |> Enum.reduce(%{}, fn [_id, old_ap_id, new_ap_id], acc -> + Map.put(acc, old_ap_id, String.trim(new_ap_id)) + end) + + # First, refetch all the old users. + _old_users = + query + |> Repo.all() + |> Enum.each(fn user -> + with ap_id when is_binary(ap_id) <- mapping[user.ap_id] do + # This fetches and updates the user. + User.get_or_fetch_by_ap_id(ap_id) + end + end) + + # Now, fix follow relationships. + query = + from(u in User, + where: fragment("? like ?", u.ap_id, "https://shitposter.club/users/%") + ) + + query + |> Repo.all() + |> Enum.each(fn user -> + old_follower_address = User.ap_followers(user) + + query = + from(u in User, + where: ^old_follower_address in u.following, + update: [ + push: [following: ^user.follower_address] + ] + ) + + Repo.update_all(query, []) + end) + end +end diff --git a/lib/pleroma/spc_fixes/users_conversion.txt b/lib/pleroma/spc_fixes/users_conversion.txt new file mode 100644 index 000000000..0d0321e18 --- /dev/null +++ b/lib/pleroma/spc_fixes/users_conversion.txt @@ -0,0 +1,1043 @@ +1 https://shitposter.club/user/1 https://shitposter.club/users/moonman +2 https://shitposter.club/user/2 https://shitposter.club/users/sunman +45 https://shitposter.club/user/45 https://shitposter.club/users/chen +59 https://shitposter.club/user/59 https://shitposter.club/users/mona +63 https://shitposter.club/user/63 https://shitposter.club/users/wdgaster +64 https://shitposter.club/user/64 https://shitposter.club/users/waluigi +65 https://shitposter.club/user/65 https://shitposter.club/users/puke +66 https://shitposter.club/user/66 https://shitposter.club/users/sanstheskeleton +67 https://shitposter.club/user/67 https://shitposter.club/users/venus +68 https://shitposter.club/user/68 https://shitposter.club/users/noyoushutthefuckupdad +70 https://shitposter.club/user/70 https://shitposter.club/users/dualkeyblade +72 https://shitposter.club/user/72 https://shitposter.club/users/hyperbeam +74 https://shitposter.club/user/74 https://shitposter.club/users/chopperdave +75 https://shitposter.club/user/75 https://shitposter.club/users/itachi +78 https://shitposter.club/user/78 https://shitposter.club/users/gyro +80 https://shitposter.club/user/80 https://shitposter.club/users/drli +81 https://shitposter.club/user/81 https://shitposter.club/users/dril +82 https://shitposter.club/user/82 https://shitposter.club/users/bayonetta +83 https://shitposter.club/user/83 https://shitposter.club/users/imrc +91 https://shitposter.club/user/91 https://shitposter.club/users/hobi +95 https://shitposter.club/user/95 https://shitposter.club/users/houndoom +102 https://shitposter.club/user/102 https://shitposter.club/users/fuck +103 https://shitposter.club/user/103 https://shitposter.club/users/mh +114 https://shitposter.club/user/114 https://shitposter.club/users/strider +116 https://shitposter.club/user/116 https://shitposter.club/users/bunny +120 https://shitposter.club/user/120 https://shitposter.club/users/teddie +121 https://shitposter.club/user/121 https://shitposter.club/users/genesis +122 https://shitposter.club/user/122 https://shitposter.club/users/ninten +124 https://shitposter.club/user/124 https://shitposter.club/users/matsucest +125 https://shitposter.club/user/125 https://shitposter.club/users/yuri +126 https://shitposter.club/user/126 https://shitposter.club/users/yang +127 https://shitposter.club/user/127 https://shitposter.club/users/yokaiwatch +128 https://shitposter.club/user/128 https://shitposter.club/users/futo +129 https://shitposter.club/user/129 https://shitposter.club/users/captainfalcon +130 https://shitposter.club/user/130 https://shitposter.club/users/liquid +131 https://shitposter.club/user/131 https://shitposter.club/users/flonne +132 https://shitposter.club/user/132 https://shitposter.club/users/ryoubakura +133 https://shitposter.club/user/133 https://shitposter.club/users/kirisame +134 https://shitposter.club/user/134 https://shitposter.club/users/senyuu +135 https://shitposter.club/user/135 https://shitposter.club/users/protagonist +136 https://shitposter.club/user/136 https://shitposter.club/users/zelos +137 https://shitposter.club/user/137 https://shitposter.club/users/alba +138 https://shitposter.club/user/138 https://shitposter.club/users/yugo +139 https://shitposter.club/user/139 https://shitposter.club/users/vector +141 https://shitposter.club/user/141 https://shitposter.club/users/god +144 https://shitposter.club/user/144 https://shitposter.club/users/yuya +147 https://shitposter.club/user/147 https://shitposter.club/users/blmatsu +148 https://shitposter.club/user/148 https://shitposter.club/users/pain +149 https://shitposter.club/user/149 https://shitposter.club/users/bloodfalcon +150 https://shitposter.club/user/150 https://shitposter.club/users/yuzu +152 https://shitposter.club/user/152 https://shitposter.club/users/hex +153 https://shitposter.club/user/153 https://shitposter.club/users/coolcatlovesyou +154 https://shitposter.club/user/154 https://shitposter.club/users/cat +159 https://shitposter.club/user/159 https://shitposter.club/users/edna +162 https://shitposter.club/user/162 https://shitposter.club/users/uwu +163 https://shitposter.club/user/163 https://shitposter.club/users/onceler +164 https://shitposter.club/user/164 https://shitposter.club/users/swordofdoubt +168 https://shitposter.club/user/168 https://shitposter.club/users/komaeda +170 https://shitposter.club/user/170 https://shitposter.club/users/protoman +176 https://shitposter.club/user/176 https://shitposter.club/users/kiitanda +177 https://shitposter.club/user/177 https://shitposter.club/users/starscream +180 https://shitposter.club/user/180 https://shitposter.club/users/trishuna +183 https://shitposter.club/user/183 https://shitposter.club/users/milk +184 https://shitposter.club/user/184 https://shitposter.club/users/otacon +185 https://shitposter.club/user/185 https://shitposter.club/users/ragna +189 https://shitposter.club/user/189 https://shitposter.club/users/majintensei +193 https://shitposter.club/user/193 https://shitposter.club/users/deadpool +195 https://shitposter.club/user/195 https://shitposter.club/users/ramimalek +199 https://shitposter.club/user/199 https://shitposter.club/users/ritsu +200 https://shitposter.club/user/200 https://shitposter.club/users/alisha +201 https://shitposter.club/user/201 https://shitposter.club/users/naegi +202 https://shitposter.club/user/202 https://shitposter.club/users/shartmeister420 +203 https://shitposter.club/user/203 https://shitposter.club/users/lulz +204 https://shitposter.club/user/204 https://shitposter.club/users/youranonnews +208 https://shitposter.club/user/208 https://shitposter.club/users/haruna +209 https://shitposter.club/user/209 https://shitposter.club/users/bigboss +213 https://shitposter.club/user/213 https://shitposter.club/users/whisper +219 https://shitposter.club/user/219 https://shitposter.club/users/billfromnextdoor +228 https://shitposter.club/user/228 https://shitposter.club/users/cta +229 https://shitposter.club/user/229 https://shitposter.club/users/luketriton +230 https://shitposter.club/user/230 https://shitposter.club/users/striking +238 https://shitposter.club/user/238 https://shitposter.club/users/this +243 https://shitposter.club/user/243 https://shitposter.club/users/greed +244 https://shitposter.club/user/244 https://shitposter.club/users/quicksilver +246 https://shitposter.club/user/246 https://shitposter.club/users/zaveid +249 https://shitposter.club/user/249 https://shitposter.club/users/serena +263 https://shitposter.club/user/263 https://shitposter.club/users/compaq +264 https://shitposter.club/user/264 https://shitposter.club/users/squishy +265 https://shitposter.club/user/265 https://shitposter.club/users/furry +269 https://shitposter.club/user/269 https://shitposter.club/users/mikleo +270 https://shitposter.club/user/270 https://shitposter.club/users/ami +272 https://shitposter.club/user/272 https://shitposter.club/users/ruri +273 https://shitposter.club/user/273 https://shitposter.club/users/descole +292 https://shitposter.club/user/292 https://shitposter.club/users/shun +296 https://shitposter.club/user/296 https://shitposter.club/users/magician +297 https://shitposter.club/user/297 https://shitposter.club/users/pichan +301 https://shitposter.club/user/301 https://shitposter.club/users/scaryh +303 https://shitposter.club/user/303 https://shitposter.club/users/phz +349 https://shitposter.club/user/349 https://shitposter.club/users/star +350 https://shitposter.club/user/350 https://shitposter.club/users/pepe +351 https://shitposter.club/user/351 https://shitposter.club/users/disassemblyline +354 https://shitposter.club/user/354 https://shitposter.club/users/elrac +382 https://shitposter.club/user/382 https://shitposter.club/users/bigdinner +390 https://shitposter.club/user/390 https://shitposter.club/users/choromatsu +391 https://shitposter.club/user/391 https://shitposter.club/users/otasune +396 https://shitposter.club/user/396 https://shitposter.club/users/cavestoryost +415 https://shitposter.club/user/415 https://shitposter.club/users/hazama +453 https://shitposter.club/user/453 https://shitposter.club/users/mgs3 +479 https://shitposter.club/user/479 https://shitposter.club/users/kanarykrusade +486 https://shitposter.club/user/486 https://shitposter.club/users/yitzyy +495 https://shitposter.club/user/495 https://shitposter.club/users/frog +497 https://shitposter.club/user/497 https://shitposter.club/users/marik +498 https://shitposter.club/user/498 https://shitposter.club/users/cookboy +505 https://shitposter.club/user/505 https://shitposter.club/users/damnalex +511 https://shitposter.club/user/511 https://shitposter.club/users/asbellhant +512 https://shitposter.club/user/512 https://shitposter.club/users/hitler +515 https://shitposter.club/user/515 https://shitposter.club/users/zeloswilder +516 https://shitposter.club/user/516 https://shitposter.club/users/makotokikuchi +518 https://shitposter.club/user/518 https://shitposter.club/users/kaito +519 https://shitposter.club/user/519 https://shitposter.club/users/bluto +520 https://shitposter.club/user/520 https://shitposter.club/users/akuma +521 https://shitposter.club/user/521 https://shitposter.club/users/blythe +522 https://shitposter.club/user/522 https://shitposter.club/users/heavensfeel +523 https://shitposter.club/user/523 https://shitposter.club/users/sirscatters +524 https://shitposter.club/user/524 https://shitposter.club/users/gakupo +526 https://shitposter.club/user/526 https://shitposter.club/users/anntagonist +527 https://shitposter.club/user/527 https://shitposter.club/users/misscatling +529 https://shitposter.club/user/529 https://shitposter.club/users/misscatlin +532 https://shitposter.club/user/532 https://shitposter.club/users/rjohnlennon +533 https://shitposter.club/user/533 https://shitposter.club/users/randhask +535 https://shitposter.club/user/535 https://shitposter.club/users/zemichi +537 https://shitposter.club/user/537 https://shitposter.club/users/carol +539 https://shitposter.club/user/539 https://shitposter.club/users/catmeme +540 https://shitposter.club/user/540 https://shitposter.club/users/spikespiegel +542 https://shitposter.club/user/542 https://shitposter.club/users/marvinthemartian +545 https://shitposter.club/user/545 https://shitposter.club/users/androlphegax +547 https://shitposter.club/user/547 https://shitposter.club/users/atlfalconsfan +549 https://shitposter.club/user/549 https://shitposter.club/users/shaxpeer +550 https://shitposter.club/user/550 https://shitposter.club/users/toddkincannon +556 https://shitposter.club/user/556 https://shitposter.club/users/divider +557 https://shitposter.club/user/557 https://shitposter.club/users/rayogundead +558 https://shitposter.club/user/558 https://shitposter.club/users/breadgod +561 https://shitposter.club/user/561 https://shitposter.club/users/internetzenmaster +569 https://shitposter.club/user/569 https://shitposter.club/users/izzyjsmom +571 https://shitposter.club/user/571 https://shitposter.club/users/spb +573 https://shitposter.club/user/573 https://shitposter.club/users/necrofantasia +574 https://shitposter.club/user/574 https://shitposter.club/users/cvlztn +575 https://shitposter.club/user/575 https://shitposter.club/users/herbiemarcuse +577 https://shitposter.club/user/577 https://shitposter.club/users/simarilian +578 https://shitposter.club/user/578 https://shitposter.club/users/shingo +580 https://shitposter.club/user/580 https://shitposter.club/users/applebees +582 https://shitposter.club/user/582 https://shitposter.club/users/heechul +583 https://shitposter.club/user/583 https://shitposter.club/users/rin +584 https://shitposter.club/user/584 https://shitposter.club/users/killua +585 https://shitposter.club/user/585 https://shitposter.club/users/seamus +586 https://shitposter.club/user/586 https://shitposter.club/users/momoisatsuki +588 https://shitposter.club/user/588 https://shitposter.club/users/bs +589 https://shitposter.club/user/589 https://shitposter.club/users/nya +595 https://shitposter.club/user/595 https://shitposter.club/users/elfpietrok +598 https://shitposter.club/user/598 https://shitposter.club/users/cyc0 +600 https://shitposter.club/user/600 https://shitposter.club/users/9riest +601 https://shitposter.club/user/601 https://shitposter.club/users/bella +602 https://shitposter.club/user/602 https://shitposter.club/users/hopestillflies +604 https://shitposter.club/user/604 https://shitposter.club/users/mark +605 https://shitposter.club/user/605 https://shitposter.club/users/crappycoco +607 https://shitposter.club/user/607 https://shitposter.club/users/meme +609 https://shitposter.club/user/609 https://shitposter.club/users/raylan +610 https://shitposter.club/user/610 https://shitposter.club/users/berry +611 https://shitposter.club/user/611 https://shitposter.club/users/noobius +621 https://shitposter.club/user/621 https://shitposter.club/users/lit +622 https://shitposter.club/user/622 https://shitposter.club/users/thedominionofplumass +633 https://shitposter.club/user/633 https://shitposter.club/users/amish +640 https://shitposter.club/user/640 https://shitposter.club/users/yaoi +657 https://shitposter.club/user/657 https://shitposter.club/users/ayano +661 https://shitposter.club/user/661 https://shitposter.club/users/velvethammer +665 https://shitposter.club/user/665 https://shitposter.club/users/yushe +666 https://shitposter.club/user/666 https://shitposter.club/users/rw +684 https://shitposter.club/user/684 https://shitposter.club/users/justplainbill +685 https://shitposter.club/user/685 https://shitposter.club/users/bree +687 https://shitposter.club/user/687 https://shitposter.club/users/dinahlord +693 https://shitposter.club/user/693 https://shitposter.club/users/luna +694 https://shitposter.club/user/694 https://shitposter.club/users/winterjaeger +695 https://shitposter.club/user/695 https://shitposter.club/users/winterjaeger7 +696 https://shitposter.club/user/696 https://shitposter.club/users/vall +697 https://shitposter.club/user/697 https://shitposter.club/users/nsa +699 https://shitposter.club/user/699 https://shitposter.club/users/haolink +700 https://shitposter.club/user/700 https://shitposter.club/users/mrsaturday +711 https://shitposter.club/user/711 https://shitposter.club/users/ob +728 https://shitposter.club/user/728 https://shitposter.club/users/djormil +734 https://shitposter.club/user/734 https://shitposter.club/users/twittercoe +735 https://shitposter.club/user/735 https://shitposter.club/users/twitterceo +748 https://shitposter.club/user/748 https://shitposter.club/users/joeprich +751 https://shitposter.club/user/751 https://shitposter.club/users/cheeto +755 https://shitposter.club/user/755 https://shitposter.club/users/jojo +757 https://shitposter.club/user/757 https://shitposter.club/users/onet +759 https://shitposter.club/user/759 https://shitposter.club/users/hiredmind +769 https://shitposter.club/user/769 https://shitposter.club/users/bonzibuddy +771 https://shitposter.club/user/771 https://shitposter.club/users/six6six +772 https://shitposter.club/user/772 https://shitposter.club/users/grantweets2 +779 https://shitposter.club/user/779 https://shitposter.club/users/marcavis +783 https://shitposter.club/user/783 https://shitposter.club/users/wintergirl93 +785 https://shitposter.club/user/785 https://shitposter.club/users/moonmanmobile +795 https://shitposter.club/user/795 https://shitposter.club/users/oz +796 https://shitposter.club/user/796 https://shitposter.club/users/rei +797 https://shitposter.club/user/797 https://shitposter.club/users/luciela +798 https://shitposter.club/user/798 https://shitposter.club/users/nightray +799 https://shitposter.club/user/799 https://shitposter.club/users/sorey +800 https://shitposter.club/user/800 https://shitposter.club/users/jack +802 https://shitposter.club/user/802 https://shitposter.club/users/natsu +804 https://shitposter.club/user/804 https://shitposter.club/users/yuuya +805 https://shitposter.club/user/805 https://shitposter.club/users/leo +817 https://shitposter.club/user/817 https://shitposter.club/users/rottenleaf +831 https://shitposter.club/user/831 https://shitposter.club/users/aqua +832 https://shitposter.club/user/832 https://shitposter.club/users/jihadistjoe +833 https://shitposter.club/user/833 https://shitposter.club/users/comradegg +835 https://shitposter.club/user/835 https://shitposter.club/users/bossgod +836 https://shitposter.club/user/836 https://shitposter.club/users/realdonaldtrump +859 https://shitposter.club/user/859 https://shitposter.club/users/marufoi +862 https://shitposter.club/user/862 https://shitposter.club/users/buffdad +978 https://shitposter.club/user/978 https://shitposter.club/users/nonameko +979 https://shitposter.club/user/979 https://shitposter.club/users/ira +988 https://shitposter.club/user/988 https://shitposter.club/users/adrint +1001 https://shitposter.club/user/1001 https://shitposter.club/users/fajfus +1018 https://shitposter.club/user/1018 https://shitposter.club/users/jon +1019 https://shitposter.club/user/1019 https://shitposter.club/users/levo +1020 https://shitposter.club/user/1020 https://shitposter.club/users/bhm +1023 https://shitposter.club/user/1023 https://shitposter.club/users/librarian +1025 https://shitposter.club/user/1025 https://shitposter.club/users/conanedogawa +1027 https://shitposter.club/user/1027 https://shitposter.club/users/gentlefemdom +1029 https://shitposter.club/user/1029 https://shitposter.club/users/hentie +1030 https://shitposter.club/user/1030 https://shitposter.club/users/notaskeleton +1038 https://shitposter.club/user/1038 https://shitposter.club/users/succ +1061 https://shitposter.club/user/1061 https://shitposter.club/users/applepark +1110 https://shitposter.club/user/1110 https://shitposter.club/users/caraway +1115 https://shitposter.club/user/1115 https://shitposter.club/users/jump +1118 https://shitposter.club/user/1118 https://shitposter.club/users/test222 +1120 https://shitposter.club/user/1120 https://shitposter.club/users/lu +1127 https://shitposter.club/user/1127 https://shitposter.club/users/riocat5 +1130 https://shitposter.club/user/1130 https://shitposter.club/users/lovelive +1137 https://shitposter.club/user/1137 https://shitposter.club/users/johnsonmcfonson +1159 https://shitposter.club/user/1159 https://shitposter.club/users/j +1179 https://shitposter.club/user/1179 https://shitposter.club/users/kumatora +1180 https://shitposter.club/user/1180 https://shitposter.club/users/komasan +1181 https://shitposter.club/user/1181 https://shitposter.club/users/8xenon8 +1183 https://shitposter.club/user/1183 https://shitposter.club/users/lemon +1184 https://shitposter.club/user/1184 https://shitposter.club/users/osomatsu +1186 https://shitposter.club/user/1186 https://shitposter.club/users/anomalyuk +1188 https://shitposter.club/user/1188 https://shitposter.club/users/jelly +1195 https://shitposter.club/user/1195 https://shitposter.club/users/ultra +1196 https://shitposter.club/user/1196 https://shitposter.club/users/mrmichael +1198 https://shitposter.club/user/1198 https://shitposter.club/users/neue +1205 https://shitposter.club/user/1205 https://shitposter.club/users/tomasnau +1261 https://shitposter.club/user/1261 https://shitposter.club/users/aljam +1279 https://shitposter.club/user/1279 https://shitposter.club/users/pigeonburger +1315 https://shitposter.club/user/1315 https://shitposter.club/users/itsstillrealtomedamnit +1366 https://shitposter.club/user/1366 https://shitposter.club/users/pewdiepie +1608 https://shitposter.club/user/1608 https://shitposter.club/users/serrarreaver +1613 https://shitposter.club/user/1613 https://shitposter.club/users/furrystoat +1629 https://shitposter.club/user/1629 https://shitposter.club/users/lordkraftdinner +1670 https://shitposter.club/user/1670 https://shitposter.club/users/idiotska +1736 https://shitposter.club/user/1736 https://shitposter.club/users/rabit3a +1946 https://shitposter.club/user/1946 https://shitposter.club/users/tikiloungemahu +1977 https://shitposter.club/user/1977 https://shitposter.club/users/arashinarukami +2035 https://shitposter.club/user/2035 https://shitposter.club/users/spedru +2088 https://shitposter.club/user/2088 https://shitposter.club/users/idol +2175 https://shitposter.club/user/2175 https://shitposter.club/users/olmitch +2227 https://shitposter.club/user/2227 https://shitposter.club/users/dune +2322 https://shitposter.club/user/2322 https://shitposter.club/users/biwazimayui +2323 https://shitposter.club/user/2323 https://shitposter.club/users/cawfee +2325 https://shitposter.club/user/2325 https://shitposter.club/users/jimrusell +2329 https://shitposter.club/user/2329 https://shitposter.club/users/illya +2341 https://shitposter.club/user/2341 https://shitposter.club/users/apple +2357 https://shitposter.club/user/2357 https://shitposter.club/users/bear +2358 https://shitposter.club/user/2358 https://shitposter.club/users/goldburggoldenhour +2378 https://shitposter.club/user/2378 https://shitposter.club/users/b1940060 +2380 https://shitposter.club/user/2380 https://shitposter.club/users/garnerh42 +2388 https://shitposter.club/user/2388 https://shitposter.club/users/niceau +2389 https://shitposter.club/user/2389 https://shitposter.club/users/zekeyspaceylizard +2391 https://shitposter.club/user/2391 https://shitposter.club/users/fbi +2400 https://shitposter.club/user/2400 https://shitposter.club/users/miraculousladybug +2413 https://shitposter.club/user/2413 https://shitposter.club/users/maxauri +2450 https://shitposter.club/user/2450 https://shitposter.club/users/camedei456 +2466 https://shitposter.club/user/2466 https://shitposter.club/users/nurgledsatorin +2512 https://shitposter.club/user/2512 https://shitposter.club/users/conspiracy +2539 https://shitposter.club/user/2539 https://shitposter.club/users/dtluna +2542 https://shitposter.club/user/2542 https://shitposter.club/users/analepticalzabo +2573 https://shitposter.club/user/2573 https://shitposter.club/users/irregardlessly +2588 https://shitposter.club/user/2588 https://shitposter.club/users/chalt +2599 https://shitposter.club/user/2599 https://shitposter.club/users/shtposter +2639 https://shitposter.club/user/2639 https://shitposter.club/users/oogy +2647 https://shitposter.club/user/2647 https://shitposter.club/users/salad +2662 https://shitposter.club/user/2662 https://shitposter.club/users/godfather +2663 https://shitposter.club/user/2663 https://shitposter.club/users/good +2664 https://shitposter.club/user/2664 https://shitposter.club/users/mc +2672 https://shitposter.club/user/2672 https://shitposter.club/users/nilbo +2680 https://shitposter.club/user/2680 https://shitposter.club/users/ovrclockd +2687 https://shitposter.club/user/2687 https://shitposter.club/users/politics +2724 https://shitposter.club/user/2724 https://shitposter.club/users/soomeguy +2748 https://shitposter.club/user/2748 https://shitposter.club/users/lghb +2751 https://shitposter.club/user/2751 https://shitposter.club/users/imdarelzslimsha +2794 https://shitposter.club/user/2794 https://shitposter.club/users/robert +2795 https://shitposter.club/user/2795 https://shitposter.club/users/jani +2796 https://shitposter.club/user/2796 https://shitposter.club/users/richard +2797 https://shitposter.club/user/2797 https://shitposter.club/users/warmerbrudi +2798 https://shitposter.club/user/2798 https://shitposter.club/users/thomas +2800 https://shitposter.club/user/2800 https://shitposter.club/users/100days +2801 https://shitposter.club/user/2801 https://shitposter.club/users/christoffel +2814 https://shitposter.club/user/2814 https://shitposter.club/users/cmpunk +2841 https://shitposter.club/user/2841 https://shitposter.club/users/shit +2886 https://shitposter.club/user/2886 https://shitposter.club/users/bdf +2889 https://shitposter.club/user/2889 https://shitposter.club/users/memesbrasileiros +2909 https://shitposter.club/user/2909 https://shitposter.club/users/tiuluhen +2942 https://shitposter.club/user/2942 https://shitposter.club/users/wormhole +2947 https://shitposter.club/user/2947 https://shitposter.club/users/augustus +2954 https://shitposter.club/user/2954 https://shitposter.club/users/vaka +2974 https://shitposter.club/user/2974 https://shitposter.club/users/moonbot +2979 https://shitposter.club/user/2979 https://shitposter.club/users/fakedonaldtrump +3009 https://shitposter.club/user/3009 https://shitposter.club/users/r4 +3032 https://shitposter.club/user/3032 https://shitposter.club/users/delores +3127 https://shitposter.club/user/3127 https://shitposter.club/users/plusreed +3148 https://shitposter.club/user/3148 https://shitposter.club/users/deimos +3151 https://shitposter.club/user/3151 https://shitposter.club/users/memer69 +3162 https://shitposter.club/user/3162 https://shitposter.club/users/tyreese +3163 https://shitposter.club/user/3163 https://shitposter.club/users/glen +3167 https://shitposter.club/user/3167 https://shitposter.club/users/jonny +3171 https://shitposter.club/user/3171 https://shitposter.club/users/chrishansen +3174 https://shitposter.club/user/3174 https://shitposter.club/users/usindianaffairs +3175 https://shitposter.club/user/3175 https://shitposter.club/users/cia +3225 https://shitposter.club/user/3225 https://shitposter.club/users/baconbrain +3274 https://shitposter.club/user/3274 https://shitposter.club/users/jackmcbastard +3310 https://shitposter.club/user/3310 https://shitposter.club/users/lifeprotips +3321 https://shitposter.club/user/3321 https://shitposter.club/users/nerd +3322 https://shitposter.club/user/3322 https://shitposter.club/users/flandre +3324 https://shitposter.club/user/3324 https://shitposter.club/users/kingofmars +3365 https://shitposter.club/user/3365 https://shitposter.club/users/ben +3378 https://shitposter.club/user/3378 https://shitposter.club/users/staffanb +3387 https://shitposter.club/user/3387 https://shitposter.club/users/2321 +3391 https://shitposter.club/user/3391 https://shitposter.club/users/hydris +3393 https://shitposter.club/user/3393 https://shitposter.club/users/elj +3397 https://shitposter.club/user/3397 https://shitposter.club/users/yachise +3400 https://shitposter.club/user/3400 https://shitposter.club/users/robertomangueiragrossa +3408 https://shitposter.club/user/3408 https://shitposter.club/users/danclark +3409 https://shitposter.club/user/3409 https://shitposter.club/users/erm +3441 https://shitposter.club/user/3441 https://shitposter.club/users/govspiders +3466 https://shitposter.club/user/3466 https://shitposter.club/users/malduke +3543 https://shitposter.club/user/3543 https://shitposter.club/users/testslut +3568 https://shitposter.club/user/3568 https://shitposter.club/users/grimjim +3574 https://shitposter.club/user/3574 https://shitposter.club/users/dyingrectifrice +3642 https://shitposter.club/user/3642 https://shitposter.club/users/eyepie +3699 https://shitposter.club/user/3699 https://shitposter.club/users/emiko +3713 https://shitposter.club/user/3713 https://shitposter.club/users/dex +3767 https://shitposter.club/user/3767 https://shitposter.club/users/roi +3770 https://shitposter.club/user/3770 https://shitposter.club/users/jj +3814 https://shitposter.club/user/3814 https://shitposter.club/users/why +3820 https://shitposter.club/user/3820 https://shitposter.club/users/polstar +3854 https://shitposter.club/user/3854 https://shitposter.club/users/metalhead33 +3860 https://shitposter.club/user/3860 https://shitposter.club/users/valkitty +3891 https://shitposter.club/user/3891 https://shitposter.club/users/yata +3894 https://shitposter.club/user/3894 https://shitposter.club/users/oonska +3895 https://shitposter.club/user/3895 https://shitposter.club/users/1iceloops123 +3896 https://shitposter.club/user/3896 https://shitposter.club/users/69 +3897 https://shitposter.club/user/3897 https://shitposter.club/users/bitterandrew2 +3900 https://shitposter.club/user/3900 https://shitposter.club/users/neckbolt +3904 https://shitposter.club/user/3904 https://shitposter.club/users/kommentater +3909 https://shitposter.club/user/3909 https://shitposter.club/users/bae +3911 https://shitposter.club/user/3911 https://shitposter.club/users/eternalblizzard +3913 https://shitposter.club/user/3913 https://shitposter.club/users/trevgauntlet +3915 https://shitposter.club/user/3915 https://shitposter.club/users/vriska +3952 https://shitposter.club/user/3952 https://shitposter.club/users/gethn7 +3953 https://shitposter.club/user/3953 https://shitposter.club/users/mgd +4011 https://shitposter.club/user/4011 https://shitposter.club/users/dirds +4026 https://shitposter.club/user/4026 https://shitposter.club/users/panzervoulait +4027 https://shitposter.club/user/4027 https://shitposter.club/users/clublarsh +4046 https://shitposter.club/user/4046 https://shitposter.club/users/kaz +4047 https://shitposter.club/user/4047 https://shitposter.club/users/failure +4084 https://shitposter.club/user/4084 https://shitposter.club/users/oneiorosgrip +4095 https://shitposter.club/user/4095 https://shitposter.club/users/theraveduck +4106 https://shitposter.club/user/4106 https://shitposter.club/users/gothmatix +4133 https://shitposter.club/user/4133 https://shitposter.club/users/miserablesmileface +4164 https://shitposter.club/user/4164 https://shitposter.club/users/vektg +4166 https://shitposter.club/user/4166 https://shitposter.club/users/spectrum +4179 https://shitposter.club/user/4179 https://shitposter.club/users/powerclam +4186 https://shitposter.club/user/4186 https://shitposter.club/users/madcat +4230 https://shitposter.club/user/4230 https://shitposter.club/users/nbd +4231 https://shitposter.club/user/4231 https://shitposter.club/users/triodug +4350 https://shitposter.club/user/4350 https://shitposter.club/users/dog +4389 https://shitposter.club/user/4389 https://shitposter.club/users/reissdjo +4400 https://shitposter.club/user/4400 https://shitposter.club/users/daeavorn +4401 https://shitposter.club/user/4401 https://shitposter.club/users/yourgrandmother +4414 https://shitposter.club/user/4414 https://shitposter.club/users/harmlessduck +4416 https://shitposter.club/user/4416 https://shitposter.club/users/phoenixarised +4420 https://shitposter.club/user/4420 https://shitposter.club/users/maxmustermann +4423 https://shitposter.club/user/4423 https://shitposter.club/users/tomsequitur +4425 https://shitposter.club/user/4425 https://shitposter.club/users/suityourself +4434 https://shitposter.club/user/4434 https://shitposter.club/users/gibbfm +4436 https://shitposter.club/user/4436 https://shitposter.club/users/pcachu +4440 https://shitposter.club/user/4440 https://shitposter.club/users/misspixie345 +4443 https://shitposter.club/user/4443 https://shitposter.club/users/mosley +4444 https://shitposter.club/user/4444 https://shitposter.club/users/lonewolf031 +4450 https://shitposter.club/user/4450 https://shitposter.club/users/ajr +4451 https://shitposter.club/user/4451 https://shitposter.club/users/reno +4454 https://shitposter.club/user/4454 https://shitposter.club/users/panjoozek +4457 https://shitposter.club/user/4457 https://shitposter.club/users/realpennyfortheguy +4464 https://shitposter.club/user/4464 https://shitposter.club/users/thelogiconlyzone +4467 https://shitposter.club/user/4467 https://shitposter.club/users/craig +4496 https://shitposter.club/user/4496 https://shitposter.club/users/yuiiski +4506 https://shitposter.club/user/4506 https://shitposter.club/users/robot +4556 https://shitposter.club/user/4556 https://shitposter.club/users/boozearmada +4573 https://shitposter.club/user/4573 https://shitposter.club/users/combine +4605 https://shitposter.club/user/4605 https://shitposter.club/users/ultrapageup +4627 https://shitposter.club/user/4627 https://shitposter.club/users/eris +4633 https://shitposter.club/user/4633 https://shitposter.club/users/moethirteen +4636 https://shitposter.club/user/4636 https://shitposter.club/users/quuunno +4644 https://shitposter.club/user/4644 https://shitposter.club/users/moonatdefcon +4657 https://shitposter.club/user/4657 https://shitposter.club/users/lombon +4670 https://shitposter.club/user/4670 https://shitposter.club/users/mojadam +4686 https://shitposter.club/user/4686 https://shitposter.club/users/ghofan +4690 https://shitposter.club/user/4690 https://shitposter.club/users/cameron +4708 https://shitposter.club/user/4708 https://shitposter.club/users/thevortexcoalition +4713 https://shitposter.club/user/4713 https://shitposter.club/users/rosario +4724 https://shitposter.club/user/4724 https://shitposter.club/users/datass +4759 https://shitposter.club/user/4759 https://shitposter.club/users/melancholy +4770 https://shitposter.club/user/4770 https://shitposter.club/users/boris +4773 https://shitposter.club/user/4773 https://shitposter.club/users/2dollaslices +4793 https://shitposter.club/user/4793 https://shitposter.club/users/jesus +4814 https://shitposter.club/user/4814 https://shitposter.club/users/nils +4826 https://shitposter.club/user/4826 https://shitposter.club/users/netkitteh +4887 https://shitposter.club/user/4887 https://shitposter.club/users/birch +4924 https://shitposter.club/user/4924 https://shitposter.club/users/rt +4940 https://shitposter.club/user/4940 https://shitposter.club/users/comradeagle +4943 https://shitposter.club/user/4943 https://shitposter.club/users/luciel +4950 https://shitposter.club/user/4950 https://shitposter.club/users/rob +4952 https://shitposter.club/user/4952 https://shitposter.club/users/eros +4954 https://shitposter.club/user/4954 https://shitposter.club/users/smeagledorf +4962 https://shitposter.club/user/4962 https://shitposter.club/users/zep +4982 https://shitposter.club/user/4982 https://shitposter.club/users/furaffinity +4983 https://shitposter.club/user/4983 https://shitposter.club/users/gay +4988 https://shitposter.club/user/4988 https://shitposter.club/users/leny +5000 https://shitposter.club/user/5000 https://shitposter.club/users/mrmemetic +5002 https://shitposter.club/user/5002 https://shitposter.club/users/peggle +5381 https://shitposter.club/user/5381 https://shitposter.club/users/shpuld +5440 https://shitposter.club/user/5440 https://shitposter.club/users/diana +5461 https://shitposter.club/user/5461 https://shitposter.club/users/karkat +5462 https://shitposter.club/user/5462 https://shitposter.club/users/stagparty +5494 https://shitposter.club/user/5494 https://shitposter.club/users/davestrider +5495 https://shitposter.club/user/5495 https://shitposter.club/users/fursona +5524 https://shitposter.club/user/5524 https://shitposter.club/users/jerry +5618 https://shitposter.club/user/5618 https://shitposter.club/users/moonatwork +5640 https://shitposter.club/user/5640 https://shitposter.club/users/herberthreis +5660 https://shitposter.club/user/5660 https://shitposter.club/users/dg +5681 https://shitposter.club/user/5681 https://shitposter.club/users/wakarimasen +5693 https://shitposter.club/user/5693 https://shitposter.club/users/reposterclacke +5722 https://shitposter.club/user/5722 https://shitposter.club/users/moonoffsite +5774 https://shitposter.club/user/5774 https://shitposter.club/users/figuringshitout +5826 https://shitposter.club/user/5826 https://shitposter.club/users/hckr +5875 https://shitposter.club/user/5875 https://shitposter.club/users/zero +5905 https://shitposter.club/user/5905 https://shitposter.club/users/lawyerfortheguy +5921 https://shitposter.club/user/5921 https://shitposter.club/users/dimeforthedude +5922 https://shitposter.club/user/5922 https://shitposter.club/users/tiffany +5930 https://shitposter.club/user/5930 https://shitposter.club/users/rilut +5936 https://shitposter.club/user/5936 https://shitposter.club/users/rwdigest +5941 https://shitposter.club/user/5941 https://shitposter.club/users/voidexe +6002 https://shitposter.club/user/6002 https://shitposter.club/users/kaldonia +6030 https://shitposter.club/user/6030 https://shitposter.club/users/smokeyhills +6033 https://shitposter.club/user/6033 https://shitposter.club/users/pennyforthegoy +6053 https://shitposter.club/user/6053 https://shitposter.club/users/ninjabuttocks +6057 https://shitposter.club/user/6057 https://shitposter.club/users/mrmattimation +6076 https://shitposter.club/user/6076 https://shitposter.club/users/arachnidsgrip +6086 https://shitposter.club/user/6086 https://shitposter.club/users/bogs +6114 https://shitposter.club/user/6114 https://shitposter.club/users/homph +6143 https://shitposter.club/user/6143 https://shitposter.club/users/brassrod +6144 https://shitposter.club/user/6144 https://shitposter.club/users/abnoxio +6302 https://shitposter.club/user/6302 https://shitposter.club/users/hjkhan +6317 https://shitposter.club/user/6317 https://shitposter.club/users/tasmijn +6378 https://shitposter.club/user/6378 https://shitposter.club/users/cv +6394 https://shitposter.club/user/6394 https://shitposter.club/users/exceem +6531 https://shitposter.club/user/6531 https://shitposter.club/users/thot +6533 https://shitposter.club/user/6533 https://shitposter.club/users/zenburn +6534 https://shitposter.club/user/6534 https://shitposter.club/users/supermoon +6563 https://shitposter.club/user/6563 https://shitposter.club/users/lebronjames75 +6724 https://shitposter.club/user/6724 https://shitposter.club/users/dreya +6838 https://shitposter.club/user/6838 https://shitposter.club/users/blackhole +6840 https://shitposter.club/user/6840 https://shitposter.club/users/elgatoweebee +6908 https://shitposter.club/user/6908 https://shitposter.club/users/panzerklown +6960 https://shitposter.club/user/6960 https://shitposter.club/users/hitlertheanimation +7062 https://shitposter.club/user/7062 https://shitposter.club/users/lm9 +7063 https://shitposter.club/user/7063 https://shitposter.club/users/kbb +7064 https://shitposter.club/user/7064 https://shitposter.club/users/00 +7114 https://shitposter.club/user/7114 https://shitposter.club/users/sw0rn +7197 https://shitposter.club/user/7197 https://shitposter.club/users/skelepun +7204 https://shitposter.club/user/7204 https://shitposter.club/users/segata +7205 https://shitposter.club/user/7205 https://shitposter.club/users/niggerkiller6969 +7251 https://shitposter.club/user/7251 https://shitposter.club/users/kitredgrave +7261 https://shitposter.club/user/7261 https://shitposter.club/users/letters +7292 https://shitposter.club/user/7292 https://shitposter.club/users/goatholeonmy +7295 https://shitposter.club/user/7295 https://shitposter.club/users/varondus +7335 https://shitposter.club/user/7335 https://shitposter.club/users/arsaces +7339 https://shitposter.club/user/7339 https://shitposter.club/users/nixromina +7374 https://shitposter.club/user/7374 https://shitposter.club/users/vladdo +7436 https://shitposter.club/user/7436 https://shitposter.club/users/baery +7463 https://shitposter.club/user/7463 https://shitposter.club/users/bigdikk +7543 https://shitposter.club/user/7543 https://shitposter.club/users/bijorikoraku +7573 https://shitposter.club/user/7573 https://shitposter.club/users/mithras +7602 https://shitposter.club/user/7602 https://shitposter.club/users/timiddimwit +7614 https://shitposter.club/user/7614 https://shitposter.club/users/thricebitten003 +7640 https://shitposter.club/user/7640 https://shitposter.club/users/floopfloop +7664 https://shitposter.club/user/7664 https://shitposter.club/users/otakunopico +7686 https://shitposter.club/user/7686 https://shitposter.club/users/fashygoy +7703 https://shitposter.club/user/7703 https://shitposter.club/users/anonymous +7710 https://shitposter.club/user/7710 https://shitposter.club/users/wewlad +7720 https://shitposter.club/user/7720 https://shitposter.club/users/textophile +7732 https://shitposter.club/user/7732 https://shitposter.club/users/vetforumwars +7748 https://shitposter.club/user/7748 https://shitposter.club/users/chikimonki +7751 https://shitposter.club/user/7751 https://shitposter.club/users/s3krit +7752 https://shitposter.club/user/7752 https://shitposter.club/users/valka +7753 https://shitposter.club/user/7753 https://shitposter.club/users/notksj +7775 https://shitposter.club/user/7775 https://shitposter.club/users/femacampinmate +7777 https://shitposter.club/user/7777 https://shitposter.club/users/redbayp +7809 https://shitposter.club/user/7809 https://shitposter.club/users/wayy +7826 https://shitposter.club/user/7826 https://shitposter.club/users/eliotime3000 +8015 https://shitposter.club/user/8015 https://shitposter.club/users/beingham +8031 https://shitposter.club/user/8031 https://shitposter.club/users/cyberpotato +8058 https://shitposter.club/user/8058 https://shitposter.club/users/efina +8059 https://shitposter.club/user/8059 https://shitposter.club/users/milla +8060 https://shitposter.club/user/8060 https://shitposter.club/users/caden +8061 https://shitposter.club/user/8061 https://shitposter.club/users/tiz +8072 https://shitposter.club/user/8072 https://shitposter.club/users/mikemazzone +8079 https://shitposter.club/user/8079 https://shitposter.club/users/fraudexposer +8081 https://shitposter.club/user/8081 https://shitposter.club/users/redair +8084 https://shitposter.club/user/8084 https://shitposter.club/users/jmd +8093 https://shitposter.club/user/8093 https://shitposter.club/users/linkwood +8094 https://shitposter.club/user/8094 https://shitposter.club/users/stefan +8095 https://shitposter.club/user/8095 https://shitposter.club/users/perionic +8096 https://shitposter.club/user/8096 https://shitposter.club/users/retronet +8157 https://shitposter.club/user/8157 https://shitposter.club/users/culto +8181 https://shitposter.club/user/8181 https://shitposter.club/users/extrange +8194 https://shitposter.club/user/8194 https://shitposter.club/users/daniel197047 +8220 https://shitposter.club/user/8220 https://shitposter.club/users/schnapps +8227 https://shitposter.club/user/8227 https://shitposter.club/users/anonavenger +8256 https://shitposter.club/user/8256 https://shitposter.club/users/mikaela +8261 https://shitposter.club/user/8261 https://shitposter.club/users/loki +8330 https://shitposter.club/user/8330 https://shitposter.club/users/sloan +8337 https://shitposter.club/user/8337 https://shitposter.club/users/thehifman +8363 https://shitposter.club/user/8363 https://shitposter.club/users/threetoast +8410 https://shitposter.club/user/8410 https://shitposter.club/users/daphailwhale +8429 https://shitposter.club/user/8429 https://shitposter.club/users/jakob +8430 https://shitposter.club/user/8430 https://shitposter.club/users/stephenlynx +8433 https://shitposter.club/user/8433 https://shitposter.club/users/ayoholup +8463 https://shitposter.club/user/8463 https://shitposter.club/users/loltemp +8622 https://shitposter.club/user/8622 https://shitposter.club/users/chu +8635 https://shitposter.club/user/8635 https://shitposter.club/users/bilb +8639 https://shitposter.club/user/8639 https://shitposter.club/users/www +8644 https://shitposter.club/user/8644 https://shitposter.club/users/potus +8676 https://shitposter.club/user/8676 https://shitposter.club/users/testuser124578 +8716 https://shitposter.club/user/8716 https://shitposter.club/users/kentnelida +8853 https://shitposter.club/user/8853 https://shitposter.club/users/meff +8876 https://shitposter.club/user/8876 https://shitposter.club/users/liz +8896 https://shitposter.club/user/8896 https://shitposter.club/users/anonjustice +8974 https://shitposter.club/user/8974 https://shitposter.club/users/wintertsar +9052 https://shitposter.club/user/9052 https://shitposter.club/users/nerthos +9056 https://shitposter.club/user/9056 https://shitposter.club/users/mono +9089 https://shitposter.club/user/9089 https://shitposter.club/users/taeateh +9119 https://shitposter.club/user/9119 https://shitposter.club/users/twilly999 +9140 https://shitposter.club/user/9140 https://shitposter.club/users/poorlyreported +9157 https://shitposter.club/user/9157 https://shitposter.club/users/karabiner +9164 https://shitposter.club/user/9164 https://shitposter.club/users/spaceman +9176 https://shitposter.club/user/9176 https://shitposter.club/users/dbrz +9196 https://shitposter.club/user/9196 https://shitposter.club/users/meesa +9203 https://shitposter.club/user/9203 https://shitposter.club/users/tokage +9205 https://shitposter.club/user/9205 https://shitposter.club/users/adolfhitler +9223 https://shitposter.club/user/9223 https://shitposter.club/users/homotopy +9283 https://shitposter.club/user/9283 https://shitposter.club/users/alanman +9294 https://shitposter.club/user/9294 https://shitposter.club/users/posteur +9301 https://shitposter.club/user/9301 https://shitposter.club/users/mchnem +9329 https://shitposter.club/user/9329 https://shitposter.club/users/mm +9347 https://shitposter.club/user/9347 https://shitposter.club/users/caspermag +9348 https://shitposter.club/user/9348 https://shitposter.club/users/weimerica +9396 https://shitposter.club/user/9396 https://shitposter.club/users/fl1nt +9487 https://shitposter.club/user/9487 https://shitposter.club/users/heterowhiteman +9499 https://shitposter.club/user/9499 https://shitposter.club/users/bane +9521 https://shitposter.club/user/9521 https://shitposter.club/users/luke +9522 https://shitposter.club/user/9522 https://shitposter.club/users/friendlysmoker +9563 https://shitposter.club/user/9563 https://shitposter.club/users/momo +9565 https://shitposter.club/user/9565 https://shitposter.club/users/c1tyoffl1nt1 +9567 https://shitposter.club/user/9567 https://shitposter.club/users/takao +9568 https://shitposter.club/user/9568 https://shitposter.club/users/sim +9569 https://shitposter.club/user/9569 https://shitposter.club/users/sakuya +9572 https://shitposter.club/user/9572 https://shitposter.club/users/chiruno +9573 https://shitposter.club/user/9573 https://shitposter.club/users/usercorpse +9574 https://shitposter.club/user/9574 https://shitposter.club/users/yeetniqqa +9585 https://shitposter.club/user/9585 https://shitposter.club/users/subvert +9591 https://shitposter.club/user/9591 https://shitposter.club/users/hardbass2k8 +9620 https://shitposter.club/user/9620 https://shitposter.club/users/secretsquirrel +9654 https://shitposter.club/user/9654 https://shitposter.club/users/spacemandown +9655 https://shitposter.club/user/9655 https://shitposter.club/users/neimzr4luzerz +9664 https://shitposter.club/user/9664 https://shitposter.club/users/moontest +9695 https://shitposter.club/user/9695 https://shitposter.club/users/azurerose +9701 https://shitposter.club/user/9701 https://shitposter.club/users/leroilezard +9776 https://shitposter.club/user/9776 https://shitposter.club/users/awgeezrick +9879 https://shitposter.club/user/9879 https://shitposter.club/users/terezi +9885 https://shitposter.club/user/9885 https://shitposter.club/users/johnhenry +9968 https://shitposter.club/user/9968 https://shitposter.club/users/barf +10098 https://shitposter.club/user/10098 https://shitposter.club/users/mantis +10166 https://shitposter.club/user/10166 https://shitposter.club/users/anon +10260 https://shitposter.club/user/10260 https://shitposter.club/users/sonya +10394 https://shitposter.club/user/10394 https://shitposter.club/users/sarahjeong +10660 https://shitposter.club/user/10660 https://shitposter.club/users/kkitteh +10672 https://shitposter.club/user/10672 https://shitposter.club/users/data +10832 https://shitposter.club/user/10832 https://shitposter.club/users/marin +10963 https://shitposter.club/user/10963 https://shitposter.club/users/anthony +10986 https://shitposter.club/user/10986 https://shitposter.club/users/ashdroid +11068 https://shitposter.club/user/11068 https://shitposter.club/users/yair +11231 https://shitposter.club/user/11231 https://shitposter.club/users/dean +11262 https://shitposter.club/user/11262 https://shitposter.club/users/santiesteban +11401 https://shitposter.club/user/11401 https://shitposter.club/users/hughdarrow +11514 https://shitposter.club/user/11514 https://shitposter.club/users/mil +11604 https://shitposter.club/user/11604 https://shitposter.club/users/anime +11663 https://shitposter.club/user/11663 https://shitposter.club/users/jakk +11747 https://shitposter.club/user/11747 https://shitposter.club/users/buffyfan12 +11865 https://shitposter.club/user/11865 https://shitposter.club/users/thx2037 +11960 https://shitposter.club/user/11960 https://shitposter.club/users/gargron +12000 https://shitposter.club/user/12000 https://shitposter.club/users/chc4 +12046 https://shitposter.club/user/12046 https://shitposter.club/users/sergio +12115 https://shitposter.club/user/12115 https://shitposter.club/users/gooddoge +12235 https://shitposter.club/user/12235 https://shitposter.club/users/moonrise +12367 https://shitposter.club/user/12367 https://shitposter.club/users/0xdeadbabe +12519 https://shitposter.club/user/12519 https://shitposter.club/users/jesusaur +12577 https://shitposter.club/user/12577 https://shitposter.club/users/vpsorg +12693 https://shitposter.club/user/12693 https://shitposter.club/users/gnulibs +12695 https://shitposter.club/user/12695 https://shitposter.club/users/hydra +12699 https://shitposter.club/user/12699 https://shitposter.club/users/thegoldwater +12725 https://shitposter.club/user/12725 https://shitposter.club/users/pox +12820 https://shitposter.club/user/12820 https://shitposter.club/users/charafan +12822 https://shitposter.club/user/12822 https://shitposter.club/users/fly +12826 https://shitposter.club/user/12826 https://shitposter.club/users/jay +13068 https://shitposter.club/user/13068 https://shitposter.club/users/wannabe +13442 https://shitposter.club/user/13442 https://shitposter.club/users/twitter +13476 https://shitposter.club/user/13476 https://shitposter.club/users/huefee +13590 https://shitposter.club/user/13590 https://shitposter.club/users/d3wd +13712 https://shitposter.club/user/13712 https://shitposter.club/users/sacfly +13905 https://shitposter.club/user/13905 https://shitposter.club/users/athrygg +14115 https://shitposter.club/user/14115 https://shitposter.club/users/wolf +14145 https://shitposter.club/user/14145 https://shitposter.club/users/random +14158 https://shitposter.club/user/14158 https://shitposter.club/users/dm +14217 https://shitposter.club/user/14217 https://shitposter.club/users/okux +14533 https://shitposter.club/user/14533 https://shitposter.club/users/zeno +14612 https://shitposter.club/user/14612 https://shitposter.club/users/jk +14638 https://shitposter.club/user/14638 https://shitposter.club/users/grindecologist +14767 https://shitposter.club/user/14767 https://shitposter.club/users/skullum +14903 https://shitposter.club/user/14903 https://shitposter.club/users/tomey +14972 https://shitposter.club/user/14972 https://shitposter.club/users/uramekus +15044 https://shitposter.club/user/15044 https://shitposter.club/users/harlan +15118 https://shitposter.club/user/15118 https://shitposter.club/users/arash +15236 https://shitposter.club/user/15236 https://shitposter.club/users/coreilly +15371 https://shitposter.club/user/15371 https://shitposter.club/users/thisisnotanime +15416 https://shitposter.club/user/15416 https://shitposter.club/users/cg +15439 https://shitposter.club/user/15439 https://shitposter.club/users/wareya +15496 https://shitposter.club/user/15496 https://shitposter.club/users/auraninanettaadriana +15557 https://shitposter.club/user/15557 https://shitposter.club/users/dechi +15575 https://shitposter.club/user/15575 https://shitposter.club/users/vikohmeilaty +15578 https://shitposter.club/user/15578 https://shitposter.club/users/vikohsevmarmila +15581 https://shitposter.club/user/15581 https://shitposter.club/users/vikohalvianti +15587 https://shitposter.club/user/15587 https://shitposter.club/users/patriciamichelletangkangentot +15635 https://shitposter.club/user/15635 https://shitposter.club/users/novichok +16492 https://shitposter.club/user/16492 https://shitposter.club/users/oosh +16752 https://shitposter.club/user/16752 https://shitposter.club/users/floraplus +17083 https://shitposter.club/user/17083 https://shitposter.club/users/popeyethecunt +17319 https://shitposter.club/user/17319 https://shitposter.club/users/dctf +17581 https://shitposter.club/user/17581 https://shitposter.club/users/chriztheanvill +18540 https://shitposter.club/user/18540 https://shitposter.club/users/sabahsyria +18716 https://shitposter.club/user/18716 https://shitposter.club/users/dumbbabby +18855 https://shitposter.club/user/18855 https://shitposter.club/users/derpderpderp +19068 https://shitposter.club/user/19068 https://shitposter.club/users/ster +19095 https://shitposter.club/user/19095 https://shitposter.club/users/cajoh +19124 https://shitposter.club/user/19124 https://shitposter.club/users/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +19257 https://shitposter.club/user/19257 https://shitposter.club/users/friskan +19285 https://shitposter.club/user/19285 https://shitposter.club/users/zeo +19593 https://shitposter.club/user/19593 https://shitposter.club/users/akater +19649 https://shitposter.club/user/19649 https://shitposter.club/users/wololo +20046 https://shitposter.club/user/20046 https://shitposter.club/users/fujimura +20073 https://shitposter.club/user/20073 https://shitposter.club/users/jakethesnake +20267 https://shitposter.club/user/20267 https://shitposter.club/users/moontest2 +20426 https://shitposter.club/user/20426 https://shitposter.club/users/perspicacious01 +20651 https://shitposter.club/user/20651 https://shitposter.club/users/trivia +20686 https://shitposter.club/user/20686 https://shitposter.club/users/yovinnie +20759 https://shitposter.club/user/20759 https://shitposter.club/users/roytam +21026 https://shitposter.club/user/21026 https://shitposter.club/users/shakes31471 +21667 https://shitposter.club/user/21667 https://shitposter.club/users/bdjnk +21787 https://shitposter.club/user/21787 https://shitposter.club/users/cutscenes +21920 https://shitposter.club/user/21920 https://shitposter.club/users/rwdsaboo +21925 https://shitposter.club/user/21925 https://shitposter.club/users/mapomme +21934 https://shitposter.club/user/21934 https://shitposter.club/users/satori +22018 https://shitposter.club/user/22018 https://shitposter.club/users/vertu +22080 https://shitposter.club/user/22080 https://shitposter.club/users/raven +22177 https://shitposter.club/user/22177 https://shitposter.club/users/boa +22179 https://shitposter.club/user/22179 https://shitposter.club/users/tezcat +22230 https://shitposter.club/user/22230 https://shitposter.club/users/alex +22323 https://shitposter.club/user/22323 https://shitposter.club/users/tehsvin +22514 https://shitposter.club/user/22514 https://shitposter.club/users/shitehoney +22564 https://shitposter.club/user/22564 https://shitposter.club/users/becauseimgray +22706 https://shitposter.club/user/22706 https://shitposter.club/users/nimda +22883 https://shitposter.club/user/22883 https://shitposter.club/users/noflashfirm +22917 https://shitposter.club/user/22917 https://shitposter.club/users/silvertube +23288 https://shitposter.club/user/23288 https://shitposter.club/users/monad +23396 https://shitposter.club/user/23396 https://shitposter.club/users/mom +23576 https://shitposter.club/user/23576 https://shitposter.club/users/ntc +23735 https://shitposter.club/user/23735 https://shitposter.club/users/betobear730 +23872 https://shitposter.club/user/23872 https://shitposter.club/users/mackatron +23909 https://shitposter.club/user/23909 https://shitposter.club/users/johnnycumby +24048 https://shitposter.club/user/24048 https://shitposter.club/users/buttballoon +24247 https://shitposter.club/user/24247 https://shitposter.club/users/hoppeoffamychoppa +24370 https://shitposter.club/user/24370 https://shitposter.club/users/superjey +24519 https://shitposter.club/user/24519 https://shitposter.club/users/crufro +24550 https://shitposter.club/user/24550 https://shitposter.club/users/baseddrworm +24794 https://shitposter.club/user/24794 https://shitposter.club/users/marko +24893 https://shitposter.club/user/24893 https://shitposter.club/users/sweetnote +25222 https://shitposter.club/user/25222 https://shitposter.club/users/stiribune +25519 https://shitposter.club/user/25519 https://shitposter.club/users/taco +25726 https://shitposter.club/user/25726 https://shitposter.club/users/morbius +26103 https://shitposter.club/user/26103 https://shitposter.club/users/moonmanatgscon +26486 https://shitposter.club/user/26486 https://shitposter.club/users/lon +26603 https://shitposter.club/user/26603 https://shitposter.club/users/cj +26712 https://shitposter.club/user/26712 https://shitposter.club/users/existentialbro +26830 https://shitposter.club/user/26830 https://shitposter.club/users/weddingtorontolimo +26858 https://shitposter.club/user/26858 https://shitposter.club/users/hoskayne +27459 https://shitposter.club/user/27459 https://shitposter.club/users/dirb +27464 https://shitposter.club/user/27464 https://shitposter.club/users/assalchemy +27628 https://shitposter.club/user/27628 https://shitposter.club/users/walt1999walt +28122 https://shitposter.club/user/28122 https://shitposter.club/users/h8 +28526 https://shitposter.club/user/28526 https://shitposter.club/users/mariano +28601 https://shitposter.club/user/28601 https://shitposter.club/users/robofortune +28795 https://shitposter.club/user/28795 https://shitposter.club/users/falco +28892 https://shitposter.club/user/28892 https://shitposter.club/users/batemanboogers +28985 https://shitposter.club/user/28985 https://shitposter.club/users/pasty +28989 https://shitposter.club/user/28989 https://shitposter.club/users/podrickpaddington +29181 https://shitposter.club/user/29181 https://shitposter.club/users/ganix +29182 https://shitposter.club/user/29182 https://shitposter.club/users/marsprobe +29185 https://shitposter.club/user/29185 https://shitposter.club/users/tealdear +29251 https://shitposter.club/user/29251 https://shitposter.club/users/tico +29686 https://shitposter.club/user/29686 https://shitposter.club/users/pooryorick +29708 https://shitposter.club/user/29708 https://shitposter.club/users/vfp +29825 https://shitposter.club/user/29825 https://shitposter.club/users/camby +29856 https://shitposter.club/user/29856 https://shitposter.club/users/aqours +29857 https://shitposter.club/user/29857 https://shitposter.club/users/gaygrandma +29858 https://shitposter.club/user/29858 https://shitposter.club/users/zarya +29859 https://shitposter.club/user/29859 https://shitposter.club/users/ene +29969 https://shitposter.club/user/29969 https://shitposter.club/users/aw +30066 https://shitposter.club/user/30066 https://shitposter.club/users/oxenfree +30080 https://shitposter.club/user/30080 https://shitposter.club/users/roko +30202 https://shitposter.club/user/30202 https://shitposter.club/users/doingsomeposts +30241 https://shitposter.club/user/30241 https://shitposter.club/users/archaeme +30243 https://shitposter.club/user/30243 https://shitposter.club/users/zenpukku +30293 https://shitposter.club/user/30293 https://shitposter.club/users/styromaniac +30720 https://shitposter.club/user/30720 https://shitposter.club/users/thatbrickster +30748 https://shitposter.club/user/30748 https://shitposter.club/users/ryan +31040 https://shitposter.club/user/31040 https://shitposter.club/users/me +31101 https://shitposter.club/user/31101 https://shitposter.club/users/louiefillet +31132 https://shitposter.club/user/31132 https://shitposter.club/users/ok +31339 https://shitposter.club/user/31339 https://shitposter.club/users/alucard +31353 https://shitposter.club/user/31353 https://shitposter.club/users/spcnepfag +31536 https://shitposter.club/user/31536 https://shitposter.club/users/dmgctrl +31538 https://shitposter.club/user/31538 https://shitposter.club/users/lueyee +31714 https://shitposter.club/user/31714 https://shitposter.club/users/comstock +31832 https://shitposter.club/user/31832 https://shitposter.club/users/anotherwriter +31836 https://shitposter.club/user/31836 https://shitposter.club/users/luminous +31876 https://shitposter.club/user/31876 https://shitposter.club/users/toxic +31892 https://shitposter.club/user/31892 https://shitposter.club/users/soulkisser +31923 https://shitposter.club/user/31923 https://shitposter.club/users/piyush +31959 https://shitposter.club/user/31959 https://shitposter.club/users/lightlysalted +31973 https://shitposter.club/user/31973 https://shitposter.club/users/abr21 +31997 https://shitposter.club/user/31997 https://shitposter.club/users/demo +32079 https://shitposter.club/user/32079 https://shitposter.club/users/totallynotdogjaw +32123 https://shitposter.club/user/32123 https://shitposter.club/users/ctrlcreepbot +32158 https://shitposter.club/user/32158 https://shitposter.club/users/ben666 +32188 https://shitposter.club/user/32188 https://shitposter.club/users/polenstronkest +32201 https://shitposter.club/user/32201 https://shitposter.club/users/filthymcgarbage +32314 https://shitposter.club/user/32314 https://shitposter.club/users/notjeff +32324 https://shitposter.club/user/32324 https://shitposter.club/users/tanteifaust +32326 https://shitposter.club/user/32326 https://shitposter.club/users/vimtingu +32329 https://shitposter.club/user/32329 https://shitposter.club/users/dolus +32343 https://shitposter.club/user/32343 https://shitposter.club/users/sonicdreadzhog +32383 https://shitposter.club/user/32383 https://shitposter.club/users/nignog +32386 https://shitposter.club/user/32386 https://shitposter.club/users/owl +32390 https://shitposter.club/user/32390 https://shitposter.club/users/yoroshiku +32444 https://shitposter.club/user/32444 https://shitposter.club/users/chelzgrimace0 +32460 https://shitposter.club/user/32460 https://shitposter.club/users/mei +32466 https://shitposter.club/user/32466 https://shitposter.club/users/demigodloligagger +32690 https://shitposter.club/user/32690 https://shitposter.club/users/camoceltic +32736 https://shitposter.club/user/32736 https://shitposter.club/users/flamingkazin +33044 https://shitposter.club/user/33044 https://shitposter.club/users/root +33191 https://shitposter.club/user/33191 https://shitposter.club/users/949f45ac +33422 https://shitposter.club/user/33422 https://shitposter.club/users/surge +33683 https://shitposter.club/user/33683 https://shitposter.club/users/dielan +33789 https://shitposter.club/user/33789 https://shitposter.club/users/fickle +34011 https://shitposter.club/user/34011 https://shitposter.club/users/nurnymurse +34442 https://shitposter.club/user/34442 https://shitposter.club/users/ragecage +34659 https://shitposter.club/user/34659 https://shitposter.club/users/fuckinghackers +35102 https://shitposter.club/user/35102 https://shitposter.club/users/robotx +35167 https://shitposter.club/user/35167 https://shitposter.club/users/sojourner +35180 https://shitposter.club/user/35180 https://shitposter.club/users/dogjaw +35198 https://shitposter.club/user/35198 https://shitposter.club/users/radicooloperative +35340 https://shitposter.club/user/35340 https://shitposter.club/users/sn +35402 https://shitposter.club/user/35402 https://shitposter.club/users/demifiend +35510 https://shitposter.club/user/35510 https://shitposter.club/users/tempo +35623 https://shitposter.club/user/35623 https://shitposter.club/users/lphovercraft +35631 https://shitposter.club/user/35631 https://shitposter.club/users/realhitler +35775 https://shitposter.club/user/35775 https://shitposter.club/users/kian +35930 https://shitposter.club/user/35930 https://shitposter.club/users/jjcarter21r +36077 https://shitposter.club/user/36077 https://shitposter.club/users/wehateweebs +36115 https://shitposter.club/user/36115 https://shitposter.club/users/theplaguedr +36172 https://shitposter.club/user/36172 https://shitposter.club/users/surfinbird +36381 https://shitposter.club/user/36381 https://shitposter.club/users/sireebob +36384 https://shitposter.club/user/36384 https://shitposter.club/users/127001 +36717 https://shitposter.club/user/36717 https://shitposter.club/users/justaghost +36821 https://shitposter.club/user/36821 https://shitposter.club/users/shadow +36888 https://shitposter.club/user/36888 https://shitposter.club/users/moe +37046 https://shitposter.club/user/37046 https://shitposter.club/users/moe123 +37300 https://shitposter.club/user/37300 https://shitposter.club/users/lulinvega +37326 https://shitposter.club/user/37326 https://shitposter.club/users/haisenberg +37954 https://shitposter.club/user/37954 https://shitposter.club/users/kg +38017 https://shitposter.club/user/38017 https://shitposter.club/users/yvvu2 +38219 https://shitposter.club/user/38219 https://shitposter.club/users/spooks +38322 https://shitposter.club/user/38322 https://shitposter.club/users/invlpg +38364 https://shitposter.club/user/38364 https://shitposter.club/users/krochpuncher +38382 https://shitposter.club/user/38382 https://shitposter.club/users/artifaxxs +38482 https://shitposter.club/user/38482 https://shitposter.club/users/windclock +38491 https://shitposter.club/user/38491 https://shitposter.club/users/lobster +38618 https://shitposter.club/user/38618 https://shitposter.club/users/birdway +38733 https://shitposter.club/user/38733 https://shitposter.club/users/sulter +38796 https://shitposter.club/user/38796 https://shitposter.club/users/zika +38979 https://shitposter.club/user/38979 https://shitposter.club/users/manghoti +39546 https://shitposter.club/user/39546 https://shitposter.club/users/zlowiec +40673 https://shitposter.club/user/40673 https://shitposter.club/users/aaa +41496 https://shitposter.club/user/41496 https://shitposter.club/users/polywuf +41717 https://shitposter.club/user/41717 https://shitposter.club/users/shirtlords +41735 https://shitposter.club/user/41735 https://shitposter.club/users/vced01tbkrcy +41780 https://shitposter.club/user/41780 https://shitposter.club/users/reggiehathaway +41786 https://shitposter.club/user/41786 https://shitposter.club/users/parisc +41794 https://shitposter.club/user/41794 https://shitposter.club/users/nutjin +41801 https://shitposter.club/user/41801 https://shitposter.club/users/angelus +41836 https://shitposter.club/user/41836 https://shitposter.club/users/big +41985 https://shitposter.club/user/41985 https://shitposter.club/users/wario +42081 https://shitposter.club/user/42081 https://shitposter.club/users/animesniffer +42098 https://shitposter.club/user/42098 https://shitposter.club/users/yappariesaka +42115 https://shitposter.club/user/42115 https://shitposter.club/users/stjude +42120 https://shitposter.club/user/42120 https://shitposter.club/users/gaiusgermanicus +42260 https://shitposter.club/user/42260 https://shitposter.club/users/loveliestamie +42347 https://shitposter.club/user/42347 https://shitposter.club/users/ginz +42354 https://shitposter.club/user/42354 https://shitposter.club/users/antiracist +42363 https://shitposter.club/user/42363 https://shitposter.club/users/matthewmaci +42472 https://shitposter.club/user/42472 https://shitposter.club/users/rubberback +42927 https://shitposter.club/user/42927 https://shitposter.club/users/hatexgroup +42968 https://shitposter.club/user/42968 https://shitposter.club/users/gloriouscarwash +42997 https://shitposter.club/user/42997 https://shitposter.club/users/yayo +43012 https://shitposter.club/user/43012 https://shitposter.club/users/robloxhentie88 +43092 https://shitposter.club/user/43092 https://shitposter.club/users/haspop +43167 https://shitposter.club/user/43167 https://shitposter.club/users/walmartsupremacy +43268 https://shitposter.club/user/43268 https://shitposter.club/users/golpollo +43272 https://shitposter.club/user/43272 https://shitposter.club/users/rrx +43276 https://shitposter.club/user/43276 https://shitposter.club/users/rusty +43336 https://shitposter.club/user/43336 https://shitposter.club/users/caesarcrab +43384 https://shitposter.club/user/43384 https://shitposter.club/users/yap +43440 https://shitposter.club/user/43440 https://shitposter.club/users/triplekmafia +43443 https://shitposter.club/user/43443 https://shitposter.club/users/antonnizhny +43583 https://shitposter.club/user/43583 https://shitposter.club/users/cajon +43744 https://shitposter.club/user/43744 https://shitposter.club/users/dixieconstruct +43764 https://shitposter.club/user/43764 https://shitposter.club/users/pepsicanex +43776 https://shitposter.club/user/43776 https://shitposter.club/users/deraristokraut +43779 https://shitposter.club/user/43779 https://shitposter.club/users/red +43783 https://shitposter.club/user/43783 https://shitposter.club/users/boxiekun +43791 https://shitposter.club/user/43791 https://shitposter.club/users/emilia +43866 https://shitposter.club/user/43866 https://shitposter.club/users/qwerty +44035 https://shitposter.club/user/44035 https://shitposter.club/users/aspirator +44303 https://shitposter.club/user/44303 https://shitposter.club/users/cereal +44541 https://shitposter.club/user/44541 https://shitposter.club/users/animerapist +44666 https://shitposter.club/user/44666 https://shitposter.club/users/za +44681 https://shitposter.club/user/44681 https://shitposter.club/users/suicidal +44751 https://shitposter.club/user/44751 https://shitposter.club/users/illuminatoskeletono +45219 https://shitposter.club/user/45219 https://shitposter.club/users/sierrakilobravo +45312 https://shitposter.club/user/45312 https://shitposter.club/users/thufir +45467 https://shitposter.club/user/45467 https://shitposter.club/users/fermtnzheavy +45873 https://shitposter.club/user/45873 https://shitposter.club/users/jector +46020 https://shitposter.club/user/46020 https://shitposter.club/users/shitlordsupreme +46273 https://shitposter.club/user/46273 https://shitposter.club/users/y88 +46347 https://shitposter.club/user/46347 https://shitposter.club/users/catk111er +46752 https://shitposter.club/user/46752 https://shitposter.club/users/pr333 +46808 https://shitposter.club/user/46808 https://shitposter.club/users/catkittens +47284 https://shitposter.club/user/47284 https://shitposter.club/users/123lareputarana +47359 https://shitposter.club/user/47359 https://shitposter.club/users/traplordegen +47368 https://shitposter.club/user/47368 https://shitposter.club/users/norm +47569 https://shitposter.club/user/47569 https://shitposter.club/users/grass +47770 https://shitposter.club/user/47770 https://shitposter.club/users/realdavidreed +47943 https://shitposter.club/user/47943 https://shitposter.club/users/watch +48103 https://shitposter.club/user/48103 https://shitposter.club/users/bagel +48130 https://shitposter.club/user/48130 https://shitposter.club/users/stochastix +48329 https://shitposter.club/user/48329 https://shitposter.club/users/mewlan +48389 https://shitposter.club/user/48389 https://shitposter.club/users/andilinks +48440 https://shitposter.club/user/48440 https://shitposter.club/users/ao +48495 https://shitposter.club/user/48495 https://shitposter.club/users/futuredogefm +48496 https://shitposter.club/user/48496 https://shitposter.club/users/harold +48611 https://shitposter.club/user/48611 https://shitposter.club/users/hattiecat +48712 https://shitposter.club/user/48712 https://shitposter.club/users/mrmcmayhem +49233 https://shitposter.club/user/49233 https://shitposter.club/users/sushipantsu +49746 https://shitposter.club/user/49746 https://shitposter.club/users/siedge +49752 https://shitposter.club/user/49752 https://shitposter.club/users/honorrollcc +49829 https://shitposter.club/user/49829 https://shitposter.club/users/denza252 +49856 https://shitposter.club/user/49856 https://shitposter.club/users/web +49863 https://shitposter.club/user/49863 https://shitposter.club/users/donglord +49933 https://shitposter.club/user/49933 https://shitposter.club/users/chargedaffaires +50092 https://shitposter.club/user/50092 https://shitposter.club/users/joy +50183 https://shitposter.club/user/50183 https://shitposter.club/users/gravityfailsme +50216 https://shitposter.club/user/50216 https://shitposter.club/users/installgen2 +50331 https://shitposter.club/user/50331 https://shitposter.club/users/robbie +50332 https://shitposter.club/user/50332 https://shitposter.club/users/xirus11 +50339 https://shitposter.club/user/50339 https://shitposter.club/users/glendo +50340 https://shitposter.club/user/50340 https://shitposter.club/users/minus2 +51031 https://shitposter.club/user/51031 https://shitposter.club/users/kekmeister +51033 https://shitposter.club/user/51033 https://shitposter.club/users/akitosenshi +51037 https://shitposter.club/user/51037 https://shitposter.club/users/ganjabots +51337 https://shitposter.club/user/51337 https://shitposter.club/users/sadanimeman +51693 https://shitposter.club/user/51693 https://shitposter.club/users/iamfubar +51699 https://shitposter.club/user/51699 https://shitposter.club/users/honk +51732 https://shitposter.club/user/51732 https://shitposter.club/users/trash +51733 https://shitposter.club/user/51733 https://shitposter.club/users/normsndy +51827 https://shitposter.club/user/51827 https://shitposter.club/users/zeppy +52063 https://shitposter.club/user/52063 https://shitposter.club/users/anomaleon +52122 https://shitposter.club/user/52122 https://shitposter.club/users/huh +52172 https://shitposter.club/user/52172 https://shitposter.club/users/erzaknightfr +52276 https://shitposter.club/user/52276 https://shitposter.club/users/antasmeme +52457 https://shitposter.club/user/52457 https://shitposter.club/users/girl +52906 https://shitposter.club/user/52906 https://shitposter.club/users/threaddotrun +53474 https://shitposter.club/user/53474 https://shitposter.club/users/starz0r +53716 https://shitposter.club/user/53716 https://shitposter.club/users/yoyo +53967 https://shitposter.club/user/53967 https://shitposter.club/users/sebas +54382 https://shitposter.club/user/54382 https://shitposter.club/users/thndr +54503 https://shitposter.club/user/54503 https://shitposter.club/users/xenonman +54700 https://shitposter.club/user/54700 https://shitposter.club/users/crewofweebs +54831 https://shitposter.club/user/54831 https://shitposter.club/users/gutfuckllc +54859 https://shitposter.club/user/54859 https://shitposter.club/users/zeptat +54860 https://shitposter.club/user/54860 https://shitposter.club/users/zeptar +54876 https://shitposter.club/user/54876 https://shitposter.club/users/vf +55355 https://shitposter.club/user/55355 https://shitposter.club/users/arilando +55371 https://shitposter.club/user/55371 https://shitposter.club/users/deanberryministry +55616 https://shitposter.club/user/55616 https://shitposter.club/users/fatma +55866 https://shitposter.club/user/55866 https://shitposter.club/users/rice +56213 https://shitposter.club/user/56213 https://shitposter.club/users/atdirb +56789 https://shitposter.club/user/56789 https://shitposter.club/users/elshibes +57573 https://shitposter.club/user/57573 https://shitposter.club/users/cyberfreedom +57627 https://shitposter.club/user/57627 https://shitposter.club/users/asdf +57700 https://shitposter.club/user/57700 https://shitposter.club/users/awl +57958 https://shitposter.club/user/57958 https://shitposter.club/users/shitlord +58248 https://shitposter.club/user/58248 https://shitposter.club/users/johnnyneptune +58348 https://shitposter.club/user/58348 https://shitposter.club/users/littleman +58755 https://shitposter.club/user/58755 https://shitposter.club/users/loke +58802 https://shitposter.club/user/58802 https://shitposter.club/users/mysize69 +58859 https://shitposter.club/user/58859 https://shitposter.club/users/crablettes +58862 https://shitposter.club/user/58862 https://shitposter.club/users/fleshlightme +59088 https://shitposter.club/user/59088 https://shitposter.club/users/2rude +59930 https://shitposter.club/user/59930 https://shitposter.club/users/gonk +59955 https://shitposter.club/user/59955 https://shitposter.club/users/squidink +60066 https://shitposter.club/user/60066 https://shitposter.club/users/llxyo +60185 https://shitposter.club/user/60185 https://shitposter.club/users/scrawls +60544 https://shitposter.club/user/60544 https://shitposter.club/users/sigma +60790 https://shitposter.club/user/60790 https://shitposter.club/users/therealkayne +60794 https://shitposter.club/user/60794 https://shitposter.club/users/nanex +61124 https://shitposter.club/user/61124 https://shitposter.club/users/ejs +61307 https://shitposter.club/user/61307 https://shitposter.club/users/skeet +61456 https://shitposter.club/user/61456 https://shitposter.club/users/agentorange +61646 https://shitposter.club/user/61646 https://shitposter.club/users/toad +61652 https://shitposter.club/user/61652 https://shitposter.club/users/kuuomena +61767 https://shitposter.club/user/61767 https://shitposter.club/users/coolboymew +61770 https://shitposter.club/user/61770 https://shitposter.club/users/4fl0wn +61782 https://shitposter.club/user/61782 https://shitposter.club/users/borzoi +61839 https://shitposter.club/user/61839 https://shitposter.club/users/chazcon +61923 https://shitposter.club/user/61923 https://shitposter.club/users/tharsis +62000 https://shitposter.club/user/62000 https://shitposter.club/users/redboooook +62134 https://shitposter.club/user/62134 https://shitposter.club/users/aven +62194 https://shitposter.club/user/62194 https://shitposter.club/users/haydenjones +64293 https://shitposter.club/user/64293 https://shitposter.club/users/yoongi +64357 https://shitposter.club/user/64357 https://shitposter.club/users/cow2001 +64605 https://shitposter.club/user/64605 https://shitposter.club/users/tidux +64672 https://shitposter.club/user/64672 https://shitposter.club/users/d4klutz +64681 https://shitposter.club/user/64681 https://shitposter.club/users/nucleasthete +64727 https://shitposter.club/user/64727 https://shitposter.club/users/hurley +64748 https://shitposter.club/user/64748 https://shitposter.club/users/drgutfuckllc +64759 https://shitposter.club/user/64759 https://shitposter.club/users/0x68756973 +64882 https://shitposter.club/user/64882 https://shitposter.club/users/night +65019 https://shitposter.club/user/65019 https://shitposter.club/users/macgirvin +65080 https://shitposter.club/user/65080 https://shitposter.club/users/jeremiah +65083 https://shitposter.club/user/65083 https://shitposter.club/users/lawlcat +65087 https://shitposter.club/user/65087 https://shitposter.club/users/trippinkitty420 +65330 https://shitposter.club/user/65330 https://shitposter.club/users/leibwiht +65350 https://shitposter.club/user/65350 https://shitposter.club/users/nagiept +65532 https://shitposter.club/user/65532 https://shitposter.club/users/corzetan +66560 https://shitposter.club/user/66560 https://shitposter.club/users/footkage +66562 https://shitposter.club/user/66562 https://shitposter.club/users/pdpineapple +66709 https://shitposter.club/user/66709 https://shitposter.club/users/nigger +66897 https://shitposter.club/user/66897 https://shitposter.club/users/djzep +67554 https://shitposter.club/user/67554 https://shitposter.club/users/linuxsocist +68329 https://shitposter.club/user/68329 https://shitposter.club/users/fris +68895 https://shitposter.club/user/68895 https://shitposter.club/users/nobodyeverywhere +69714 https://shitposter.club/user/69714 https://shitposter.club/users/3000iq +69906 https://shitposter.club/user/69906 https://shitposter.club/users/trustandsaftey +70237 https://shitposter.club/user/70237 https://shitposter.club/users/pd +70249 https://shitposter.club/user/70249 https://shitposter.club/users/markm447 +70798 https://shitposter.club/user/70798 https://shitposter.club/users/sleepfight3r +71463 https://shitposter.club/user/71463 https://shitposter.club/users/jello +71487 https://shitposter.club/user/71487 https://shitposter.club/users/canonicalbrud +71511 https://shitposter.club/user/71511 https://shitposter.club/users/tahu +71605 https://shitposter.club/user/71605 https://shitposter.club/users/noisepollution +71642 https://shitposter.club/user/71642 https://shitposter.club/users/nekolover +72807 https://shitposter.club/user/72807 https://shitposter.club/users/hiddengabber +72824 https://shitposter.club/user/72824 https://shitposter.club/users/oversaturation +72842 https://shitposter.club/user/72842 https://shitposter.club/users/uh +72864 https://shitposter.club/user/72864 https://shitposter.club/users/iajasom +73079 https://shitposter.club/user/73079 https://shitposter.club/users/thunder +73228 https://shitposter.club/user/73228 https://shitposter.club/users/makin +73386 https://shitposter.club/user/73386 https://shitposter.club/users/nevergofullweev +73642 https://shitposter.club/user/73642 https://shitposter.club/users/uxredbyte +73920 https://shitposter.club/user/73920 https://shitposter.club/users/billadoid +73987 https://shitposter.club/user/73987 https://shitposter.club/users/tuturu +74440 https://shitposter.club/user/74440 https://shitposter.club/users/pennyfortheguy +74699 https://shitposter.club/user/74699 https://shitposter.club/users/pururu +74818 https://shitposter.club/user/74818 https://shitposter.club/users/mikem +74940 https://shitposter.club/user/74940 https://shitposter.club/users/undeadmockingbird +75019 https://shitposter.club/user/75019 https://shitposter.club/users/spot +75051 https://shitposter.club/user/75051 https://shitposter.club/users/veruune +75147 https://shitposter.club/user/75147 https://shitposter.club/users/millysoose +75390 https://shitposter.club/user/75390 https://shitposter.club/users/onyxxgoodmann +75534 https://shitposter.club/user/75534 https://shitposter.club/users/voxumbra +75823 https://shitposter.club/user/75823 https://shitposter.club/users/kvazarig +75893 https://shitposter.club/user/75893 https://shitposter.club/users/cobodo +76045 https://shitposter.club/user/76045 https://shitposter.club/users/enkidoodle +76090 https://shitposter.club/user/76090 https://shitposter.club/users/judasdervierte +76309 https://shitposter.club/user/76309 https://shitposter.club/users/itsale +76353 https://shitposter.club/user/76353 https://shitposter.club/users/drump +76858 https://shitposter.club/user/76858 https://shitposter.club/users/gudgames +76890 https://shitposter.club/user/76890 https://shitposter.club/users/yomama +77082 https://shitposter.club/user/77082 https://shitposter.club/users/nowayinhell +78315 https://shitposter.club/user/78315 https://shitposter.club/users/zp +78737 https://shitposter.club/user/78737 https://shitposter.club/users/fr +79635 https://shitposter.club/user/79635 https://shitposter.club/users/fl0wnspc +81502 https://shitposter.club/user/81502 https://shitposter.club/users/tester2 -- cgit v1.2.3 From bd6c12592e9ae9548172c605d00650d4d6b734dc Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 18 Jan 2019 19:35:47 +0100 Subject: Add migration to fix spc users. --- lib/pleroma/spc_fixes/spc_fixes.ex | 1 - 1 file changed, 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/spc_fixes/spc_fixes.ex b/lib/pleroma/spc_fixes/spc_fixes.ex index aa4830b51..e937d5871 100644 --- a/lib/pleroma/spc_fixes/spc_fixes.ex +++ b/lib/pleroma/spc_fixes/spc_fixes.ex @@ -4,7 +4,6 @@ alias Pleroma.Repo alias Pleroma.User -# alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Query defmodule Pleroma.SpcFixes do -- cgit v1.2.3 From f161a92cb1abd981e37367fcd5d315ac14510d12 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 23 Jan 2019 18:37:25 +0300 Subject: [#534] Initial implementation of unreachable federation targets retirement. --- lib/pleroma/instances.ex | 12 +++++ lib/pleroma/instances/instance.ex | 77 ++++++++++++++++++++++++++++ lib/pleroma/web/activity_pub/activity_pub.ex | 39 ++++++++++---- lib/pleroma/web/salmon/salmon.ex | 13 ++++- lib/pleroma/web/websub/websub.ex | 10 +++- 5 files changed, 137 insertions(+), 14 deletions(-) create mode 100644 lib/pleroma/instances.ex create mode 100644 lib/pleroma/instances/instance.ex (limited to 'lib') diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex new file mode 100644 index 000000000..25b739520 --- /dev/null +++ b/lib/pleroma/instances.ex @@ -0,0 +1,12 @@ +defmodule Pleroma.Instances do + @moduledoc "Instances context." + + @adapter Pleroma.Instances.Instance + + defdelegate reachable?(url), to: @adapter + defdelegate set_reachable(url), to: @adapter + defdelegate set_unreachable(url, unreachable_since \\ nil), to: @adapter + + def reachability_time_threshold, + do: NaiveDateTime.add(NaiveDateTime.utc_now(), -30 * 24 * 3600, :second) +end diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex new file mode 100644 index 000000000..4507ef6d5 --- /dev/null +++ b/lib/pleroma/instances/instance.ex @@ -0,0 +1,77 @@ +defmodule Pleroma.Instances.Instance do + @moduledoc "Instance." + + alias Pleroma.Instances + alias Pleroma.Instances.Instance + + use Ecto.Schema + + import Ecto.{Query, Changeset} + + alias Pleroma.Repo + + schema "instances" do + field(:host, :string) + field(:unreachable_since, :naive_datetime) + field(:reachability_checked_at, :naive_datetime) + + timestamps() + end + + def update_changeset(struct, params \\ %{}) do + struct + |> cast(params, [:host, :unreachable_since, :reachability_checked_at]) + |> unique_constraint(:host) + end + + def reachable?(url) do + !Repo.one( + from(i in Instance, + where: + i.host == ^host(url) and i.unreachable_since <= ^Instances.reachability_time_threshold(), + select: true + ) + ) + end + + def set_reachable(url) do + Repo.update_all( + from(i in Instance, where: i.host == ^host(url)), + set: [ + unreachable_since: nil, + reachability_checked_at: DateTime.utc_now() + ] + ) + end + + def set_unreachable(url, unreachable_since \\ nil) do + unreachable_since = unreachable_since || DateTime.utc_now() + host = host(url) + existing_record = Repo.get_by(Instance, %{host: host}) + + changes = %{ + unreachable_since: unreachable_since, + reachability_checked_at: NaiveDateTime.utc_now() + } + + if existing_record do + update_changes = + if existing_record.unreachable_since && + NaiveDateTime.compare(existing_record.unreachable_since, unreachable_since) != :gt, + do: Map.delete(changes, :unreachable_since), + else: changes + + {:ok, _instance} = Repo.update(update_changeset(existing_record, update_changes)) + else + {:ok, _instance} = Repo.insert(update_changeset(%Instance{}, Map.put(changes, :host, host))) + end + end + + defp host(url_or_host) do + if url_or_host =~ ~r/^http/i do + URI.parse(url_or_host).host + else + url_or_host + end + end +end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 82fffd324..b14c91c18 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.ActivityPub do - alias Pleroma.{Activity, Repo, Object, Upload, User, Notification} + alias Pleroma.{Activity, Repo, Object, Upload, User, Notification, Instances} alias Pleroma.Web.ActivityPub.{Transmogrifier, MRF} alias Pleroma.Web.WebFinger alias Pleroma.Web.Federator @@ -721,7 +721,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end) end - def publish_one(%{inbox: inbox, json: json, actor: actor, id: id}) do + def publish_one(%{inbox: inbox} = activity) do + if Instances.reachable?(inbox) do + do_publish_one(activity) + else + {:error, :noop} + end + end + + defp do_publish_one(%{inbox: inbox, json: json, actor: actor, id: id}) do Logger.info("Federating #{id} to #{inbox}") host = URI.parse(inbox).host @@ -734,15 +742,24 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do digest: digest }) - @httpoison.post( - inbox, - json, - [ - {"Content-Type", "application/activity+json"}, - {"signature", signature}, - {"digest", digest} - ] - ) + with {:ok, _} <- + result = + @httpoison.post( + inbox, + json, + [ + {"Content-Type", "application/activity+json"}, + {"signature", signature}, + {"digest", digest} + ] + ) do + Instances.set_reachable(inbox) + result + else + e -> + Instances.set_unreachable(inbox) + e + end end # TODO: diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index e41657da1..0a0b91433 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.Salmon do @httpoison Application.get_env(:pleroma, :httpoison) use Bitwise + alias Pleroma.Instances alias Pleroma.Web.XML alias Pleroma.Web.OStatus.ActivityRepresenter alias Pleroma.User @@ -167,15 +168,23 @@ defmodule Pleroma.Web.Salmon do do: send_to_user(salmon, feed, poster) defp send_to_user(url, feed, poster) when is_binary(url) do - with {:ok, %{status: code}} <- + with {:reachable, true} <- {:reachable, Instances.reachable?(url)}, + {:ok, %{status: code}} <- poster.( url, feed, [{"Content-Type", "application/magic-envelope+xml"}] ) do + Instances.set_reachable(url) Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) else - e -> Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) + {:reachable, false} -> + Logger.debug(fn -> "Pushing Salmon to #{url} skipped as marked unreachable)" end) + :noop + + e -> + Instances.set_unreachable(url) + Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) end end diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index 7ca62c83b..a6bbaef37 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.Websub do alias Ecto.Changeset alias Pleroma.Repo + alias Pleroma.Instances alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription} alias Pleroma.Web.OStatus.FeedRepresenter alias Pleroma.Web.{XML, Endpoint, OStatus} @@ -267,7 +268,8 @@ defmodule Pleroma.Web.Websub do signature = sign(secret || "", xml) Logger.info(fn -> "Pushing #{topic} to #{callback}" end) - with {:ok, %{status: code}} <- + with {:reachable, true} <- {:reachable, Instances.reachable?(callback)}, + {:ok, %{status: code}} <- @httpoison.post( callback, xml, @@ -276,10 +278,16 @@ defmodule Pleroma.Web.Websub do {"X-Hub-Signature", "sha1=#{signature}"} ] ) do + Instances.set_reachable(callback) Logger.info(fn -> "Pushed to #{callback}, code #{code}" end) {:ok, code} else + {:reachable, false} -> + Logger.debug(fn -> "Pushing to #{callback} skipped as marked unreachable)" end) + {:error, :noop} + e -> + Instances.set_unreachable(callback) Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(e)}" end) {:error, e} end -- cgit v1.2.3 From 20b54366ee916677b3865acf36baeeb062dd550b Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 24 Jan 2019 11:54:52 +0300 Subject: [#534] Federation publish requests status control (enforced 2xx response code check). --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- lib/pleroma/web/salmon/salmon.ex | 2 +- lib/pleroma/web/websub/websub.ex | 2 +- 3 files changed, 3 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 b14c91c18..10155ff5a 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -742,7 +742,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do digest: digest }) - with {:ok, _} <- + with {:ok, %{status: code}} when code in 200..299 <- result = @httpoison.post( inbox, diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 0a0b91433..0423ccee0 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -169,7 +169,7 @@ defmodule Pleroma.Web.Salmon do defp send_to_user(url, feed, poster) when is_binary(url) do with {:reachable, true} <- {:reachable, Instances.reachable?(url)}, - {:ok, %{status: code}} <- + {:ok, %{status: code}} when code in 200..299 <- poster.( url, feed, diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index a6bbaef37..9ceb5fbf7 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -269,7 +269,7 @@ defmodule Pleroma.Web.Websub do Logger.info(fn -> "Pushing #{topic} to #{callback}" end) with {:reachable, true} <- {:reachable, Instances.reachable?(callback)}, - {:ok, %{status: code}} <- + {:ok, %{status: code}} when code in 200..299 <- @httpoison.post( callback, xml, -- cgit v1.2.3 From 8654a591f08c7d8d5d61f075906f0c6907e877bb Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 24 Jan 2019 17:37:23 +0300 Subject: [#534] Updating external instances reachability on incoming federation. --- lib/pleroma/instances/instance.ex | 14 +++++++++++--- lib/pleroma/reverse_proxy.ex | 3 ++- lib/pleroma/web/activity_pub/activity_pub.ex | 3 ++- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 7 +++++++ lib/pleroma/web/controller_helper.ex | 5 +++++ lib/pleroma/web/ostatus/ostatus_controller.ex | 7 +++++++ lib/pleroma/web/salmon/salmon.ex | 5 ++++- lib/pleroma/web/websub/websub.ex | 3 ++- lib/pleroma/web/websub/websub_controller.ex | 9 +++++++++ 9 files changed, 49 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 4507ef6d5..fe52331a3 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -24,7 +24,7 @@ defmodule Pleroma.Instances.Instance do |> unique_constraint(:host) end - def reachable?(url) do + def reachable?(url) when is_binary(url) do !Repo.one( from(i in Instance, where: @@ -34,7 +34,9 @@ defmodule Pleroma.Instances.Instance do ) end - def set_reachable(url) do + def reachable?(_), do: true + + def set_reachable(url) when is_binary(url) do Repo.update_all( from(i in Instance, where: i.host == ^host(url)), set: [ @@ -44,7 +46,11 @@ defmodule Pleroma.Instances.Instance do ) end - def set_unreachable(url, unreachable_since \\ nil) do + def set_reachable(_), do: {0, :noop} + + def set_unreachable(url, unreachable_since \\ nil) + + def set_unreachable(url, unreachable_since) when is_binary(url) do unreachable_since = unreachable_since || DateTime.utc_now() host = host(url) existing_record = Repo.get_by(Instance, %{host: host}) @@ -67,6 +73,8 @@ defmodule Pleroma.Instances.Instance do end end + def set_unreachable(_, _), do: {0, :noop} + defp host(url_or_host) do if url_or_host =~ ~r/^http/i do URI.parse(url_or_host).host diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex index a25b5ea4e..d8b17212b 100644 --- a/lib/pleroma/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy.ex @@ -3,7 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ReverseProxy do - @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-unmodified-since if-none-match if-range range) + @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-unmodified-since) ++ + ~w(if-none-match if-range range referer) @resp_cache_headers ~w(etag date last-modified cache-control) @keep_resp_headers @resp_cache_headers ++ ~w(content-type content-disposition content-encoding content-range accept-ranges vary) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 10155ff5a..44c295d65 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -750,7 +750,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do [ {"Content-Type", "application/activity+json"}, {"signature", signature}, - {"digest", digest} + {"digest", digest}, + {"referer", Pleroma.Web.Endpoint.url()} ] ) do Instances.set_reachable(inbox) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 7eed0a600..dc353dff0 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do use Pleroma.Web, :controller + alias Pleroma.{Activity, User, Object} alias Pleroma.Web.ActivityPub.{ObjectView, UserView} alias Pleroma.Web.ActivityPub.ActivityPub @@ -18,6 +19,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do plug(Pleroma.Web.FederatingPlug when action in [:inbox, :relay]) plug(:relay_active? when action in [:relay]) + plug(:set_requester_reachable when action in [:inbox]) def relay_active?(conn, _) do if Keyword.get(Application.get_env(:pleroma, :instance), :allow_relay) do @@ -289,4 +291,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do |> put_status(500) |> json("error") end + + defp set_requester_reachable(conn, _) do + Pleroma.Web.ControllerHelper.set_requester_reachable(conn) + conn + end end diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 14e3d19fd..13cf1877f 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -10,4 +10,9 @@ defmodule Pleroma.Web.ControllerHelper do |> put_status(status) |> json(json) end + + def set_requester_reachable(conn) do + with [referer] <- get_req_header(conn, "referer"), + do: Pleroma.Instances.set_reachable(referer) + end end diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index ce022bcc1..a89f16b94 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -15,6 +15,8 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.Web.ActivityPub.ActivityPub plug(Pleroma.Web.FederatingPlug when action in [:salmon_incoming]) + plug(:set_requester_reachable when action in [:salmon_incoming]) + action_fallback(:errors) def feed_redirect(conn, %{"nickname" => nickname}) do @@ -201,4 +203,9 @@ defmodule Pleroma.Web.OStatus.OStatusController do |> put_status(500) |> text("Something went wrong") end + + defp set_requester_reachable(conn, _) do + Pleroma.Web.ControllerHelper.set_requester_reachable(conn) + conn + end end diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 0423ccee0..e4d2d9517 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -173,7 +173,10 @@ defmodule Pleroma.Web.Salmon do poster.( url, feed, - [{"Content-Type", "application/magic-envelope+xml"}] + [ + {"Content-Type", "application/magic-envelope+xml"}, + {"referer", Pleroma.Web.Endpoint.url()} + ] ) do Instances.set_reachable(url) Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index 9ceb5fbf7..ac8903913 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -275,7 +275,8 @@ defmodule Pleroma.Web.Websub do xml, [ {"Content-Type", "application/atom+xml"}, - {"X-Hub-Signature", "sha1=#{signature}"} + {"X-Hub-Signature", "sha1=#{signature}"}, + {"referer", Pleroma.Web.Endpoint.url()} ] ) do Instances.set_reachable(callback) diff --git a/lib/pleroma/web/websub/websub_controller.ex b/lib/pleroma/web/websub/websub_controller.ex index e58f144e5..02fe075d7 100644 --- a/lib/pleroma/web/websub/websub_controller.ex +++ b/lib/pleroma/web/websub/websub_controller.ex @@ -4,9 +4,11 @@ defmodule Pleroma.Web.Websub.WebsubController do use Pleroma.Web, :controller + alias Pleroma.{Repo, User} alias Pleroma.Web.{Websub, Federator} alias Pleroma.Web.Websub.WebsubClientSubscription + require Logger plug( @@ -18,6 +20,8 @@ defmodule Pleroma.Web.Websub.WebsubController do ] ) + plug(:set_requester_reachable when action in [:websub_incoming]) + def websub_subscription_request(conn, %{"nickname" => nickname} = params) do user = User.get_cached_by_nickname(nickname) @@ -92,4 +96,9 @@ defmodule Pleroma.Web.Websub.WebsubController do |> send_resp(500, "Error") end end + + defp set_requester_reachable(conn, _) do + Pleroma.Web.ControllerHelper.set_requester_reachable(conn) + conn + end end -- cgit v1.2.3 From 3e9399ec0b498c0c9783ccb0fea9f682c8b9d0ca Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 24 Jan 2019 19:15:23 +0300 Subject: [#534] Optimized bulk publish ops to filter on reachability early. `Instance` refactoring. --- lib/pleroma/instances.ex | 9 +++++ lib/pleroma/instances/instance.ex | 57 +++++++++++++++++++--------- lib/pleroma/web/activity_pub/activity_pub.ex | 5 ++- lib/pleroma/web/salmon/salmon.ex | 8 +++- lib/pleroma/web/websub/websub.ex | 18 +++++---- 5 files changed, 69 insertions(+), 28 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex index 25b739520..6d445d6b3 100644 --- a/lib/pleroma/instances.ex +++ b/lib/pleroma/instances.ex @@ -3,10 +3,19 @@ defmodule Pleroma.Instances do @adapter Pleroma.Instances.Instance + defdelegate filter_reachable(urls), to: @adapter defdelegate reachable?(url), to: @adapter defdelegate set_reachable(url), to: @adapter defdelegate set_unreachable(url, unreachable_since \\ nil), to: @adapter def reachability_time_threshold, do: NaiveDateTime.add(NaiveDateTime.utc_now(), -30 * 24 * 3600, :second) + + def host(url_or_host) when is_binary(url_or_host) do + if url_or_host =~ ~r/^http/i do + URI.parse(url_or_host).host + else + url_or_host + end + end end diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index fe52331a3..a17c8dab1 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -18,12 +18,35 @@ defmodule Pleroma.Instances.Instance do timestamps() end - def update_changeset(struct, params \\ %{}) do + defdelegate host(url), to: Instances + + def changeset(struct, params \\ %{}) do struct |> cast(params, [:host, :unreachable_since, :reachability_checked_at]) + |> validate_required([:host]) |> unique_constraint(:host) end + def filter_reachable([]), do: [] + + def filter_reachable(urls) when is_list(urls) do + hosts = + urls + |> Enum.map(&(&1 && host(&1))) + |> Enum.filter(&(to_string(&1) != "")) + + unreachable_hosts = + Repo.all( + from(i in Instance, + where: + i.host in ^hosts and i.unreachable_since <= ^Instances.reachability_time_threshold(), + select: i.host + ) + ) + + Enum.filter(urls, &(&1 && host(&1) not in unreachable_hosts)) + end + def reachable?(url) when is_binary(url) do !Repo.one( from(i in Instance, @@ -37,13 +60,13 @@ defmodule Pleroma.Instances.Instance do def reachable?(_), do: true def set_reachable(url) when is_binary(url) do - Repo.update_all( - from(i in Instance, where: i.host == ^host(url)), - set: [ - unreachable_since: nil, - reachability_checked_at: DateTime.utc_now() - ] - ) + with host <- host(url), + %Instance{} = existing_record <- Repo.get_by(Instance, %{host: host}) do + {:ok, _instance} = + existing_record + |> changeset(%{unreachable_since: nil, reachability_checked_at: DateTime.utc_now()}) + |> Repo.update() + end end def set_reachable(_), do: {0, :noop} @@ -67,19 +90,17 @@ defmodule Pleroma.Instances.Instance do do: Map.delete(changes, :unreachable_since), else: changes - {:ok, _instance} = Repo.update(update_changeset(existing_record, update_changes)) + {:ok, _instance} = + existing_record + |> changeset(update_changes) + |> Repo.update() else - {:ok, _instance} = Repo.insert(update_changeset(%Instance{}, Map.put(changes, :host, host))) + {:ok, _instance} = + %Instance{} + |> changeset(Map.put(changes, :host, host)) + |> Repo.insert() end end def set_unreachable(_, _), do: {0, :noop} - - defp host(url_or_host) do - if url_or_host =~ ~r/^http/i do - URI.parse(url_or_host).host - else - url_or_host - end - end end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 44c295d65..4b34334a0 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -689,7 +689,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end def publish(actor, activity) do - followers = + remote_followers = if actor.follower_address in activity.recipients do {:ok, followers} = User.get_followers(actor) followers |> Enum.filter(&(!&1.local)) @@ -700,13 +700,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do public = is_public?(activity) remote_inboxes = - (Pleroma.Web.Salmon.remote_users(activity) ++ followers) + (Pleroma.Web.Salmon.remote_users(activity) ++ remote_followers) |> Enum.filter(fn user -> User.ap_enabled?(user) end) |> Enum.map(fn %{info: %{source_data: data}} -> (is_map(data["endpoints"]) && Map.get(data["endpoints"], "sharedInbox")) || data["inbox"] end) |> Enum.uniq() |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) + |> Instances.filter_reachable() {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) json = Jason.encode!(data) diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index e4d2d9517..848131d52 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -221,7 +221,13 @@ defmodule Pleroma.Web.Salmon do {:ok, private, _} = keys_from_pem(keys) {:ok, feed} = encode(private, feed) - remote_users(activity) + remote_users = remote_users(activity) + + salmon_urls = Enum.map(remote_users, & &1.info.salmon) + reachable_salmon_urls = Instances.filter_reachable(salmon_urls) + + remote_users + |> Enum.filter(&(&1.info.salmon in reachable_salmon_urls)) |> Enum.each(fn remote_user -> Task.start(fn -> Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index ac8903913..bb4442591 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -54,7 +54,12 @@ defmodule Pleroma.Web.Websub do ] def publish(topic, user, %{data: %{"type" => type}} = activity) when type in @supported_activities do - # TODO: Only send to still valid subscriptions. + response = + user + |> FeedRepresenter.to_simple_form([activity], [user]) + |> :xmerl.export_simple(:xmerl_xml) + |> to_string + query = from( sub in WebsubServerSubscription, @@ -64,13 +69,12 @@ defmodule Pleroma.Web.Websub do subscriptions = Repo.all(query) - Enum.each(subscriptions, fn sub -> - response = - user - |> FeedRepresenter.to_simple_form([activity], [user]) - |> :xmerl.export_simple(:xmerl_xml) - |> to_string + callbacks = Enum.map(subscriptions, & &1.callback) + reachable_callbacks = Instances.filter_reachable(callbacks) + subscriptions + |> Enum.filter(&(&1.callback in reachable_callbacks)) + |> Enum.each(fn sub -> data = %{ xml: response, topic: topic, -- cgit v1.2.3 From 656ed7c84a5d8e423999457f66d8259ec8aa9a44 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 25 Jan 2019 15:10:21 +0300 Subject: [#534] Configurable outgoing federation reachability timeout. --- lib/pleroma/instances.ex | 16 ++++++++++++++-- lib/pleroma/instances/instance.ex | 6 ++++-- 2 files changed, 18 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex index 6d445d6b3..0b08f0eb8 100644 --- a/lib/pleroma/instances.ex +++ b/lib/pleroma/instances.ex @@ -8,8 +8,20 @@ defmodule Pleroma.Instances do defdelegate set_reachable(url), to: @adapter defdelegate set_unreachable(url, unreachable_since \\ nil), to: @adapter - def reachability_time_threshold, - do: NaiveDateTime.add(NaiveDateTime.utc_now(), -30 * 24 * 3600, :second) + def reachability_datetime_threshold do + federation_reachability_timeout_days = + Pleroma.Config.get(:instance)[:federation_reachability_timeout_days] || 90 + + if federation_reachability_timeout_days > 0 do + NaiveDateTime.add( + NaiveDateTime.utc_now(), + -federation_reachability_timeout_days * 24 * 3600, + :second + ) + else + ~N[0000-01-01 00:00:00] + end + end def host(url_or_host) when is_binary(url_or_host) do if url_or_host =~ ~r/^http/i do diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index a17c8dab1..60e8d0e21 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -39,7 +39,8 @@ defmodule Pleroma.Instances.Instance do Repo.all( from(i in Instance, where: - i.host in ^hosts and i.unreachable_since <= ^Instances.reachability_time_threshold(), + i.host in ^hosts and + i.unreachable_since <= ^Instances.reachability_datetime_threshold(), select: i.host ) ) @@ -51,7 +52,8 @@ defmodule Pleroma.Instances.Instance do !Repo.one( from(i in Instance, where: - i.host == ^host(url) and i.unreachable_since <= ^Instances.reachability_time_threshold(), + i.host == ^host(url) and + i.unreachable_since <= ^Instances.reachability_datetime_threshold(), select: true ) ) -- cgit v1.2.3 From 465adedb7cc457303278444d0f56960f87fde1e9 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 25 Jan 2019 18:29:43 +0300 Subject: [#534] Websub fix: made SQL use UTC time zone when comparing with `valid_until` (instead of postgresql-server default time zone). --- lib/pleroma/web/websub/websub.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index bb4442591..cbb7a5ac7 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -64,7 +64,7 @@ defmodule Pleroma.Web.Websub do from( sub in WebsubServerSubscription, where: sub.topic == ^topic and sub.state == "active", - where: fragment("? > NOW()", sub.valid_until) + where: fragment("? > (NOW() at time zone 'UTC')", sub.valid_until) ) subscriptions = Repo.all(query) -- cgit v1.2.3 From aa8ddfdbe2303375e3f019faca30a620bfc58fc7 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 25 Jan 2019 17:55:24 +0100 Subject: SPC fixes: Fix activities. --- lib/pleroma/spc_fixes/spc_fixes.ex | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/spc_fixes/spc_fixes.ex b/lib/pleroma/spc_fixes/spc_fixes.ex index e937d5871..41cf56fdd 100644 --- a/lib/pleroma/spc_fixes/spc_fixes.ex +++ b/lib/pleroma/spc_fixes/spc_fixes.ex @@ -4,6 +4,7 @@ alias Pleroma.Repo alias Pleroma.User +alias Pleroma.Activity import Ecto.Query defmodule Pleroma.SpcFixes do @@ -15,6 +16,7 @@ defmodule Pleroma.SpcFixes do {:ok, file} = File.read("lib/pleroma/spc_fixes/users_conversion.txt") + # Mapping of old ap_id to new ap_id and vice reversa mapping = file |> String.trim() @@ -24,7 +26,9 @@ defmodule Pleroma.SpcFixes do |> String.split("\t") end) |> Enum.reduce(%{}, fn [_id, old_ap_id, new_ap_id], acc -> - Map.put(acc, old_ap_id, String.trim(new_ap_id)) + acc + |> Map.put(String.trim(old_ap_id), String.trim(new_ap_id)) + |> Map.put(String.trim(new_ap_id), String.trim(old_ap_id)) end) # First, refetch all the old users. @@ -49,6 +53,7 @@ defmodule Pleroma.SpcFixes do |> Enum.each(fn user -> old_follower_address = User.ap_followers(user) + # Fix users query = from(u in User, where: ^old_follower_address in u.following, @@ -58,6 +63,30 @@ defmodule Pleroma.SpcFixes do ) Repo.update_all(query, []) + + # Fix activities + query = + from(a in Activity, + where: fragment("?->>'actor' = ?", a.data, ^mapping[user.ap_id]), + update: [ + set: [ + data: + fragment( + "jsonb_set(jsonb_set(?, '{actor}', ?), '{to}', (?->'to')::jsonb || ?)", + a.data, + ^user.ap_id, + a.data, + ^[user.follower_address] + ), + actor: ^user.ap_id + ], + push: [ + recipients: ^user.follower_address + ] + ] + ) + + Repo.update_all(query, []) end) end end -- cgit v1.2.3 From 060d280e64c201d3f8bec5615cc3b02cd460d3e1 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 25 Jan 2019 20:38:13 +0300 Subject: [#534] Made Salmon.send_to_user calls be handled through Federator.enqueue. --- lib/pleroma/web/federator/federator.ex | 6 +++++- lib/pleroma/web/salmon/salmon.ex | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index f3a0e18b8..46f7a4973 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.Federator do use GenServer alias Pleroma.User alias Pleroma.Activity - alias Pleroma.Web.{WebFinger, Websub} + alias Pleroma.Web.{WebFinger, Websub, Salmon} alias Pleroma.Web.Federator.RetryQueue alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Relay @@ -124,6 +124,10 @@ defmodule Pleroma.Web.Federator do end end + def handle(:publish_single_salmon, {user_or_url, feed, poster}) do + Salmon.send_to_user(user_or_url, feed, poster) + end + def handle(:publish_single_ap, params) do case ActivityPub.publish_one(params) do {:ok, _} -> diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 848131d52..17ca7a6e8 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -164,10 +164,10 @@ defmodule Pleroma.Web.Salmon do # push an activity to remote accounts # - defp send_to_user(%{info: %{salmon: salmon}}, feed, poster), + def send_to_user(%{info: %{salmon: salmon}}, feed, poster), do: send_to_user(salmon, feed, poster) - defp send_to_user(url, feed, poster) when is_binary(url) do + def send_to_user(url, feed, poster) when is_binary(url) do with {:reachable, true} <- {:reachable, Instances.reachable?(url)}, {:ok, %{status: code}} when code in 200..299 <- poster.( @@ -180,6 +180,7 @@ defmodule Pleroma.Web.Salmon do ) do Instances.set_reachable(url) Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) + :ok else {:reachable, false} -> Logger.debug(fn -> "Pushing Salmon to #{url} skipped as marked unreachable)" end) @@ -188,10 +189,11 @@ defmodule Pleroma.Web.Salmon do e -> Instances.set_unreachable(url) Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) + :error end end - defp send_to_user(_, _, _), do: nil + def send_to_user(_, _, _), do: :noop @supported_activities [ "Create", @@ -229,10 +231,8 @@ defmodule Pleroma.Web.Salmon do remote_users |> Enum.filter(&(&1.info.salmon in reachable_salmon_urls)) |> Enum.each(fn remote_user -> - Task.start(fn -> - Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) - send_to_user(remote_user, feed, poster) - end) + Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) + Pleroma.Web.Federator.enqueue(:publish_single_salmon, {remote_user, feed, poster}) end) end end -- cgit v1.2.3 From 2e277dd4ad96ef6f7ce3267eb05d0b84668df772 Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 27 Jan 2019 21:03:15 +0100 Subject: Fix objects. --- lib/pleroma/spc_fixes/spc_fixes.ex | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'lib') diff --git a/lib/pleroma/spc_fixes/spc_fixes.ex b/lib/pleroma/spc_fixes/spc_fixes.ex index 41cf56fdd..86bbb7f6f 100644 --- a/lib/pleroma/spc_fixes/spc_fixes.ex +++ b/lib/pleroma/spc_fixes/spc_fixes.ex @@ -5,6 +5,7 @@ alias Pleroma.Repo alias Pleroma.User alias Pleroma.Activity +alias Pleroma.Object import Ecto.Query defmodule Pleroma.SpcFixes do @@ -87,6 +88,26 @@ defmodule Pleroma.SpcFixes do ) Repo.update_all(query, []) + + # Fix objects + query = + from(a in Object, + where: fragment("?->>'actor' = ?", a.data, ^mapping[user.ap_id]), + update: [ + set: [ + data: + fragment( + "jsonb_set(jsonb_set(?, '{actor}', ?), '{to}', (?->'to')::jsonb || ?)", + a.data, + ^user.ap_id, + a.data, + ^[user.follower_address] + ) + ] + ] + ) + + Repo.update_all(query, []) end) end end -- cgit v1.2.3 From 872241d7c50a5c92f7867b89672ca451b40d44da Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 19 Sep 2018 02:10:54 +0200 Subject: /web/index template: Modify for glitch-soc --- .../templates/mastodon_api/mastodon/index.html.eex | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/templates/mastodon_api/mastodon/index.html.eex b/lib/pleroma/web/templates/mastodon_api/mastodon/index.html.eex index 0862412ea..9a725e420 100644 --- a/lib/pleroma/web/templates/mastodon_api/mastodon/index.html.eex +++ b/lib/pleroma/web/templates/mastodon_api/mastodon/index.html.eex @@ -1,23 +1,28 @@ + + <%= Application.get_env(:pleroma, :instance)[:name] %> - - - - + + - - - - - - + + + + - + + + + + + + +
-- cgit v1.2.3 From cda1470e02100bfcdcbd128fd08d0af64dca7271 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 19 Sep 2018 02:04:56 +0200 Subject: [MastoAPI][GlitchAPI] Add bookmarks --- lib/pleroma/user.ex | 17 +++++++++++ .../web/mastodon_api/mastodon_api_controller.ex | 35 ++++++++++++++++++++++ lib/pleroma/web/mastodon_api/views/status_view.ex | 3 ++ lib/pleroma/web/router.ex | 3 ++ 4 files changed, 58 insertions(+) (limited to 'lib') diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 1468cc133..aced21ece 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -39,6 +39,7 @@ defmodule Pleroma.User do field(:follower_address, :string) field(:search_rank, :float, virtual: true) field(:tags, {:array, :string}, default: []) + field(:bookmarks, {:array, :string}, default: []) field(:last_refreshed_at, :naive_datetime) has_many(:notifications, Notification) embeds_one(:info, Pleroma.User.Info) @@ -1156,6 +1157,22 @@ defmodule Pleroma.User do updated_user end + def bookmark(%User{} = user, status_id) do + bookmarks = Enum.uniq(user.bookmarks ++ [status_id]) + update_bookmarks(user, bookmarks) + end + + def unbookmark(%User{} = user, status_id) do + bookmarks = Enum.uniq(user.bookmarks -- [status_id]) + update_bookmarks(user, bookmarks) + end + + def update_bookmarks(%User{} = user, bookmarks) do + user + |> change(%{bookmarks: bookmarks}) + |> update_and_set_cache + end + defp normalize_tags(tags) do [tags] |> List.flatten() diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index a366a149f..2530b51d2 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -424,6 +424,28 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do end end + def bookmark_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do + with %Activity{} = activity <- Repo.get(Activity, id), + %User{} = user <- User.get_by_nickname(user.nickname), + true <- ActivityPub.visible_for_user?(activity, user), + {:ok, user} <- User.bookmark(user, activity.data["object"]["id"]) do + conn + |> put_view(StatusView) + |> try_render("status.json", %{activity: activity, for: user, as: :activity}) + end + end + + def unbookmark_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do + with %Activity{} = activity <- Repo.get(Activity, id), + %User{} = user <- User.get_by_nickname(user.nickname), + true <- ActivityPub.visible_for_user?(activity, user), + {:ok, user} <- User.unbookmark(user, activity.data["object"]["id"]) do + conn + |> put_view(StatusView) + |> try_render("status.json", %{activity: activity, for: user, as: :activity}) + end + end + def notifications(%{assigns: %{user: user}} = conn, params) do notifications = Notification.for_user(user, params) @@ -859,6 +881,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do |> render("index.json", %{activities: activities, for: user, as: :activity}) end + def bookmarks(%{assigns: %{user: user}} = conn, _) do + user = Repo.get(User, user.id) + + activities = + user.bookmarks + |> Enum.map(fn id -> Activity.get_create_by_object_ap_id(id) end) + |> Enum.reverse() + + conn + |> put_view(StatusView) + |> render("index.json", %{activities: activities, for: user, as: :activity}) + end + def get_lists(%{assigns: %{user: user}} = conn, opts) do lists = Pleroma.List.for_user(user, opts) res = ListView.render("lists.json", lists: lists) diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 0f2679444..0b6a9d9fc 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -88,6 +88,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do favourites_count: 0, reblogged: false, favourited: false, + bookmarked: false, muted: false, pinned: pinned?(activity, user), sensitive: false, @@ -122,6 +123,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || []) favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || []) + bookmarked = opts[:for] && object["id"] in opts[:for].bookmarks attachment_data = object["attachment"] || [] attachments = render_many(attachment_data, StatusView, "attachment.json", as: :attachment) @@ -155,6 +157,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do favourites_count: like_count, reblogged: present?(repeated), favourited: present?(favorited), + bookmarked: present?(bookmarked), muted: false, pinned: pinned?(activity, user), sensitive: sensitive, diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 31f739738..3d0227582 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -185,6 +185,7 @@ defmodule Pleroma.Web.Router do get("/timelines/direct", MastodonAPIController, :dm_timeline) get("/favourites", MastodonAPIController, :favourites) + get("/bookmarks", MastodonAPIController, :bookmarks) post("/statuses", MastodonAPIController, :post_status) delete("/statuses/:id", MastodonAPIController, :delete_status) @@ -195,6 +196,8 @@ defmodule Pleroma.Web.Router do post("/statuses/:id/unfavourite", MastodonAPIController, :unfav_status) post("/statuses/:id/pin", MastodonAPIController, :pin_status) post("/statuses/:id/unpin", MastodonAPIController, :unpin_status) + post("/statuses/:id/bookmark", MastodonAPIController, :bookmark_status) + post("/statuses/:id/unbookmark", MastodonAPIController, :unbookmark_status) post("/notifications/clear", MastodonAPIController, :clear_notifications) post("/notifications/dismiss", MastodonAPIController, :dismiss_notification) -- cgit v1.2.3 From 9560abea102b8cd4927c9350bbd0a1a2f1800ea6 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 28 Jan 2019 11:03:52 +0300 Subject: [#534] Refactoring / tweaks per MR review. --- lib/pleroma/instances/instance.ex | 34 +++++++++------------- lib/pleroma/plugs/set_requester_reachable_plug.ex | 16 ++++++++++ lib/pleroma/web/activity_pub/activity_pub.ex | 10 +------ .../web/activity_pub/activity_pub_controller.ex | 7 +---- lib/pleroma/web/controller_helper.ex | 5 ---- lib/pleroma/web/ostatus/ostatus_controller.ex | 7 +---- lib/pleroma/web/salmon/salmon.ex | 3 +- lib/pleroma/web/websub/websub.ex | 3 +- lib/pleroma/web/websub/websub_controller.ex | 7 +---- 9 files changed, 36 insertions(+), 56 deletions(-) create mode 100644 lib/pleroma/plugs/set_requester_reachable_plug.ex (limited to 'lib') diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 60e8d0e21..e3af4a8a7 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -13,7 +13,6 @@ defmodule Pleroma.Instances.Instance do schema "instances" do field(:host, :string) field(:unreachable_since, :naive_datetime) - field(:reachability_checked_at, :naive_datetime) timestamps() end @@ -22,7 +21,7 @@ defmodule Pleroma.Instances.Instance do def changeset(struct, params \\ %{}) do struct - |> cast(params, [:host, :unreachable_since, :reachability_checked_at]) + |> cast(params, [:host, :unreachable_since]) |> validate_required([:host]) |> unique_constraint(:host) end @@ -66,7 +65,7 @@ defmodule Pleroma.Instances.Instance do %Instance{} = existing_record <- Repo.get_by(Instance, %{host: host}) do {:ok, _instance} = existing_record - |> changeset(%{unreachable_since: nil, reachability_checked_at: DateTime.utc_now()}) + |> changeset(%{unreachable_since: nil}) |> Repo.update() end end @@ -80,27 +79,22 @@ defmodule Pleroma.Instances.Instance do host = host(url) existing_record = Repo.get_by(Instance, %{host: host}) - changes = %{ - unreachable_since: unreachable_since, - reachability_checked_at: NaiveDateTime.utc_now() - } + changes = %{unreachable_since: unreachable_since} - if existing_record do - update_changes = - if existing_record.unreachable_since && - NaiveDateTime.compare(existing_record.unreachable_since, unreachable_since) != :gt, - do: Map.delete(changes, :unreachable_since), - else: changes - - {:ok, _instance} = - existing_record - |> changeset(update_changes) - |> Repo.update() - else - {:ok, _instance} = + cond do + is_nil(existing_record) -> %Instance{} |> changeset(Map.put(changes, :host, host)) |> Repo.insert() + + existing_record.unreachable_since && + NaiveDateTime.compare(existing_record.unreachable_since, unreachable_since) != :gt -> + {:noop, existing_record} + + true -> + existing_record + |> changeset(changes) + |> Repo.update() end end diff --git a/lib/pleroma/plugs/set_requester_reachable_plug.ex b/lib/pleroma/plugs/set_requester_reachable_plug.ex new file mode 100644 index 000000000..88551be70 --- /dev/null +++ b/lib/pleroma/plugs/set_requester_reachable_plug.ex @@ -0,0 +1,16 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Plugs.SetRequesterReachablePlug do + import Plug.Conn + + def init(_), do: [] + + def call(%Plug.Conn{} = conn, _) do + with [referer] <- get_req_header(conn, "referer"), + do: Pleroma.Instances.set_reachable(referer) + + conn + end +end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 4b34334a0..4232d6c0a 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -722,15 +722,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end) end - def publish_one(%{inbox: inbox} = activity) do - if Instances.reachable?(inbox) do - do_publish_one(activity) - else - {:error, :noop} - end - end - - defp do_publish_one(%{inbox: inbox, json: json, actor: actor, id: id}) do + def publish_one(%{inbox: inbox, json: json, actor: actor, id: id}) do Logger.info("Federating #{id} to #{inbox}") host = URI.parse(inbox).host diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index dc353dff0..fadb038a2 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -18,8 +18,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do action_fallback(:errors) plug(Pleroma.Web.FederatingPlug when action in [:inbox, :relay]) + plug(Pleroma.Web.Plugs.SetRequesterReachablePlug when action in [:inbox]) plug(:relay_active? when action in [:relay]) - plug(:set_requester_reachable when action in [:inbox]) def relay_active?(conn, _) do if Keyword.get(Application.get_env(:pleroma, :instance), :allow_relay) do @@ -291,9 +291,4 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do |> put_status(500) |> json("error") end - - defp set_requester_reachable(conn, _) do - Pleroma.Web.ControllerHelper.set_requester_reachable(conn) - conn - end end diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 13cf1877f..14e3d19fd 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -10,9 +10,4 @@ defmodule Pleroma.Web.ControllerHelper do |> put_status(status) |> json(json) end - - def set_requester_reachable(conn) do - with [referer] <- get_req_header(conn, "referer"), - do: Pleroma.Instances.set_reachable(referer) - end end diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index a89f16b94..e483447ed 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.Web.ActivityPub.ActivityPub plug(Pleroma.Web.FederatingPlug when action in [:salmon_incoming]) - plug(:set_requester_reachable when action in [:salmon_incoming]) + plug(Pleroma.Web.Plugs.SetRequesterReachablePlug when action in [:salmon_incoming]) action_fallback(:errors) @@ -203,9 +203,4 @@ defmodule Pleroma.Web.OStatus.OStatusController do |> put_status(500) |> text("Something went wrong") end - - defp set_requester_reachable(conn, _) do - Pleroma.Web.ControllerHelper.set_requester_reachable(conn) - conn - end end diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 17ca7a6e8..80023127c 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -168,8 +168,7 @@ defmodule Pleroma.Web.Salmon do do: send_to_user(salmon, feed, poster) def send_to_user(url, feed, poster) when is_binary(url) do - with {:reachable, true} <- {:reachable, Instances.reachable?(url)}, - {:ok, %{status: code}} when code in 200..299 <- + with {:ok, %{status: code}} when code in 200..299 <- poster.( url, feed, diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index cbb7a5ac7..64eba7221 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -272,8 +272,7 @@ defmodule Pleroma.Web.Websub do signature = sign(secret || "", xml) Logger.info(fn -> "Pushing #{topic} to #{callback}" end) - with {:reachable, true} <- {:reachable, Instances.reachable?(callback)}, - {:ok, %{status: code}} when code in 200..299 <- + with {:ok, %{status: code}} when code in 200..299 <- @httpoison.post( callback, xml, diff --git a/lib/pleroma/web/websub/websub_controller.ex b/lib/pleroma/web/websub/websub_controller.ex index 02fe075d7..9da7e70a1 100644 --- a/lib/pleroma/web/websub/websub_controller.ex +++ b/lib/pleroma/web/websub/websub_controller.ex @@ -20,7 +20,7 @@ defmodule Pleroma.Web.Websub.WebsubController do ] ) - plug(:set_requester_reachable when action in [:websub_incoming]) + plug(Pleroma.Web.Plugs.SetRequesterReachablePlug when action in [:websub_incoming]) def websub_subscription_request(conn, %{"nickname" => nickname} = params) do user = User.get_cached_by_nickname(nickname) @@ -96,9 +96,4 @@ defmodule Pleroma.Web.Websub.WebsubController do |> send_resp(500, "Error") end end - - defp set_requester_reachable(conn, _) do - Pleroma.Web.ControllerHelper.set_requester_reachable(conn) - conn - end end -- cgit v1.2.3 From 1d2f41642cfec5710055bcf8409778bb362beecb Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 28 Jan 2019 15:25:06 +0300 Subject: [#534] Various tweaks. Tests for Instances and Instance. --- lib/pleroma/instances.ex | 13 ++++++++----- lib/pleroma/instances/instance.ex | 28 ++++++++++++++-------------- lib/pleroma/web/activity_pub/activity_pub.ex | 4 ++-- lib/pleroma/web/salmon/salmon.ex | 4 ---- lib/pleroma/web/websub/websub.ex | 10 +++------- 5 files changed, 27 insertions(+), 32 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex index 0b08f0eb8..5e107f4c9 100644 --- a/lib/pleroma/instances.ex +++ b/lib/pleroma/instances.ex @@ -3,14 +3,17 @@ defmodule Pleroma.Instances do @adapter Pleroma.Instances.Instance - defdelegate filter_reachable(urls), to: @adapter - defdelegate reachable?(url), to: @adapter - defdelegate set_reachable(url), to: @adapter - defdelegate set_unreachable(url, unreachable_since \\ nil), to: @adapter + defdelegate filter_reachable(urls_or_hosts), to: @adapter + defdelegate reachable?(url_or_host), to: @adapter + defdelegate set_reachable(url_or_host), to: @adapter + defdelegate set_unreachable(url_or_host, unreachable_since \\ nil), to: @adapter + + def set_consistently_unreachable(url_or_host), + do: set_unreachable(url_or_host, reachability_datetime_threshold()) def reachability_datetime_threshold do federation_reachability_timeout_days = - Pleroma.Config.get(:instance)[:federation_reachability_timeout_days] || 90 + Pleroma.Config.get(:instance)[:federation_reachability_timeout_days] || 0 if federation_reachability_timeout_days > 0 do NaiveDateTime.add( diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index e3af4a8a7..a87590d8b 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -17,7 +17,7 @@ defmodule Pleroma.Instances.Instance do timestamps() end - defdelegate host(url), to: Instances + defdelegate host(url_or_host), to: Instances def changeset(struct, params \\ %{}) do struct @@ -28,9 +28,9 @@ defmodule Pleroma.Instances.Instance do def filter_reachable([]), do: [] - def filter_reachable(urls) when is_list(urls) do + def filter_reachable(urls_or_hosts) when is_list(urls_or_hosts) do hosts = - urls + urls_or_hosts |> Enum.map(&(&1 && host(&1))) |> Enum.filter(&(to_string(&1) != "")) @@ -44,14 +44,14 @@ defmodule Pleroma.Instances.Instance do ) ) - Enum.filter(urls, &(&1 && host(&1) not in unreachable_hosts)) + Enum.filter(urls_or_hosts, &(&1 && host(&1) not in unreachable_hosts)) end - def reachable?(url) when is_binary(url) do + def reachable?(url_or_host) when is_binary(url_or_host) do !Repo.one( from(i in Instance, where: - i.host == ^host(url) and + i.host == ^host(url_or_host) and i.unreachable_since <= ^Instances.reachability_datetime_threshold(), select: true ) @@ -60,8 +60,8 @@ defmodule Pleroma.Instances.Instance do def reachable?(_), do: true - def set_reachable(url) when is_binary(url) do - with host <- host(url), + def set_reachable(url_or_host) when is_binary(url_or_host) do + with host <- host(url_or_host), %Instance{} = existing_record <- Repo.get_by(Instance, %{host: host}) do {:ok, _instance} = existing_record @@ -70,13 +70,13 @@ defmodule Pleroma.Instances.Instance do end end - def set_reachable(_), do: {0, :noop} + def set_reachable(_), do: {:error, nil} - def set_unreachable(url, unreachable_since \\ nil) + def set_unreachable(url_or_host, unreachable_since \\ nil) - def set_unreachable(url, unreachable_since) when is_binary(url) do + def set_unreachable(url_or_host, unreachable_since) when is_binary(url_or_host) do unreachable_since = unreachable_since || DateTime.utc_now() - host = host(url) + host = host(url_or_host) existing_record = Repo.get_by(Instance, %{host: host}) changes = %{unreachable_since: unreachable_since} @@ -89,7 +89,7 @@ defmodule Pleroma.Instances.Instance do existing_record.unreachable_since && NaiveDateTime.compare(existing_record.unreachable_since, unreachable_since) != :gt -> - {:noop, existing_record} + {:ok, existing_record} true -> existing_record @@ -98,5 +98,5 @@ defmodule Pleroma.Instances.Instance do end end - def set_unreachable(_, _), do: {0, :noop} + def set_unreachable(_, _), do: {:error, nil} end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 4232d6c0a..6cad02da6 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -750,9 +750,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Instances.set_reachable(inbox) result else - e -> + {_post_result, response} -> Instances.set_unreachable(inbox) - e + {:error, response} end end diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 80023127c..e96455423 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -181,10 +181,6 @@ defmodule Pleroma.Web.Salmon do Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) :ok else - {:reachable, false} -> - Logger.debug(fn -> "Pushing Salmon to #{url} skipped as marked unreachable)" end) - :noop - e -> Instances.set_unreachable(url) Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index 64eba7221..abe148270 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -286,14 +286,10 @@ defmodule Pleroma.Web.Websub do Logger.info(fn -> "Pushed to #{callback}, code #{code}" end) {:ok, code} else - {:reachable, false} -> - Logger.debug(fn -> "Pushing to #{callback} skipped as marked unreachable)" end) - {:error, :noop} - - e -> + {_post_result, response} -> Instances.set_unreachable(callback) - Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(e)}" end) - {:error, e} + Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(response)}" end) + {:error, response} end end end -- cgit v1.2.3 From 50d6183893166b51a400659a38dd657ac84603d6 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Mon, 28 Jan 2019 21:31:08 +0300 Subject: Split hide_network into hide_followers & hide_followings --- lib/pleroma/user/info.ex | 6 ++++-- lib/pleroma/web/activity_pub/views/user_view.ex | 8 ++++---- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 4 ++-- lib/pleroma/web/twitter_api/twitter_api_controller.ex | 6 +++--- lib/pleroma/web/twitter_api/views/user_view.ex | 3 ++- 5 files changed, 15 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index c6c923aac..2186190a0 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -30,7 +30,8 @@ defmodule Pleroma.User.Info do field(:topic, :string, default: nil) field(:hub, :string, default: nil) field(:salmon, :string, default: nil) - field(:hide_network, :boolean, default: false) + field(:hide_followers, :boolean, default: false) + field(:hide_followings, :boolean, default: false) field(:pinned_activities, {:array, :string}, default: []) # Found in the wild @@ -143,7 +144,8 @@ defmodule Pleroma.User.Info do :no_rich_text, :default_scope, :banner, - :hide_network, + :hide_followings, + :hide_followers, :background ]) end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index dcf681b6d..b9588bee5 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -86,7 +86,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do query = from(user in query, select: [:ap_id]) following = Repo.all(query) - collection(following, "#{user.ap_id}/following", page, !user.info.hide_network) + collection(following, "#{user.ap_id}/following", page, !user.info.hide_followings) |> Map.merge(Utils.make_json_ld_header()) end @@ -99,7 +99,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do "id" => "#{user.ap_id}/following", "type" => "OrderedCollection", "totalItems" => length(following), - "first" => collection(following, "#{user.ap_id}/following", 1, !user.info.hide_network) + "first" => collection(following, "#{user.ap_id}/following", 1, !user.info.hide_followings) } |> Map.merge(Utils.make_json_ld_header()) end @@ -109,7 +109,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do query = from(user in query, select: [:ap_id]) followers = Repo.all(query) - collection(followers, "#{user.ap_id}/followers", page, !user.info.hide_network) + collection(followers, "#{user.ap_id}/followers", page, !user.info.hide_followers) |> Map.merge(Utils.make_json_ld_header()) end @@ -122,7 +122,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do "id" => "#{user.ap_id}/followers", "type" => "OrderedCollection", "totalItems" => length(followers), - "first" => collection(followers, "#{user.ap_id}/followers", 1, !user.info.hide_network) + "first" => collection(followers, "#{user.ap_id}/followers", 1, !user.info.hide_followers) } |> Map.merge(Utils.make_json_ld_header()) end diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index a366a149f..3364b2ac2 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -583,7 +583,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do followers = cond do for_user && user.id == for_user.id -> followers - user.info.hide_network -> [] + user.info.hide_followers -> [] true -> followers end @@ -599,7 +599,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do followers = cond do for_user && user.id == for_user.id -> followers - user.info.hide_network -> [] + user.info.hide_followings -> [] true -> followers end diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 3064d61ea..5e3fe9352 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -503,7 +503,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do followers = cond do for_user && user.id == for_user.id -> followers - user.info.hide_network -> [] + user.info.hide_followers -> [] true -> followers end @@ -523,7 +523,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do friends = cond do for_user && user.id == for_user.id -> friends - user.info.hide_network -> [] + user.info.hide_followings -> [] true -> friends end @@ -618,7 +618,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do defp build_info_cng(user, params) do info_params = - ["no_rich_text", "locked", "hide_network"] + ["no_rich_text", "locked", "hide_followers", "hide_followings"] |> Enum.reduce(%{}, fn key, res -> if value = params[key] do Map.put(res, key, value == "true") diff --git a/lib/pleroma/web/twitter_api/views/user_view.ex b/lib/pleroma/web/twitter_api/views/user_view.ex index 15682db8f..cd7c4349c 100644 --- a/lib/pleroma/web/twitter_api/views/user_view.ex +++ b/lib/pleroma/web/twitter_api/views/user_view.ex @@ -108,7 +108,8 @@ defmodule Pleroma.Web.TwitterAPI.UserView do "locked" => user.info.locked, "default_scope" => user.info.default_scope, "no_rich_text" => user.info.no_rich_text, - "hide_network" => user.info.hide_network, + "hide_followers" => user.info.hide_followers, + "hide_followings" => user.info.hide_followings, "fields" => fields, # Pleroma extension -- cgit v1.2.3 From 92753b0cd9cfcdc5edb64a5e55ad27f73079f9e0 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 29 Jan 2019 13:12:28 +0300 Subject: [#534] Made federation push sender be determined basing on content instead of `referer` header. Updated tests. --- lib/pleroma/plugs/set_requester_reachable_plug.ex | 16 ---------------- lib/pleroma/reverse_proxy.ex | 3 +-- lib/pleroma/web/activity_pub/activity_pub.ex | 3 +-- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 11 ++++++++++- lib/pleroma/web/ostatus/ostatus.ex | 3 +++ lib/pleroma/web/ostatus/ostatus_controller.ex | 1 - lib/pleroma/web/salmon/salmon.ex | 5 +---- lib/pleroma/web/websub/websub.ex | 3 +-- lib/pleroma/web/websub/websub_controller.ex | 2 -- 9 files changed, 17 insertions(+), 30 deletions(-) delete mode 100644 lib/pleroma/plugs/set_requester_reachable_plug.ex (limited to 'lib') diff --git a/lib/pleroma/plugs/set_requester_reachable_plug.ex b/lib/pleroma/plugs/set_requester_reachable_plug.ex deleted file mode 100644 index 88551be70..000000000 --- a/lib/pleroma/plugs/set_requester_reachable_plug.ex +++ /dev/null @@ -1,16 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Plugs.SetRequesterReachablePlug do - import Plug.Conn - - def init(_), do: [] - - def call(%Plug.Conn{} = conn, _) do - with [referer] <- get_req_header(conn, "referer"), - do: Pleroma.Instances.set_reachable(referer) - - conn - end -end diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex index d8b17212b..a25b5ea4e 100644 --- a/lib/pleroma/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy.ex @@ -3,8 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ReverseProxy do - @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-unmodified-since) ++ - ~w(if-none-match if-range range referer) + @keep_req_headers ~w(accept user-agent accept-encoding cache-control if-modified-since if-unmodified-since if-none-match if-range range) @resp_cache_headers ~w(etag date last-modified cache-control) @keep_resp_headers @resp_cache_headers ++ ~w(content-type content-disposition content-encoding content-range accept-ranges vary) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 22c7824fa..4016808e8 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -784,8 +784,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do [ {"Content-Type", "application/activity+json"}, {"signature", signature}, - {"digest", digest}, - {"referer", Pleroma.Web.Endpoint.url()} + {"digest", digest} ] ) do Instances.set_reachable(inbox) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index fadb038a2..4dea6ab83 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do action_fallback(:errors) plug(Pleroma.Web.FederatingPlug when action in [:inbox, :relay]) - plug(Pleroma.Web.Plugs.SetRequesterReachablePlug when action in [:inbox]) + plug(:set_requester_reachable when action in [:inbox]) plug(:relay_active? when action in [:relay]) def relay_active?(conn, _) do @@ -291,4 +291,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do |> put_status(500) |> json("error") end + + defp set_requester_reachable(%Plug.Conn{} = conn, _) do + with actor <- conn.params["actor"], + true <- is_binary(actor) do + Pleroma.Instances.set_reachable(actor) + end + + conn + end end diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex index a3155b79d..a20ca17bb 100644 --- a/lib/pleroma/web/ostatus/ostatus.ex +++ b/lib/pleroma/web/ostatus/ostatus.ex @@ -48,6 +48,9 @@ defmodule Pleroma.Web.OStatus do def handle_incoming(xml_string) do with doc when doc != :error <- parse_document(xml_string) do + with {:ok, actor_user} <- find_make_or_update_user(doc), + do: Pleroma.Instances.set_reachable(actor_user.ap_id) + entries = :xmerl_xpath.string('//entry', doc) activities = diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 9392a97f0..302ff38a4 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -14,7 +14,6 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.Web.ActivityPub.ActivityPub plug(Pleroma.Web.FederatingPlug when action in [:salmon_incoming]) - plug(Pleroma.Web.Plugs.SetRequesterReachablePlug when action in [:salmon_incoming]) action_fallback(:errors) diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index e96455423..07ca42a5f 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -172,10 +172,7 @@ defmodule Pleroma.Web.Salmon do poster.( url, feed, - [ - {"Content-Type", "application/magic-envelope+xml"}, - {"referer", Pleroma.Web.Endpoint.url()} - ] + [{"Content-Type", "application/magic-envelope+xml"}] ) do Instances.set_reachable(url) Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index abe148270..8f7d53b03 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -278,8 +278,7 @@ defmodule Pleroma.Web.Websub do xml, [ {"Content-Type", "application/atom+xml"}, - {"X-Hub-Signature", "sha1=#{signature}"}, - {"referer", Pleroma.Web.Endpoint.url()} + {"X-Hub-Signature", "sha1=#{signature}"} ] ) do Instances.set_reachable(callback) diff --git a/lib/pleroma/web/websub/websub_controller.ex b/lib/pleroma/web/websub/websub_controller.ex index 9da7e70a1..a92dfe87b 100644 --- a/lib/pleroma/web/websub/websub_controller.ex +++ b/lib/pleroma/web/websub/websub_controller.ex @@ -20,8 +20,6 @@ defmodule Pleroma.Web.Websub.WebsubController do ] ) - plug(Pleroma.Web.Plugs.SetRequesterReachablePlug when action in [:websub_incoming]) - def websub_subscription_request(conn, %{"nickname" => nickname} = params) do user = User.get_cached_by_nickname(nickname) -- cgit v1.2.3 From a43a1c6d4e6ff26c751cce1284deb2ef40b00ab7 Mon Sep 17 00:00:00 2001 From: lambda Date: Thu, 31 Jan 2019 12:16:23 +0000 Subject: Revert "Merge branch 'spc-fix-3' into 'develop'" This reverts merge request !682 --- lib/pleroma/spc_fixes/spc_fixes.ex | 113 --- lib/pleroma/spc_fixes/users_conversion.txt | 1043 ---------------------------- 2 files changed, 1156 deletions(-) delete mode 100644 lib/pleroma/spc_fixes/spc_fixes.ex delete mode 100644 lib/pleroma/spc_fixes/users_conversion.txt (limited to 'lib') diff --git a/lib/pleroma/spc_fixes/spc_fixes.ex b/lib/pleroma/spc_fixes/spc_fixes.ex deleted file mode 100644 index 86bbb7f6f..000000000 --- a/lib/pleroma/spc_fixes/spc_fixes.ex +++ /dev/null @@ -1,113 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -alias Pleroma.Repo -alias Pleroma.User -alias Pleroma.Activity -alias Pleroma.Object -import Ecto.Query - -defmodule Pleroma.SpcFixes do - def upgrade_users do - query = - from(u in User, - where: fragment("? like ?", u.ap_id, "https://shitposter.club/user/%") - ) - - {:ok, file} = File.read("lib/pleroma/spc_fixes/users_conversion.txt") - - # Mapping of old ap_id to new ap_id and vice reversa - mapping = - file - |> String.trim() - |> String.split("\n") - |> Enum.map(fn line -> - line - |> String.split("\t") - end) - |> Enum.reduce(%{}, fn [_id, old_ap_id, new_ap_id], acc -> - acc - |> Map.put(String.trim(old_ap_id), String.trim(new_ap_id)) - |> Map.put(String.trim(new_ap_id), String.trim(old_ap_id)) - end) - - # First, refetch all the old users. - _old_users = - query - |> Repo.all() - |> Enum.each(fn user -> - with ap_id when is_binary(ap_id) <- mapping[user.ap_id] do - # This fetches and updates the user. - User.get_or_fetch_by_ap_id(ap_id) - end - end) - - # Now, fix follow relationships. - query = - from(u in User, - where: fragment("? like ?", u.ap_id, "https://shitposter.club/users/%") - ) - - query - |> Repo.all() - |> Enum.each(fn user -> - old_follower_address = User.ap_followers(user) - - # Fix users - query = - from(u in User, - where: ^old_follower_address in u.following, - update: [ - push: [following: ^user.follower_address] - ] - ) - - Repo.update_all(query, []) - - # Fix activities - query = - from(a in Activity, - where: fragment("?->>'actor' = ?", a.data, ^mapping[user.ap_id]), - update: [ - set: [ - data: - fragment( - "jsonb_set(jsonb_set(?, '{actor}', ?), '{to}', (?->'to')::jsonb || ?)", - a.data, - ^user.ap_id, - a.data, - ^[user.follower_address] - ), - actor: ^user.ap_id - ], - push: [ - recipients: ^user.follower_address - ] - ] - ) - - Repo.update_all(query, []) - - # Fix objects - query = - from(a in Object, - where: fragment("?->>'actor' = ?", a.data, ^mapping[user.ap_id]), - update: [ - set: [ - data: - fragment( - "jsonb_set(jsonb_set(?, '{actor}', ?), '{to}', (?->'to')::jsonb || ?)", - a.data, - ^user.ap_id, - a.data, - ^[user.follower_address] - ) - ] - ] - ) - - Repo.update_all(query, []) - end) - end -end diff --git a/lib/pleroma/spc_fixes/users_conversion.txt b/lib/pleroma/spc_fixes/users_conversion.txt deleted file mode 100644 index 0d0321e18..000000000 --- a/lib/pleroma/spc_fixes/users_conversion.txt +++ /dev/null @@ -1,1043 +0,0 @@ -1 https://shitposter.club/user/1 https://shitposter.club/users/moonman -2 https://shitposter.club/user/2 https://shitposter.club/users/sunman -45 https://shitposter.club/user/45 https://shitposter.club/users/chen -59 https://shitposter.club/user/59 https://shitposter.club/users/mona -63 https://shitposter.club/user/63 https://shitposter.club/users/wdgaster -64 https://shitposter.club/user/64 https://shitposter.club/users/waluigi -65 https://shitposter.club/user/65 https://shitposter.club/users/puke -66 https://shitposter.club/user/66 https://shitposter.club/users/sanstheskeleton -67 https://shitposter.club/user/67 https://shitposter.club/users/venus -68 https://shitposter.club/user/68 https://shitposter.club/users/noyoushutthefuckupdad -70 https://shitposter.club/user/70 https://shitposter.club/users/dualkeyblade -72 https://shitposter.club/user/72 https://shitposter.club/users/hyperbeam -74 https://shitposter.club/user/74 https://shitposter.club/users/chopperdave -75 https://shitposter.club/user/75 https://shitposter.club/users/itachi -78 https://shitposter.club/user/78 https://shitposter.club/users/gyro -80 https://shitposter.club/user/80 https://shitposter.club/users/drli -81 https://shitposter.club/user/81 https://shitposter.club/users/dril -82 https://shitposter.club/user/82 https://shitposter.club/users/bayonetta -83 https://shitposter.club/user/83 https://shitposter.club/users/imrc -91 https://shitposter.club/user/91 https://shitposter.club/users/hobi -95 https://shitposter.club/user/95 https://shitposter.club/users/houndoom -102 https://shitposter.club/user/102 https://shitposter.club/users/fuck -103 https://shitposter.club/user/103 https://shitposter.club/users/mh -114 https://shitposter.club/user/114 https://shitposter.club/users/strider -116 https://shitposter.club/user/116 https://shitposter.club/users/bunny -120 https://shitposter.club/user/120 https://shitposter.club/users/teddie -121 https://shitposter.club/user/121 https://shitposter.club/users/genesis -122 https://shitposter.club/user/122 https://shitposter.club/users/ninten -124 https://shitposter.club/user/124 https://shitposter.club/users/matsucest -125 https://shitposter.club/user/125 https://shitposter.club/users/yuri -126 https://shitposter.club/user/126 https://shitposter.club/users/yang -127 https://shitposter.club/user/127 https://shitposter.club/users/yokaiwatch -128 https://shitposter.club/user/128 https://shitposter.club/users/futo -129 https://shitposter.club/user/129 https://shitposter.club/users/captainfalcon -130 https://shitposter.club/user/130 https://shitposter.club/users/liquid -131 https://shitposter.club/user/131 https://shitposter.club/users/flonne -132 https://shitposter.club/user/132 https://shitposter.club/users/ryoubakura -133 https://shitposter.club/user/133 https://shitposter.club/users/kirisame -134 https://shitposter.club/user/134 https://shitposter.club/users/senyuu -135 https://shitposter.club/user/135 https://shitposter.club/users/protagonist -136 https://shitposter.club/user/136 https://shitposter.club/users/zelos -137 https://shitposter.club/user/137 https://shitposter.club/users/alba -138 https://shitposter.club/user/138 https://shitposter.club/users/yugo -139 https://shitposter.club/user/139 https://shitposter.club/users/vector -141 https://shitposter.club/user/141 https://shitposter.club/users/god -144 https://shitposter.club/user/144 https://shitposter.club/users/yuya -147 https://shitposter.club/user/147 https://shitposter.club/users/blmatsu -148 https://shitposter.club/user/148 https://shitposter.club/users/pain -149 https://shitposter.club/user/149 https://shitposter.club/users/bloodfalcon -150 https://shitposter.club/user/150 https://shitposter.club/users/yuzu -152 https://shitposter.club/user/152 https://shitposter.club/users/hex -153 https://shitposter.club/user/153 https://shitposter.club/users/coolcatlovesyou -154 https://shitposter.club/user/154 https://shitposter.club/users/cat -159 https://shitposter.club/user/159 https://shitposter.club/users/edna -162 https://shitposter.club/user/162 https://shitposter.club/users/uwu -163 https://shitposter.club/user/163 https://shitposter.club/users/onceler -164 https://shitposter.club/user/164 https://shitposter.club/users/swordofdoubt -168 https://shitposter.club/user/168 https://shitposter.club/users/komaeda -170 https://shitposter.club/user/170 https://shitposter.club/users/protoman -176 https://shitposter.club/user/176 https://shitposter.club/users/kiitanda -177 https://shitposter.club/user/177 https://shitposter.club/users/starscream -180 https://shitposter.club/user/180 https://shitposter.club/users/trishuna -183 https://shitposter.club/user/183 https://shitposter.club/users/milk -184 https://shitposter.club/user/184 https://shitposter.club/users/otacon -185 https://shitposter.club/user/185 https://shitposter.club/users/ragna -189 https://shitposter.club/user/189 https://shitposter.club/users/majintensei -193 https://shitposter.club/user/193 https://shitposter.club/users/deadpool -195 https://shitposter.club/user/195 https://shitposter.club/users/ramimalek -199 https://shitposter.club/user/199 https://shitposter.club/users/ritsu -200 https://shitposter.club/user/200 https://shitposter.club/users/alisha -201 https://shitposter.club/user/201 https://shitposter.club/users/naegi -202 https://shitposter.club/user/202 https://shitposter.club/users/shartmeister420 -203 https://shitposter.club/user/203 https://shitposter.club/users/lulz -204 https://shitposter.club/user/204 https://shitposter.club/users/youranonnews -208 https://shitposter.club/user/208 https://shitposter.club/users/haruna -209 https://shitposter.club/user/209 https://shitposter.club/users/bigboss -213 https://shitposter.club/user/213 https://shitposter.club/users/whisper -219 https://shitposter.club/user/219 https://shitposter.club/users/billfromnextdoor -228 https://shitposter.club/user/228 https://shitposter.club/users/cta -229 https://shitposter.club/user/229 https://shitposter.club/users/luketriton -230 https://shitposter.club/user/230 https://shitposter.club/users/striking -238 https://shitposter.club/user/238 https://shitposter.club/users/this -243 https://shitposter.club/user/243 https://shitposter.club/users/greed -244 https://shitposter.club/user/244 https://shitposter.club/users/quicksilver -246 https://shitposter.club/user/246 https://shitposter.club/users/zaveid -249 https://shitposter.club/user/249 https://shitposter.club/users/serena -263 https://shitposter.club/user/263 https://shitposter.club/users/compaq -264 https://shitposter.club/user/264 https://shitposter.club/users/squishy -265 https://shitposter.club/user/265 https://shitposter.club/users/furry -269 https://shitposter.club/user/269 https://shitposter.club/users/mikleo -270 https://shitposter.club/user/270 https://shitposter.club/users/ami -272 https://shitposter.club/user/272 https://shitposter.club/users/ruri -273 https://shitposter.club/user/273 https://shitposter.club/users/descole -292 https://shitposter.club/user/292 https://shitposter.club/users/shun -296 https://shitposter.club/user/296 https://shitposter.club/users/magician -297 https://shitposter.club/user/297 https://shitposter.club/users/pichan -301 https://shitposter.club/user/301 https://shitposter.club/users/scaryh -303 https://shitposter.club/user/303 https://shitposter.club/users/phz -349 https://shitposter.club/user/349 https://shitposter.club/users/star -350 https://shitposter.club/user/350 https://shitposter.club/users/pepe -351 https://shitposter.club/user/351 https://shitposter.club/users/disassemblyline -354 https://shitposter.club/user/354 https://shitposter.club/users/elrac -382 https://shitposter.club/user/382 https://shitposter.club/users/bigdinner -390 https://shitposter.club/user/390 https://shitposter.club/users/choromatsu -391 https://shitposter.club/user/391 https://shitposter.club/users/otasune -396 https://shitposter.club/user/396 https://shitposter.club/users/cavestoryost -415 https://shitposter.club/user/415 https://shitposter.club/users/hazama -453 https://shitposter.club/user/453 https://shitposter.club/users/mgs3 -479 https://shitposter.club/user/479 https://shitposter.club/users/kanarykrusade -486 https://shitposter.club/user/486 https://shitposter.club/users/yitzyy -495 https://shitposter.club/user/495 https://shitposter.club/users/frog -497 https://shitposter.club/user/497 https://shitposter.club/users/marik -498 https://shitposter.club/user/498 https://shitposter.club/users/cookboy -505 https://shitposter.club/user/505 https://shitposter.club/users/damnalex -511 https://shitposter.club/user/511 https://shitposter.club/users/asbellhant -512 https://shitposter.club/user/512 https://shitposter.club/users/hitler -515 https://shitposter.club/user/515 https://shitposter.club/users/zeloswilder -516 https://shitposter.club/user/516 https://shitposter.club/users/makotokikuchi -518 https://shitposter.club/user/518 https://shitposter.club/users/kaito -519 https://shitposter.club/user/519 https://shitposter.club/users/bluto -520 https://shitposter.club/user/520 https://shitposter.club/users/akuma -521 https://shitposter.club/user/521 https://shitposter.club/users/blythe -522 https://shitposter.club/user/522 https://shitposter.club/users/heavensfeel -523 https://shitposter.club/user/523 https://shitposter.club/users/sirscatters -524 https://shitposter.club/user/524 https://shitposter.club/users/gakupo -526 https://shitposter.club/user/526 https://shitposter.club/users/anntagonist -527 https://shitposter.club/user/527 https://shitposter.club/users/misscatling -529 https://shitposter.club/user/529 https://shitposter.club/users/misscatlin -532 https://shitposter.club/user/532 https://shitposter.club/users/rjohnlennon -533 https://shitposter.club/user/533 https://shitposter.club/users/randhask -535 https://shitposter.club/user/535 https://shitposter.club/users/zemichi -537 https://shitposter.club/user/537 https://shitposter.club/users/carol -539 https://shitposter.club/user/539 https://shitposter.club/users/catmeme -540 https://shitposter.club/user/540 https://shitposter.club/users/spikespiegel -542 https://shitposter.club/user/542 https://shitposter.club/users/marvinthemartian -545 https://shitposter.club/user/545 https://shitposter.club/users/androlphegax -547 https://shitposter.club/user/547 https://shitposter.club/users/atlfalconsfan -549 https://shitposter.club/user/549 https://shitposter.club/users/shaxpeer -550 https://shitposter.club/user/550 https://shitposter.club/users/toddkincannon -556 https://shitposter.club/user/556 https://shitposter.club/users/divider -557 https://shitposter.club/user/557 https://shitposter.club/users/rayogundead -558 https://shitposter.club/user/558 https://shitposter.club/users/breadgod -561 https://shitposter.club/user/561 https://shitposter.club/users/internetzenmaster -569 https://shitposter.club/user/569 https://shitposter.club/users/izzyjsmom -571 https://shitposter.club/user/571 https://shitposter.club/users/spb -573 https://shitposter.club/user/573 https://shitposter.club/users/necrofantasia -574 https://shitposter.club/user/574 https://shitposter.club/users/cvlztn -575 https://shitposter.club/user/575 https://shitposter.club/users/herbiemarcuse -577 https://shitposter.club/user/577 https://shitposter.club/users/simarilian -578 https://shitposter.club/user/578 https://shitposter.club/users/shingo -580 https://shitposter.club/user/580 https://shitposter.club/users/applebees -582 https://shitposter.club/user/582 https://shitposter.club/users/heechul -583 https://shitposter.club/user/583 https://shitposter.club/users/rin -584 https://shitposter.club/user/584 https://shitposter.club/users/killua -585 https://shitposter.club/user/585 https://shitposter.club/users/seamus -586 https://shitposter.club/user/586 https://shitposter.club/users/momoisatsuki -588 https://shitposter.club/user/588 https://shitposter.club/users/bs -589 https://shitposter.club/user/589 https://shitposter.club/users/nya -595 https://shitposter.club/user/595 https://shitposter.club/users/elfpietrok -598 https://shitposter.club/user/598 https://shitposter.club/users/cyc0 -600 https://shitposter.club/user/600 https://shitposter.club/users/9riest -601 https://shitposter.club/user/601 https://shitposter.club/users/bella -602 https://shitposter.club/user/602 https://shitposter.club/users/hopestillflies -604 https://shitposter.club/user/604 https://shitposter.club/users/mark -605 https://shitposter.club/user/605 https://shitposter.club/users/crappycoco -607 https://shitposter.club/user/607 https://shitposter.club/users/meme -609 https://shitposter.club/user/609 https://shitposter.club/users/raylan -610 https://shitposter.club/user/610 https://shitposter.club/users/berry -611 https://shitposter.club/user/611 https://shitposter.club/users/noobius -621 https://shitposter.club/user/621 https://shitposter.club/users/lit -622 https://shitposter.club/user/622 https://shitposter.club/users/thedominionofplumass -633 https://shitposter.club/user/633 https://shitposter.club/users/amish -640 https://shitposter.club/user/640 https://shitposter.club/users/yaoi -657 https://shitposter.club/user/657 https://shitposter.club/users/ayano -661 https://shitposter.club/user/661 https://shitposter.club/users/velvethammer -665 https://shitposter.club/user/665 https://shitposter.club/users/yushe -666 https://shitposter.club/user/666 https://shitposter.club/users/rw -684 https://shitposter.club/user/684 https://shitposter.club/users/justplainbill -685 https://shitposter.club/user/685 https://shitposter.club/users/bree -687 https://shitposter.club/user/687 https://shitposter.club/users/dinahlord -693 https://shitposter.club/user/693 https://shitposter.club/users/luna -694 https://shitposter.club/user/694 https://shitposter.club/users/winterjaeger -695 https://shitposter.club/user/695 https://shitposter.club/users/winterjaeger7 -696 https://shitposter.club/user/696 https://shitposter.club/users/vall -697 https://shitposter.club/user/697 https://shitposter.club/users/nsa -699 https://shitposter.club/user/699 https://shitposter.club/users/haolink -700 https://shitposter.club/user/700 https://shitposter.club/users/mrsaturday -711 https://shitposter.club/user/711 https://shitposter.club/users/ob -728 https://shitposter.club/user/728 https://shitposter.club/users/djormil -734 https://shitposter.club/user/734 https://shitposter.club/users/twittercoe -735 https://shitposter.club/user/735 https://shitposter.club/users/twitterceo -748 https://shitposter.club/user/748 https://shitposter.club/users/joeprich -751 https://shitposter.club/user/751 https://shitposter.club/users/cheeto -755 https://shitposter.club/user/755 https://shitposter.club/users/jojo -757 https://shitposter.club/user/757 https://shitposter.club/users/onet -759 https://shitposter.club/user/759 https://shitposter.club/users/hiredmind -769 https://shitposter.club/user/769 https://shitposter.club/users/bonzibuddy -771 https://shitposter.club/user/771 https://shitposter.club/users/six6six -772 https://shitposter.club/user/772 https://shitposter.club/users/grantweets2 -779 https://shitposter.club/user/779 https://shitposter.club/users/marcavis -783 https://shitposter.club/user/783 https://shitposter.club/users/wintergirl93 -785 https://shitposter.club/user/785 https://shitposter.club/users/moonmanmobile -795 https://shitposter.club/user/795 https://shitposter.club/users/oz -796 https://shitposter.club/user/796 https://shitposter.club/users/rei -797 https://shitposter.club/user/797 https://shitposter.club/users/luciela -798 https://shitposter.club/user/798 https://shitposter.club/users/nightray -799 https://shitposter.club/user/799 https://shitposter.club/users/sorey -800 https://shitposter.club/user/800 https://shitposter.club/users/jack -802 https://shitposter.club/user/802 https://shitposter.club/users/natsu -804 https://shitposter.club/user/804 https://shitposter.club/users/yuuya -805 https://shitposter.club/user/805 https://shitposter.club/users/leo -817 https://shitposter.club/user/817 https://shitposter.club/users/rottenleaf -831 https://shitposter.club/user/831 https://shitposter.club/users/aqua -832 https://shitposter.club/user/832 https://shitposter.club/users/jihadistjoe -833 https://shitposter.club/user/833 https://shitposter.club/users/comradegg -835 https://shitposter.club/user/835 https://shitposter.club/users/bossgod -836 https://shitposter.club/user/836 https://shitposter.club/users/realdonaldtrump -859 https://shitposter.club/user/859 https://shitposter.club/users/marufoi -862 https://shitposter.club/user/862 https://shitposter.club/users/buffdad -978 https://shitposter.club/user/978 https://shitposter.club/users/nonameko -979 https://shitposter.club/user/979 https://shitposter.club/users/ira -988 https://shitposter.club/user/988 https://shitposter.club/users/adrint -1001 https://shitposter.club/user/1001 https://shitposter.club/users/fajfus -1018 https://shitposter.club/user/1018 https://shitposter.club/users/jon -1019 https://shitposter.club/user/1019 https://shitposter.club/users/levo -1020 https://shitposter.club/user/1020 https://shitposter.club/users/bhm -1023 https://shitposter.club/user/1023 https://shitposter.club/users/librarian -1025 https://shitposter.club/user/1025 https://shitposter.club/users/conanedogawa -1027 https://shitposter.club/user/1027 https://shitposter.club/users/gentlefemdom -1029 https://shitposter.club/user/1029 https://shitposter.club/users/hentie -1030 https://shitposter.club/user/1030 https://shitposter.club/users/notaskeleton -1038 https://shitposter.club/user/1038 https://shitposter.club/users/succ -1061 https://shitposter.club/user/1061 https://shitposter.club/users/applepark -1110 https://shitposter.club/user/1110 https://shitposter.club/users/caraway -1115 https://shitposter.club/user/1115 https://shitposter.club/users/jump -1118 https://shitposter.club/user/1118 https://shitposter.club/users/test222 -1120 https://shitposter.club/user/1120 https://shitposter.club/users/lu -1127 https://shitposter.club/user/1127 https://shitposter.club/users/riocat5 -1130 https://shitposter.club/user/1130 https://shitposter.club/users/lovelive -1137 https://shitposter.club/user/1137 https://shitposter.club/users/johnsonmcfonson -1159 https://shitposter.club/user/1159 https://shitposter.club/users/j -1179 https://shitposter.club/user/1179 https://shitposter.club/users/kumatora -1180 https://shitposter.club/user/1180 https://shitposter.club/users/komasan -1181 https://shitposter.club/user/1181 https://shitposter.club/users/8xenon8 -1183 https://shitposter.club/user/1183 https://shitposter.club/users/lemon -1184 https://shitposter.club/user/1184 https://shitposter.club/users/osomatsu -1186 https://shitposter.club/user/1186 https://shitposter.club/users/anomalyuk -1188 https://shitposter.club/user/1188 https://shitposter.club/users/jelly -1195 https://shitposter.club/user/1195 https://shitposter.club/users/ultra -1196 https://shitposter.club/user/1196 https://shitposter.club/users/mrmichael -1198 https://shitposter.club/user/1198 https://shitposter.club/users/neue -1205 https://shitposter.club/user/1205 https://shitposter.club/users/tomasnau -1261 https://shitposter.club/user/1261 https://shitposter.club/users/aljam -1279 https://shitposter.club/user/1279 https://shitposter.club/users/pigeonburger -1315 https://shitposter.club/user/1315 https://shitposter.club/users/itsstillrealtomedamnit -1366 https://shitposter.club/user/1366 https://shitposter.club/users/pewdiepie -1608 https://shitposter.club/user/1608 https://shitposter.club/users/serrarreaver -1613 https://shitposter.club/user/1613 https://shitposter.club/users/furrystoat -1629 https://shitposter.club/user/1629 https://shitposter.club/users/lordkraftdinner -1670 https://shitposter.club/user/1670 https://shitposter.club/users/idiotska -1736 https://shitposter.club/user/1736 https://shitposter.club/users/rabit3a -1946 https://shitposter.club/user/1946 https://shitposter.club/users/tikiloungemahu -1977 https://shitposter.club/user/1977 https://shitposter.club/users/arashinarukami -2035 https://shitposter.club/user/2035 https://shitposter.club/users/spedru -2088 https://shitposter.club/user/2088 https://shitposter.club/users/idol -2175 https://shitposter.club/user/2175 https://shitposter.club/users/olmitch -2227 https://shitposter.club/user/2227 https://shitposter.club/users/dune -2322 https://shitposter.club/user/2322 https://shitposter.club/users/biwazimayui -2323 https://shitposter.club/user/2323 https://shitposter.club/users/cawfee -2325 https://shitposter.club/user/2325 https://shitposter.club/users/jimrusell -2329 https://shitposter.club/user/2329 https://shitposter.club/users/illya -2341 https://shitposter.club/user/2341 https://shitposter.club/users/apple -2357 https://shitposter.club/user/2357 https://shitposter.club/users/bear -2358 https://shitposter.club/user/2358 https://shitposter.club/users/goldburggoldenhour -2378 https://shitposter.club/user/2378 https://shitposter.club/users/b1940060 -2380 https://shitposter.club/user/2380 https://shitposter.club/users/garnerh42 -2388 https://shitposter.club/user/2388 https://shitposter.club/users/niceau -2389 https://shitposter.club/user/2389 https://shitposter.club/users/zekeyspaceylizard -2391 https://shitposter.club/user/2391 https://shitposter.club/users/fbi -2400 https://shitposter.club/user/2400 https://shitposter.club/users/miraculousladybug -2413 https://shitposter.club/user/2413 https://shitposter.club/users/maxauri -2450 https://shitposter.club/user/2450 https://shitposter.club/users/camedei456 -2466 https://shitposter.club/user/2466 https://shitposter.club/users/nurgledsatorin -2512 https://shitposter.club/user/2512 https://shitposter.club/users/conspiracy -2539 https://shitposter.club/user/2539 https://shitposter.club/users/dtluna -2542 https://shitposter.club/user/2542 https://shitposter.club/users/analepticalzabo -2573 https://shitposter.club/user/2573 https://shitposter.club/users/irregardlessly -2588 https://shitposter.club/user/2588 https://shitposter.club/users/chalt -2599 https://shitposter.club/user/2599 https://shitposter.club/users/shtposter -2639 https://shitposter.club/user/2639 https://shitposter.club/users/oogy -2647 https://shitposter.club/user/2647 https://shitposter.club/users/salad -2662 https://shitposter.club/user/2662 https://shitposter.club/users/godfather -2663 https://shitposter.club/user/2663 https://shitposter.club/users/good -2664 https://shitposter.club/user/2664 https://shitposter.club/users/mc -2672 https://shitposter.club/user/2672 https://shitposter.club/users/nilbo -2680 https://shitposter.club/user/2680 https://shitposter.club/users/ovrclockd -2687 https://shitposter.club/user/2687 https://shitposter.club/users/politics -2724 https://shitposter.club/user/2724 https://shitposter.club/users/soomeguy -2748 https://shitposter.club/user/2748 https://shitposter.club/users/lghb -2751 https://shitposter.club/user/2751 https://shitposter.club/users/imdarelzslimsha -2794 https://shitposter.club/user/2794 https://shitposter.club/users/robert -2795 https://shitposter.club/user/2795 https://shitposter.club/users/jani -2796 https://shitposter.club/user/2796 https://shitposter.club/users/richard -2797 https://shitposter.club/user/2797 https://shitposter.club/users/warmerbrudi -2798 https://shitposter.club/user/2798 https://shitposter.club/users/thomas -2800 https://shitposter.club/user/2800 https://shitposter.club/users/100days -2801 https://shitposter.club/user/2801 https://shitposter.club/users/christoffel -2814 https://shitposter.club/user/2814 https://shitposter.club/users/cmpunk -2841 https://shitposter.club/user/2841 https://shitposter.club/users/shit -2886 https://shitposter.club/user/2886 https://shitposter.club/users/bdf -2889 https://shitposter.club/user/2889 https://shitposter.club/users/memesbrasileiros -2909 https://shitposter.club/user/2909 https://shitposter.club/users/tiuluhen -2942 https://shitposter.club/user/2942 https://shitposter.club/users/wormhole -2947 https://shitposter.club/user/2947 https://shitposter.club/users/augustus -2954 https://shitposter.club/user/2954 https://shitposter.club/users/vaka -2974 https://shitposter.club/user/2974 https://shitposter.club/users/moonbot -2979 https://shitposter.club/user/2979 https://shitposter.club/users/fakedonaldtrump -3009 https://shitposter.club/user/3009 https://shitposter.club/users/r4 -3032 https://shitposter.club/user/3032 https://shitposter.club/users/delores -3127 https://shitposter.club/user/3127 https://shitposter.club/users/plusreed -3148 https://shitposter.club/user/3148 https://shitposter.club/users/deimos -3151 https://shitposter.club/user/3151 https://shitposter.club/users/memer69 -3162 https://shitposter.club/user/3162 https://shitposter.club/users/tyreese -3163 https://shitposter.club/user/3163 https://shitposter.club/users/glen -3167 https://shitposter.club/user/3167 https://shitposter.club/users/jonny -3171 https://shitposter.club/user/3171 https://shitposter.club/users/chrishansen -3174 https://shitposter.club/user/3174 https://shitposter.club/users/usindianaffairs -3175 https://shitposter.club/user/3175 https://shitposter.club/users/cia -3225 https://shitposter.club/user/3225 https://shitposter.club/users/baconbrain -3274 https://shitposter.club/user/3274 https://shitposter.club/users/jackmcbastard -3310 https://shitposter.club/user/3310 https://shitposter.club/users/lifeprotips -3321 https://shitposter.club/user/3321 https://shitposter.club/users/nerd -3322 https://shitposter.club/user/3322 https://shitposter.club/users/flandre -3324 https://shitposter.club/user/3324 https://shitposter.club/users/kingofmars -3365 https://shitposter.club/user/3365 https://shitposter.club/users/ben -3378 https://shitposter.club/user/3378 https://shitposter.club/users/staffanb -3387 https://shitposter.club/user/3387 https://shitposter.club/users/2321 -3391 https://shitposter.club/user/3391 https://shitposter.club/users/hydris -3393 https://shitposter.club/user/3393 https://shitposter.club/users/elj -3397 https://shitposter.club/user/3397 https://shitposter.club/users/yachise -3400 https://shitposter.club/user/3400 https://shitposter.club/users/robertomangueiragrossa -3408 https://shitposter.club/user/3408 https://shitposter.club/users/danclark -3409 https://shitposter.club/user/3409 https://shitposter.club/users/erm -3441 https://shitposter.club/user/3441 https://shitposter.club/users/govspiders -3466 https://shitposter.club/user/3466 https://shitposter.club/users/malduke -3543 https://shitposter.club/user/3543 https://shitposter.club/users/testslut -3568 https://shitposter.club/user/3568 https://shitposter.club/users/grimjim -3574 https://shitposter.club/user/3574 https://shitposter.club/users/dyingrectifrice -3642 https://shitposter.club/user/3642 https://shitposter.club/users/eyepie -3699 https://shitposter.club/user/3699 https://shitposter.club/users/emiko -3713 https://shitposter.club/user/3713 https://shitposter.club/users/dex -3767 https://shitposter.club/user/3767 https://shitposter.club/users/roi -3770 https://shitposter.club/user/3770 https://shitposter.club/users/jj -3814 https://shitposter.club/user/3814 https://shitposter.club/users/why -3820 https://shitposter.club/user/3820 https://shitposter.club/users/polstar -3854 https://shitposter.club/user/3854 https://shitposter.club/users/metalhead33 -3860 https://shitposter.club/user/3860 https://shitposter.club/users/valkitty -3891 https://shitposter.club/user/3891 https://shitposter.club/users/yata -3894 https://shitposter.club/user/3894 https://shitposter.club/users/oonska -3895 https://shitposter.club/user/3895 https://shitposter.club/users/1iceloops123 -3896 https://shitposter.club/user/3896 https://shitposter.club/users/69 -3897 https://shitposter.club/user/3897 https://shitposter.club/users/bitterandrew2 -3900 https://shitposter.club/user/3900 https://shitposter.club/users/neckbolt -3904 https://shitposter.club/user/3904 https://shitposter.club/users/kommentater -3909 https://shitposter.club/user/3909 https://shitposter.club/users/bae -3911 https://shitposter.club/user/3911 https://shitposter.club/users/eternalblizzard -3913 https://shitposter.club/user/3913 https://shitposter.club/users/trevgauntlet -3915 https://shitposter.club/user/3915 https://shitposter.club/users/vriska -3952 https://shitposter.club/user/3952 https://shitposter.club/users/gethn7 -3953 https://shitposter.club/user/3953 https://shitposter.club/users/mgd -4011 https://shitposter.club/user/4011 https://shitposter.club/users/dirds -4026 https://shitposter.club/user/4026 https://shitposter.club/users/panzervoulait -4027 https://shitposter.club/user/4027 https://shitposter.club/users/clublarsh -4046 https://shitposter.club/user/4046 https://shitposter.club/users/kaz -4047 https://shitposter.club/user/4047 https://shitposter.club/users/failure -4084 https://shitposter.club/user/4084 https://shitposter.club/users/oneiorosgrip -4095 https://shitposter.club/user/4095 https://shitposter.club/users/theraveduck -4106 https://shitposter.club/user/4106 https://shitposter.club/users/gothmatix -4133 https://shitposter.club/user/4133 https://shitposter.club/users/miserablesmileface -4164 https://shitposter.club/user/4164 https://shitposter.club/users/vektg -4166 https://shitposter.club/user/4166 https://shitposter.club/users/spectrum -4179 https://shitposter.club/user/4179 https://shitposter.club/users/powerclam -4186 https://shitposter.club/user/4186 https://shitposter.club/users/madcat -4230 https://shitposter.club/user/4230 https://shitposter.club/users/nbd -4231 https://shitposter.club/user/4231 https://shitposter.club/users/triodug -4350 https://shitposter.club/user/4350 https://shitposter.club/users/dog -4389 https://shitposter.club/user/4389 https://shitposter.club/users/reissdjo -4400 https://shitposter.club/user/4400 https://shitposter.club/users/daeavorn -4401 https://shitposter.club/user/4401 https://shitposter.club/users/yourgrandmother -4414 https://shitposter.club/user/4414 https://shitposter.club/users/harmlessduck -4416 https://shitposter.club/user/4416 https://shitposter.club/users/phoenixarised -4420 https://shitposter.club/user/4420 https://shitposter.club/users/maxmustermann -4423 https://shitposter.club/user/4423 https://shitposter.club/users/tomsequitur -4425 https://shitposter.club/user/4425 https://shitposter.club/users/suityourself -4434 https://shitposter.club/user/4434 https://shitposter.club/users/gibbfm -4436 https://shitposter.club/user/4436 https://shitposter.club/users/pcachu -4440 https://shitposter.club/user/4440 https://shitposter.club/users/misspixie345 -4443 https://shitposter.club/user/4443 https://shitposter.club/users/mosley -4444 https://shitposter.club/user/4444 https://shitposter.club/users/lonewolf031 -4450 https://shitposter.club/user/4450 https://shitposter.club/users/ajr -4451 https://shitposter.club/user/4451 https://shitposter.club/users/reno -4454 https://shitposter.club/user/4454 https://shitposter.club/users/panjoozek -4457 https://shitposter.club/user/4457 https://shitposter.club/users/realpennyfortheguy -4464 https://shitposter.club/user/4464 https://shitposter.club/users/thelogiconlyzone -4467 https://shitposter.club/user/4467 https://shitposter.club/users/craig -4496 https://shitposter.club/user/4496 https://shitposter.club/users/yuiiski -4506 https://shitposter.club/user/4506 https://shitposter.club/users/robot -4556 https://shitposter.club/user/4556 https://shitposter.club/users/boozearmada -4573 https://shitposter.club/user/4573 https://shitposter.club/users/combine -4605 https://shitposter.club/user/4605 https://shitposter.club/users/ultrapageup -4627 https://shitposter.club/user/4627 https://shitposter.club/users/eris -4633 https://shitposter.club/user/4633 https://shitposter.club/users/moethirteen -4636 https://shitposter.club/user/4636 https://shitposter.club/users/quuunno -4644 https://shitposter.club/user/4644 https://shitposter.club/users/moonatdefcon -4657 https://shitposter.club/user/4657 https://shitposter.club/users/lombon -4670 https://shitposter.club/user/4670 https://shitposter.club/users/mojadam -4686 https://shitposter.club/user/4686 https://shitposter.club/users/ghofan -4690 https://shitposter.club/user/4690 https://shitposter.club/users/cameron -4708 https://shitposter.club/user/4708 https://shitposter.club/users/thevortexcoalition -4713 https://shitposter.club/user/4713 https://shitposter.club/users/rosario -4724 https://shitposter.club/user/4724 https://shitposter.club/users/datass -4759 https://shitposter.club/user/4759 https://shitposter.club/users/melancholy -4770 https://shitposter.club/user/4770 https://shitposter.club/users/boris -4773 https://shitposter.club/user/4773 https://shitposter.club/users/2dollaslices -4793 https://shitposter.club/user/4793 https://shitposter.club/users/jesus -4814 https://shitposter.club/user/4814 https://shitposter.club/users/nils -4826 https://shitposter.club/user/4826 https://shitposter.club/users/netkitteh -4887 https://shitposter.club/user/4887 https://shitposter.club/users/birch -4924 https://shitposter.club/user/4924 https://shitposter.club/users/rt -4940 https://shitposter.club/user/4940 https://shitposter.club/users/comradeagle -4943 https://shitposter.club/user/4943 https://shitposter.club/users/luciel -4950 https://shitposter.club/user/4950 https://shitposter.club/users/rob -4952 https://shitposter.club/user/4952 https://shitposter.club/users/eros -4954 https://shitposter.club/user/4954 https://shitposter.club/users/smeagledorf -4962 https://shitposter.club/user/4962 https://shitposter.club/users/zep -4982 https://shitposter.club/user/4982 https://shitposter.club/users/furaffinity -4983 https://shitposter.club/user/4983 https://shitposter.club/users/gay -4988 https://shitposter.club/user/4988 https://shitposter.club/users/leny -5000 https://shitposter.club/user/5000 https://shitposter.club/users/mrmemetic -5002 https://shitposter.club/user/5002 https://shitposter.club/users/peggle -5381 https://shitposter.club/user/5381 https://shitposter.club/users/shpuld -5440 https://shitposter.club/user/5440 https://shitposter.club/users/diana -5461 https://shitposter.club/user/5461 https://shitposter.club/users/karkat -5462 https://shitposter.club/user/5462 https://shitposter.club/users/stagparty -5494 https://shitposter.club/user/5494 https://shitposter.club/users/davestrider -5495 https://shitposter.club/user/5495 https://shitposter.club/users/fursona -5524 https://shitposter.club/user/5524 https://shitposter.club/users/jerry -5618 https://shitposter.club/user/5618 https://shitposter.club/users/moonatwork -5640 https://shitposter.club/user/5640 https://shitposter.club/users/herberthreis -5660 https://shitposter.club/user/5660 https://shitposter.club/users/dg -5681 https://shitposter.club/user/5681 https://shitposter.club/users/wakarimasen -5693 https://shitposter.club/user/5693 https://shitposter.club/users/reposterclacke -5722 https://shitposter.club/user/5722 https://shitposter.club/users/moonoffsite -5774 https://shitposter.club/user/5774 https://shitposter.club/users/figuringshitout -5826 https://shitposter.club/user/5826 https://shitposter.club/users/hckr -5875 https://shitposter.club/user/5875 https://shitposter.club/users/zero -5905 https://shitposter.club/user/5905 https://shitposter.club/users/lawyerfortheguy -5921 https://shitposter.club/user/5921 https://shitposter.club/users/dimeforthedude -5922 https://shitposter.club/user/5922 https://shitposter.club/users/tiffany -5930 https://shitposter.club/user/5930 https://shitposter.club/users/rilut -5936 https://shitposter.club/user/5936 https://shitposter.club/users/rwdigest -5941 https://shitposter.club/user/5941 https://shitposter.club/users/voidexe -6002 https://shitposter.club/user/6002 https://shitposter.club/users/kaldonia -6030 https://shitposter.club/user/6030 https://shitposter.club/users/smokeyhills -6033 https://shitposter.club/user/6033 https://shitposter.club/users/pennyforthegoy -6053 https://shitposter.club/user/6053 https://shitposter.club/users/ninjabuttocks -6057 https://shitposter.club/user/6057 https://shitposter.club/users/mrmattimation -6076 https://shitposter.club/user/6076 https://shitposter.club/users/arachnidsgrip -6086 https://shitposter.club/user/6086 https://shitposter.club/users/bogs -6114 https://shitposter.club/user/6114 https://shitposter.club/users/homph -6143 https://shitposter.club/user/6143 https://shitposter.club/users/brassrod -6144 https://shitposter.club/user/6144 https://shitposter.club/users/abnoxio -6302 https://shitposter.club/user/6302 https://shitposter.club/users/hjkhan -6317 https://shitposter.club/user/6317 https://shitposter.club/users/tasmijn -6378 https://shitposter.club/user/6378 https://shitposter.club/users/cv -6394 https://shitposter.club/user/6394 https://shitposter.club/users/exceem -6531 https://shitposter.club/user/6531 https://shitposter.club/users/thot -6533 https://shitposter.club/user/6533 https://shitposter.club/users/zenburn -6534 https://shitposter.club/user/6534 https://shitposter.club/users/supermoon -6563 https://shitposter.club/user/6563 https://shitposter.club/users/lebronjames75 -6724 https://shitposter.club/user/6724 https://shitposter.club/users/dreya -6838 https://shitposter.club/user/6838 https://shitposter.club/users/blackhole -6840 https://shitposter.club/user/6840 https://shitposter.club/users/elgatoweebee -6908 https://shitposter.club/user/6908 https://shitposter.club/users/panzerklown -6960 https://shitposter.club/user/6960 https://shitposter.club/users/hitlertheanimation -7062 https://shitposter.club/user/7062 https://shitposter.club/users/lm9 -7063 https://shitposter.club/user/7063 https://shitposter.club/users/kbb -7064 https://shitposter.club/user/7064 https://shitposter.club/users/00 -7114 https://shitposter.club/user/7114 https://shitposter.club/users/sw0rn -7197 https://shitposter.club/user/7197 https://shitposter.club/users/skelepun -7204 https://shitposter.club/user/7204 https://shitposter.club/users/segata -7205 https://shitposter.club/user/7205 https://shitposter.club/users/niggerkiller6969 -7251 https://shitposter.club/user/7251 https://shitposter.club/users/kitredgrave -7261 https://shitposter.club/user/7261 https://shitposter.club/users/letters -7292 https://shitposter.club/user/7292 https://shitposter.club/users/goatholeonmy -7295 https://shitposter.club/user/7295 https://shitposter.club/users/varondus -7335 https://shitposter.club/user/7335 https://shitposter.club/users/arsaces -7339 https://shitposter.club/user/7339 https://shitposter.club/users/nixromina -7374 https://shitposter.club/user/7374 https://shitposter.club/users/vladdo -7436 https://shitposter.club/user/7436 https://shitposter.club/users/baery -7463 https://shitposter.club/user/7463 https://shitposter.club/users/bigdikk -7543 https://shitposter.club/user/7543 https://shitposter.club/users/bijorikoraku -7573 https://shitposter.club/user/7573 https://shitposter.club/users/mithras -7602 https://shitposter.club/user/7602 https://shitposter.club/users/timiddimwit -7614 https://shitposter.club/user/7614 https://shitposter.club/users/thricebitten003 -7640 https://shitposter.club/user/7640 https://shitposter.club/users/floopfloop -7664 https://shitposter.club/user/7664 https://shitposter.club/users/otakunopico -7686 https://shitposter.club/user/7686 https://shitposter.club/users/fashygoy -7703 https://shitposter.club/user/7703 https://shitposter.club/users/anonymous -7710 https://shitposter.club/user/7710 https://shitposter.club/users/wewlad -7720 https://shitposter.club/user/7720 https://shitposter.club/users/textophile -7732 https://shitposter.club/user/7732 https://shitposter.club/users/vetforumwars -7748 https://shitposter.club/user/7748 https://shitposter.club/users/chikimonki -7751 https://shitposter.club/user/7751 https://shitposter.club/users/s3krit -7752 https://shitposter.club/user/7752 https://shitposter.club/users/valka -7753 https://shitposter.club/user/7753 https://shitposter.club/users/notksj -7775 https://shitposter.club/user/7775 https://shitposter.club/users/femacampinmate -7777 https://shitposter.club/user/7777 https://shitposter.club/users/redbayp -7809 https://shitposter.club/user/7809 https://shitposter.club/users/wayy -7826 https://shitposter.club/user/7826 https://shitposter.club/users/eliotime3000 -8015 https://shitposter.club/user/8015 https://shitposter.club/users/beingham -8031 https://shitposter.club/user/8031 https://shitposter.club/users/cyberpotato -8058 https://shitposter.club/user/8058 https://shitposter.club/users/efina -8059 https://shitposter.club/user/8059 https://shitposter.club/users/milla -8060 https://shitposter.club/user/8060 https://shitposter.club/users/caden -8061 https://shitposter.club/user/8061 https://shitposter.club/users/tiz -8072 https://shitposter.club/user/8072 https://shitposter.club/users/mikemazzone -8079 https://shitposter.club/user/8079 https://shitposter.club/users/fraudexposer -8081 https://shitposter.club/user/8081 https://shitposter.club/users/redair -8084 https://shitposter.club/user/8084 https://shitposter.club/users/jmd -8093 https://shitposter.club/user/8093 https://shitposter.club/users/linkwood -8094 https://shitposter.club/user/8094 https://shitposter.club/users/stefan -8095 https://shitposter.club/user/8095 https://shitposter.club/users/perionic -8096 https://shitposter.club/user/8096 https://shitposter.club/users/retronet -8157 https://shitposter.club/user/8157 https://shitposter.club/users/culto -8181 https://shitposter.club/user/8181 https://shitposter.club/users/extrange -8194 https://shitposter.club/user/8194 https://shitposter.club/users/daniel197047 -8220 https://shitposter.club/user/8220 https://shitposter.club/users/schnapps -8227 https://shitposter.club/user/8227 https://shitposter.club/users/anonavenger -8256 https://shitposter.club/user/8256 https://shitposter.club/users/mikaela -8261 https://shitposter.club/user/8261 https://shitposter.club/users/loki -8330 https://shitposter.club/user/8330 https://shitposter.club/users/sloan -8337 https://shitposter.club/user/8337 https://shitposter.club/users/thehifman -8363 https://shitposter.club/user/8363 https://shitposter.club/users/threetoast -8410 https://shitposter.club/user/8410 https://shitposter.club/users/daphailwhale -8429 https://shitposter.club/user/8429 https://shitposter.club/users/jakob -8430 https://shitposter.club/user/8430 https://shitposter.club/users/stephenlynx -8433 https://shitposter.club/user/8433 https://shitposter.club/users/ayoholup -8463 https://shitposter.club/user/8463 https://shitposter.club/users/loltemp -8622 https://shitposter.club/user/8622 https://shitposter.club/users/chu -8635 https://shitposter.club/user/8635 https://shitposter.club/users/bilb -8639 https://shitposter.club/user/8639 https://shitposter.club/users/www -8644 https://shitposter.club/user/8644 https://shitposter.club/users/potus -8676 https://shitposter.club/user/8676 https://shitposter.club/users/testuser124578 -8716 https://shitposter.club/user/8716 https://shitposter.club/users/kentnelida -8853 https://shitposter.club/user/8853 https://shitposter.club/users/meff -8876 https://shitposter.club/user/8876 https://shitposter.club/users/liz -8896 https://shitposter.club/user/8896 https://shitposter.club/users/anonjustice -8974 https://shitposter.club/user/8974 https://shitposter.club/users/wintertsar -9052 https://shitposter.club/user/9052 https://shitposter.club/users/nerthos -9056 https://shitposter.club/user/9056 https://shitposter.club/users/mono -9089 https://shitposter.club/user/9089 https://shitposter.club/users/taeateh -9119 https://shitposter.club/user/9119 https://shitposter.club/users/twilly999 -9140 https://shitposter.club/user/9140 https://shitposter.club/users/poorlyreported -9157 https://shitposter.club/user/9157 https://shitposter.club/users/karabiner -9164 https://shitposter.club/user/9164 https://shitposter.club/users/spaceman -9176 https://shitposter.club/user/9176 https://shitposter.club/users/dbrz -9196 https://shitposter.club/user/9196 https://shitposter.club/users/meesa -9203 https://shitposter.club/user/9203 https://shitposter.club/users/tokage -9205 https://shitposter.club/user/9205 https://shitposter.club/users/adolfhitler -9223 https://shitposter.club/user/9223 https://shitposter.club/users/homotopy -9283 https://shitposter.club/user/9283 https://shitposter.club/users/alanman -9294 https://shitposter.club/user/9294 https://shitposter.club/users/posteur -9301 https://shitposter.club/user/9301 https://shitposter.club/users/mchnem -9329 https://shitposter.club/user/9329 https://shitposter.club/users/mm -9347 https://shitposter.club/user/9347 https://shitposter.club/users/caspermag -9348 https://shitposter.club/user/9348 https://shitposter.club/users/weimerica -9396 https://shitposter.club/user/9396 https://shitposter.club/users/fl1nt -9487 https://shitposter.club/user/9487 https://shitposter.club/users/heterowhiteman -9499 https://shitposter.club/user/9499 https://shitposter.club/users/bane -9521 https://shitposter.club/user/9521 https://shitposter.club/users/luke -9522 https://shitposter.club/user/9522 https://shitposter.club/users/friendlysmoker -9563 https://shitposter.club/user/9563 https://shitposter.club/users/momo -9565 https://shitposter.club/user/9565 https://shitposter.club/users/c1tyoffl1nt1 -9567 https://shitposter.club/user/9567 https://shitposter.club/users/takao -9568 https://shitposter.club/user/9568 https://shitposter.club/users/sim -9569 https://shitposter.club/user/9569 https://shitposter.club/users/sakuya -9572 https://shitposter.club/user/9572 https://shitposter.club/users/chiruno -9573 https://shitposter.club/user/9573 https://shitposter.club/users/usercorpse -9574 https://shitposter.club/user/9574 https://shitposter.club/users/yeetniqqa -9585 https://shitposter.club/user/9585 https://shitposter.club/users/subvert -9591 https://shitposter.club/user/9591 https://shitposter.club/users/hardbass2k8 -9620 https://shitposter.club/user/9620 https://shitposter.club/users/secretsquirrel -9654 https://shitposter.club/user/9654 https://shitposter.club/users/spacemandown -9655 https://shitposter.club/user/9655 https://shitposter.club/users/neimzr4luzerz -9664 https://shitposter.club/user/9664 https://shitposter.club/users/moontest -9695 https://shitposter.club/user/9695 https://shitposter.club/users/azurerose -9701 https://shitposter.club/user/9701 https://shitposter.club/users/leroilezard -9776 https://shitposter.club/user/9776 https://shitposter.club/users/awgeezrick -9879 https://shitposter.club/user/9879 https://shitposter.club/users/terezi -9885 https://shitposter.club/user/9885 https://shitposter.club/users/johnhenry -9968 https://shitposter.club/user/9968 https://shitposter.club/users/barf -10098 https://shitposter.club/user/10098 https://shitposter.club/users/mantis -10166 https://shitposter.club/user/10166 https://shitposter.club/users/anon -10260 https://shitposter.club/user/10260 https://shitposter.club/users/sonya -10394 https://shitposter.club/user/10394 https://shitposter.club/users/sarahjeong -10660 https://shitposter.club/user/10660 https://shitposter.club/users/kkitteh -10672 https://shitposter.club/user/10672 https://shitposter.club/users/data -10832 https://shitposter.club/user/10832 https://shitposter.club/users/marin -10963 https://shitposter.club/user/10963 https://shitposter.club/users/anthony -10986 https://shitposter.club/user/10986 https://shitposter.club/users/ashdroid -11068 https://shitposter.club/user/11068 https://shitposter.club/users/yair -11231 https://shitposter.club/user/11231 https://shitposter.club/users/dean -11262 https://shitposter.club/user/11262 https://shitposter.club/users/santiesteban -11401 https://shitposter.club/user/11401 https://shitposter.club/users/hughdarrow -11514 https://shitposter.club/user/11514 https://shitposter.club/users/mil -11604 https://shitposter.club/user/11604 https://shitposter.club/users/anime -11663 https://shitposter.club/user/11663 https://shitposter.club/users/jakk -11747 https://shitposter.club/user/11747 https://shitposter.club/users/buffyfan12 -11865 https://shitposter.club/user/11865 https://shitposter.club/users/thx2037 -11960 https://shitposter.club/user/11960 https://shitposter.club/users/gargron -12000 https://shitposter.club/user/12000 https://shitposter.club/users/chc4 -12046 https://shitposter.club/user/12046 https://shitposter.club/users/sergio -12115 https://shitposter.club/user/12115 https://shitposter.club/users/gooddoge -12235 https://shitposter.club/user/12235 https://shitposter.club/users/moonrise -12367 https://shitposter.club/user/12367 https://shitposter.club/users/0xdeadbabe -12519 https://shitposter.club/user/12519 https://shitposter.club/users/jesusaur -12577 https://shitposter.club/user/12577 https://shitposter.club/users/vpsorg -12693 https://shitposter.club/user/12693 https://shitposter.club/users/gnulibs -12695 https://shitposter.club/user/12695 https://shitposter.club/users/hydra -12699 https://shitposter.club/user/12699 https://shitposter.club/users/thegoldwater -12725 https://shitposter.club/user/12725 https://shitposter.club/users/pox -12820 https://shitposter.club/user/12820 https://shitposter.club/users/charafan -12822 https://shitposter.club/user/12822 https://shitposter.club/users/fly -12826 https://shitposter.club/user/12826 https://shitposter.club/users/jay -13068 https://shitposter.club/user/13068 https://shitposter.club/users/wannabe -13442 https://shitposter.club/user/13442 https://shitposter.club/users/twitter -13476 https://shitposter.club/user/13476 https://shitposter.club/users/huefee -13590 https://shitposter.club/user/13590 https://shitposter.club/users/d3wd -13712 https://shitposter.club/user/13712 https://shitposter.club/users/sacfly -13905 https://shitposter.club/user/13905 https://shitposter.club/users/athrygg -14115 https://shitposter.club/user/14115 https://shitposter.club/users/wolf -14145 https://shitposter.club/user/14145 https://shitposter.club/users/random -14158 https://shitposter.club/user/14158 https://shitposter.club/users/dm -14217 https://shitposter.club/user/14217 https://shitposter.club/users/okux -14533 https://shitposter.club/user/14533 https://shitposter.club/users/zeno -14612 https://shitposter.club/user/14612 https://shitposter.club/users/jk -14638 https://shitposter.club/user/14638 https://shitposter.club/users/grindecologist -14767 https://shitposter.club/user/14767 https://shitposter.club/users/skullum -14903 https://shitposter.club/user/14903 https://shitposter.club/users/tomey -14972 https://shitposter.club/user/14972 https://shitposter.club/users/uramekus -15044 https://shitposter.club/user/15044 https://shitposter.club/users/harlan -15118 https://shitposter.club/user/15118 https://shitposter.club/users/arash -15236 https://shitposter.club/user/15236 https://shitposter.club/users/coreilly -15371 https://shitposter.club/user/15371 https://shitposter.club/users/thisisnotanime -15416 https://shitposter.club/user/15416 https://shitposter.club/users/cg -15439 https://shitposter.club/user/15439 https://shitposter.club/users/wareya -15496 https://shitposter.club/user/15496 https://shitposter.club/users/auraninanettaadriana -15557 https://shitposter.club/user/15557 https://shitposter.club/users/dechi -15575 https://shitposter.club/user/15575 https://shitposter.club/users/vikohmeilaty -15578 https://shitposter.club/user/15578 https://shitposter.club/users/vikohsevmarmila -15581 https://shitposter.club/user/15581 https://shitposter.club/users/vikohalvianti -15587 https://shitposter.club/user/15587 https://shitposter.club/users/patriciamichelletangkangentot -15635 https://shitposter.club/user/15635 https://shitposter.club/users/novichok -16492 https://shitposter.club/user/16492 https://shitposter.club/users/oosh -16752 https://shitposter.club/user/16752 https://shitposter.club/users/floraplus -17083 https://shitposter.club/user/17083 https://shitposter.club/users/popeyethecunt -17319 https://shitposter.club/user/17319 https://shitposter.club/users/dctf -17581 https://shitposter.club/user/17581 https://shitposter.club/users/chriztheanvill -18540 https://shitposter.club/user/18540 https://shitposter.club/users/sabahsyria -18716 https://shitposter.club/user/18716 https://shitposter.club/users/dumbbabby -18855 https://shitposter.club/user/18855 https://shitposter.club/users/derpderpderp -19068 https://shitposter.club/user/19068 https://shitposter.club/users/ster -19095 https://shitposter.club/user/19095 https://shitposter.club/users/cajoh -19124 https://shitposter.club/user/19124 https://shitposter.club/users/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -19257 https://shitposter.club/user/19257 https://shitposter.club/users/friskan -19285 https://shitposter.club/user/19285 https://shitposter.club/users/zeo -19593 https://shitposter.club/user/19593 https://shitposter.club/users/akater -19649 https://shitposter.club/user/19649 https://shitposter.club/users/wololo -20046 https://shitposter.club/user/20046 https://shitposter.club/users/fujimura -20073 https://shitposter.club/user/20073 https://shitposter.club/users/jakethesnake -20267 https://shitposter.club/user/20267 https://shitposter.club/users/moontest2 -20426 https://shitposter.club/user/20426 https://shitposter.club/users/perspicacious01 -20651 https://shitposter.club/user/20651 https://shitposter.club/users/trivia -20686 https://shitposter.club/user/20686 https://shitposter.club/users/yovinnie -20759 https://shitposter.club/user/20759 https://shitposter.club/users/roytam -21026 https://shitposter.club/user/21026 https://shitposter.club/users/shakes31471 -21667 https://shitposter.club/user/21667 https://shitposter.club/users/bdjnk -21787 https://shitposter.club/user/21787 https://shitposter.club/users/cutscenes -21920 https://shitposter.club/user/21920 https://shitposter.club/users/rwdsaboo -21925 https://shitposter.club/user/21925 https://shitposter.club/users/mapomme -21934 https://shitposter.club/user/21934 https://shitposter.club/users/satori -22018 https://shitposter.club/user/22018 https://shitposter.club/users/vertu -22080 https://shitposter.club/user/22080 https://shitposter.club/users/raven -22177 https://shitposter.club/user/22177 https://shitposter.club/users/boa -22179 https://shitposter.club/user/22179 https://shitposter.club/users/tezcat -22230 https://shitposter.club/user/22230 https://shitposter.club/users/alex -22323 https://shitposter.club/user/22323 https://shitposter.club/users/tehsvin -22514 https://shitposter.club/user/22514 https://shitposter.club/users/shitehoney -22564 https://shitposter.club/user/22564 https://shitposter.club/users/becauseimgray -22706 https://shitposter.club/user/22706 https://shitposter.club/users/nimda -22883 https://shitposter.club/user/22883 https://shitposter.club/users/noflashfirm -22917 https://shitposter.club/user/22917 https://shitposter.club/users/silvertube -23288 https://shitposter.club/user/23288 https://shitposter.club/users/monad -23396 https://shitposter.club/user/23396 https://shitposter.club/users/mom -23576 https://shitposter.club/user/23576 https://shitposter.club/users/ntc -23735 https://shitposter.club/user/23735 https://shitposter.club/users/betobear730 -23872 https://shitposter.club/user/23872 https://shitposter.club/users/mackatron -23909 https://shitposter.club/user/23909 https://shitposter.club/users/johnnycumby -24048 https://shitposter.club/user/24048 https://shitposter.club/users/buttballoon -24247 https://shitposter.club/user/24247 https://shitposter.club/users/hoppeoffamychoppa -24370 https://shitposter.club/user/24370 https://shitposter.club/users/superjey -24519 https://shitposter.club/user/24519 https://shitposter.club/users/crufro -24550 https://shitposter.club/user/24550 https://shitposter.club/users/baseddrworm -24794 https://shitposter.club/user/24794 https://shitposter.club/users/marko -24893 https://shitposter.club/user/24893 https://shitposter.club/users/sweetnote -25222 https://shitposter.club/user/25222 https://shitposter.club/users/stiribune -25519 https://shitposter.club/user/25519 https://shitposter.club/users/taco -25726 https://shitposter.club/user/25726 https://shitposter.club/users/morbius -26103 https://shitposter.club/user/26103 https://shitposter.club/users/moonmanatgscon -26486 https://shitposter.club/user/26486 https://shitposter.club/users/lon -26603 https://shitposter.club/user/26603 https://shitposter.club/users/cj -26712 https://shitposter.club/user/26712 https://shitposter.club/users/existentialbro -26830 https://shitposter.club/user/26830 https://shitposter.club/users/weddingtorontolimo -26858 https://shitposter.club/user/26858 https://shitposter.club/users/hoskayne -27459 https://shitposter.club/user/27459 https://shitposter.club/users/dirb -27464 https://shitposter.club/user/27464 https://shitposter.club/users/assalchemy -27628 https://shitposter.club/user/27628 https://shitposter.club/users/walt1999walt -28122 https://shitposter.club/user/28122 https://shitposter.club/users/h8 -28526 https://shitposter.club/user/28526 https://shitposter.club/users/mariano -28601 https://shitposter.club/user/28601 https://shitposter.club/users/robofortune -28795 https://shitposter.club/user/28795 https://shitposter.club/users/falco -28892 https://shitposter.club/user/28892 https://shitposter.club/users/batemanboogers -28985 https://shitposter.club/user/28985 https://shitposter.club/users/pasty -28989 https://shitposter.club/user/28989 https://shitposter.club/users/podrickpaddington -29181 https://shitposter.club/user/29181 https://shitposter.club/users/ganix -29182 https://shitposter.club/user/29182 https://shitposter.club/users/marsprobe -29185 https://shitposter.club/user/29185 https://shitposter.club/users/tealdear -29251 https://shitposter.club/user/29251 https://shitposter.club/users/tico -29686 https://shitposter.club/user/29686 https://shitposter.club/users/pooryorick -29708 https://shitposter.club/user/29708 https://shitposter.club/users/vfp -29825 https://shitposter.club/user/29825 https://shitposter.club/users/camby -29856 https://shitposter.club/user/29856 https://shitposter.club/users/aqours -29857 https://shitposter.club/user/29857 https://shitposter.club/users/gaygrandma -29858 https://shitposter.club/user/29858 https://shitposter.club/users/zarya -29859 https://shitposter.club/user/29859 https://shitposter.club/users/ene -29969 https://shitposter.club/user/29969 https://shitposter.club/users/aw -30066 https://shitposter.club/user/30066 https://shitposter.club/users/oxenfree -30080 https://shitposter.club/user/30080 https://shitposter.club/users/roko -30202 https://shitposter.club/user/30202 https://shitposter.club/users/doingsomeposts -30241 https://shitposter.club/user/30241 https://shitposter.club/users/archaeme -30243 https://shitposter.club/user/30243 https://shitposter.club/users/zenpukku -30293 https://shitposter.club/user/30293 https://shitposter.club/users/styromaniac -30720 https://shitposter.club/user/30720 https://shitposter.club/users/thatbrickster -30748 https://shitposter.club/user/30748 https://shitposter.club/users/ryan -31040 https://shitposter.club/user/31040 https://shitposter.club/users/me -31101 https://shitposter.club/user/31101 https://shitposter.club/users/louiefillet -31132 https://shitposter.club/user/31132 https://shitposter.club/users/ok -31339 https://shitposter.club/user/31339 https://shitposter.club/users/alucard -31353 https://shitposter.club/user/31353 https://shitposter.club/users/spcnepfag -31536 https://shitposter.club/user/31536 https://shitposter.club/users/dmgctrl -31538 https://shitposter.club/user/31538 https://shitposter.club/users/lueyee -31714 https://shitposter.club/user/31714 https://shitposter.club/users/comstock -31832 https://shitposter.club/user/31832 https://shitposter.club/users/anotherwriter -31836 https://shitposter.club/user/31836 https://shitposter.club/users/luminous -31876 https://shitposter.club/user/31876 https://shitposter.club/users/toxic -31892 https://shitposter.club/user/31892 https://shitposter.club/users/soulkisser -31923 https://shitposter.club/user/31923 https://shitposter.club/users/piyush -31959 https://shitposter.club/user/31959 https://shitposter.club/users/lightlysalted -31973 https://shitposter.club/user/31973 https://shitposter.club/users/abr21 -31997 https://shitposter.club/user/31997 https://shitposter.club/users/demo -32079 https://shitposter.club/user/32079 https://shitposter.club/users/totallynotdogjaw -32123 https://shitposter.club/user/32123 https://shitposter.club/users/ctrlcreepbot -32158 https://shitposter.club/user/32158 https://shitposter.club/users/ben666 -32188 https://shitposter.club/user/32188 https://shitposter.club/users/polenstronkest -32201 https://shitposter.club/user/32201 https://shitposter.club/users/filthymcgarbage -32314 https://shitposter.club/user/32314 https://shitposter.club/users/notjeff -32324 https://shitposter.club/user/32324 https://shitposter.club/users/tanteifaust -32326 https://shitposter.club/user/32326 https://shitposter.club/users/vimtingu -32329 https://shitposter.club/user/32329 https://shitposter.club/users/dolus -32343 https://shitposter.club/user/32343 https://shitposter.club/users/sonicdreadzhog -32383 https://shitposter.club/user/32383 https://shitposter.club/users/nignog -32386 https://shitposter.club/user/32386 https://shitposter.club/users/owl -32390 https://shitposter.club/user/32390 https://shitposter.club/users/yoroshiku -32444 https://shitposter.club/user/32444 https://shitposter.club/users/chelzgrimace0 -32460 https://shitposter.club/user/32460 https://shitposter.club/users/mei -32466 https://shitposter.club/user/32466 https://shitposter.club/users/demigodloligagger -32690 https://shitposter.club/user/32690 https://shitposter.club/users/camoceltic -32736 https://shitposter.club/user/32736 https://shitposter.club/users/flamingkazin -33044 https://shitposter.club/user/33044 https://shitposter.club/users/root -33191 https://shitposter.club/user/33191 https://shitposter.club/users/949f45ac -33422 https://shitposter.club/user/33422 https://shitposter.club/users/surge -33683 https://shitposter.club/user/33683 https://shitposter.club/users/dielan -33789 https://shitposter.club/user/33789 https://shitposter.club/users/fickle -34011 https://shitposter.club/user/34011 https://shitposter.club/users/nurnymurse -34442 https://shitposter.club/user/34442 https://shitposter.club/users/ragecage -34659 https://shitposter.club/user/34659 https://shitposter.club/users/fuckinghackers -35102 https://shitposter.club/user/35102 https://shitposter.club/users/robotx -35167 https://shitposter.club/user/35167 https://shitposter.club/users/sojourner -35180 https://shitposter.club/user/35180 https://shitposter.club/users/dogjaw -35198 https://shitposter.club/user/35198 https://shitposter.club/users/radicooloperative -35340 https://shitposter.club/user/35340 https://shitposter.club/users/sn -35402 https://shitposter.club/user/35402 https://shitposter.club/users/demifiend -35510 https://shitposter.club/user/35510 https://shitposter.club/users/tempo -35623 https://shitposter.club/user/35623 https://shitposter.club/users/lphovercraft -35631 https://shitposter.club/user/35631 https://shitposter.club/users/realhitler -35775 https://shitposter.club/user/35775 https://shitposter.club/users/kian -35930 https://shitposter.club/user/35930 https://shitposter.club/users/jjcarter21r -36077 https://shitposter.club/user/36077 https://shitposter.club/users/wehateweebs -36115 https://shitposter.club/user/36115 https://shitposter.club/users/theplaguedr -36172 https://shitposter.club/user/36172 https://shitposter.club/users/surfinbird -36381 https://shitposter.club/user/36381 https://shitposter.club/users/sireebob -36384 https://shitposter.club/user/36384 https://shitposter.club/users/127001 -36717 https://shitposter.club/user/36717 https://shitposter.club/users/justaghost -36821 https://shitposter.club/user/36821 https://shitposter.club/users/shadow -36888 https://shitposter.club/user/36888 https://shitposter.club/users/moe -37046 https://shitposter.club/user/37046 https://shitposter.club/users/moe123 -37300 https://shitposter.club/user/37300 https://shitposter.club/users/lulinvega -37326 https://shitposter.club/user/37326 https://shitposter.club/users/haisenberg -37954 https://shitposter.club/user/37954 https://shitposter.club/users/kg -38017 https://shitposter.club/user/38017 https://shitposter.club/users/yvvu2 -38219 https://shitposter.club/user/38219 https://shitposter.club/users/spooks -38322 https://shitposter.club/user/38322 https://shitposter.club/users/invlpg -38364 https://shitposter.club/user/38364 https://shitposter.club/users/krochpuncher -38382 https://shitposter.club/user/38382 https://shitposter.club/users/artifaxxs -38482 https://shitposter.club/user/38482 https://shitposter.club/users/windclock -38491 https://shitposter.club/user/38491 https://shitposter.club/users/lobster -38618 https://shitposter.club/user/38618 https://shitposter.club/users/birdway -38733 https://shitposter.club/user/38733 https://shitposter.club/users/sulter -38796 https://shitposter.club/user/38796 https://shitposter.club/users/zika -38979 https://shitposter.club/user/38979 https://shitposter.club/users/manghoti -39546 https://shitposter.club/user/39546 https://shitposter.club/users/zlowiec -40673 https://shitposter.club/user/40673 https://shitposter.club/users/aaa -41496 https://shitposter.club/user/41496 https://shitposter.club/users/polywuf -41717 https://shitposter.club/user/41717 https://shitposter.club/users/shirtlords -41735 https://shitposter.club/user/41735 https://shitposter.club/users/vced01tbkrcy -41780 https://shitposter.club/user/41780 https://shitposter.club/users/reggiehathaway -41786 https://shitposter.club/user/41786 https://shitposter.club/users/parisc -41794 https://shitposter.club/user/41794 https://shitposter.club/users/nutjin -41801 https://shitposter.club/user/41801 https://shitposter.club/users/angelus -41836 https://shitposter.club/user/41836 https://shitposter.club/users/big -41985 https://shitposter.club/user/41985 https://shitposter.club/users/wario -42081 https://shitposter.club/user/42081 https://shitposter.club/users/animesniffer -42098 https://shitposter.club/user/42098 https://shitposter.club/users/yappariesaka -42115 https://shitposter.club/user/42115 https://shitposter.club/users/stjude -42120 https://shitposter.club/user/42120 https://shitposter.club/users/gaiusgermanicus -42260 https://shitposter.club/user/42260 https://shitposter.club/users/loveliestamie -42347 https://shitposter.club/user/42347 https://shitposter.club/users/ginz -42354 https://shitposter.club/user/42354 https://shitposter.club/users/antiracist -42363 https://shitposter.club/user/42363 https://shitposter.club/users/matthewmaci -42472 https://shitposter.club/user/42472 https://shitposter.club/users/rubberback -42927 https://shitposter.club/user/42927 https://shitposter.club/users/hatexgroup -42968 https://shitposter.club/user/42968 https://shitposter.club/users/gloriouscarwash -42997 https://shitposter.club/user/42997 https://shitposter.club/users/yayo -43012 https://shitposter.club/user/43012 https://shitposter.club/users/robloxhentie88 -43092 https://shitposter.club/user/43092 https://shitposter.club/users/haspop -43167 https://shitposter.club/user/43167 https://shitposter.club/users/walmartsupremacy -43268 https://shitposter.club/user/43268 https://shitposter.club/users/golpollo -43272 https://shitposter.club/user/43272 https://shitposter.club/users/rrx -43276 https://shitposter.club/user/43276 https://shitposter.club/users/rusty -43336 https://shitposter.club/user/43336 https://shitposter.club/users/caesarcrab -43384 https://shitposter.club/user/43384 https://shitposter.club/users/yap -43440 https://shitposter.club/user/43440 https://shitposter.club/users/triplekmafia -43443 https://shitposter.club/user/43443 https://shitposter.club/users/antonnizhny -43583 https://shitposter.club/user/43583 https://shitposter.club/users/cajon -43744 https://shitposter.club/user/43744 https://shitposter.club/users/dixieconstruct -43764 https://shitposter.club/user/43764 https://shitposter.club/users/pepsicanex -43776 https://shitposter.club/user/43776 https://shitposter.club/users/deraristokraut -43779 https://shitposter.club/user/43779 https://shitposter.club/users/red -43783 https://shitposter.club/user/43783 https://shitposter.club/users/boxiekun -43791 https://shitposter.club/user/43791 https://shitposter.club/users/emilia -43866 https://shitposter.club/user/43866 https://shitposter.club/users/qwerty -44035 https://shitposter.club/user/44035 https://shitposter.club/users/aspirator -44303 https://shitposter.club/user/44303 https://shitposter.club/users/cereal -44541 https://shitposter.club/user/44541 https://shitposter.club/users/animerapist -44666 https://shitposter.club/user/44666 https://shitposter.club/users/za -44681 https://shitposter.club/user/44681 https://shitposter.club/users/suicidal -44751 https://shitposter.club/user/44751 https://shitposter.club/users/illuminatoskeletono -45219 https://shitposter.club/user/45219 https://shitposter.club/users/sierrakilobravo -45312 https://shitposter.club/user/45312 https://shitposter.club/users/thufir -45467 https://shitposter.club/user/45467 https://shitposter.club/users/fermtnzheavy -45873 https://shitposter.club/user/45873 https://shitposter.club/users/jector -46020 https://shitposter.club/user/46020 https://shitposter.club/users/shitlordsupreme -46273 https://shitposter.club/user/46273 https://shitposter.club/users/y88 -46347 https://shitposter.club/user/46347 https://shitposter.club/users/catk111er -46752 https://shitposter.club/user/46752 https://shitposter.club/users/pr333 -46808 https://shitposter.club/user/46808 https://shitposter.club/users/catkittens -47284 https://shitposter.club/user/47284 https://shitposter.club/users/123lareputarana -47359 https://shitposter.club/user/47359 https://shitposter.club/users/traplordegen -47368 https://shitposter.club/user/47368 https://shitposter.club/users/norm -47569 https://shitposter.club/user/47569 https://shitposter.club/users/grass -47770 https://shitposter.club/user/47770 https://shitposter.club/users/realdavidreed -47943 https://shitposter.club/user/47943 https://shitposter.club/users/watch -48103 https://shitposter.club/user/48103 https://shitposter.club/users/bagel -48130 https://shitposter.club/user/48130 https://shitposter.club/users/stochastix -48329 https://shitposter.club/user/48329 https://shitposter.club/users/mewlan -48389 https://shitposter.club/user/48389 https://shitposter.club/users/andilinks -48440 https://shitposter.club/user/48440 https://shitposter.club/users/ao -48495 https://shitposter.club/user/48495 https://shitposter.club/users/futuredogefm -48496 https://shitposter.club/user/48496 https://shitposter.club/users/harold -48611 https://shitposter.club/user/48611 https://shitposter.club/users/hattiecat -48712 https://shitposter.club/user/48712 https://shitposter.club/users/mrmcmayhem -49233 https://shitposter.club/user/49233 https://shitposter.club/users/sushipantsu -49746 https://shitposter.club/user/49746 https://shitposter.club/users/siedge -49752 https://shitposter.club/user/49752 https://shitposter.club/users/honorrollcc -49829 https://shitposter.club/user/49829 https://shitposter.club/users/denza252 -49856 https://shitposter.club/user/49856 https://shitposter.club/users/web -49863 https://shitposter.club/user/49863 https://shitposter.club/users/donglord -49933 https://shitposter.club/user/49933 https://shitposter.club/users/chargedaffaires -50092 https://shitposter.club/user/50092 https://shitposter.club/users/joy -50183 https://shitposter.club/user/50183 https://shitposter.club/users/gravityfailsme -50216 https://shitposter.club/user/50216 https://shitposter.club/users/installgen2 -50331 https://shitposter.club/user/50331 https://shitposter.club/users/robbie -50332 https://shitposter.club/user/50332 https://shitposter.club/users/xirus11 -50339 https://shitposter.club/user/50339 https://shitposter.club/users/glendo -50340 https://shitposter.club/user/50340 https://shitposter.club/users/minus2 -51031 https://shitposter.club/user/51031 https://shitposter.club/users/kekmeister -51033 https://shitposter.club/user/51033 https://shitposter.club/users/akitosenshi -51037 https://shitposter.club/user/51037 https://shitposter.club/users/ganjabots -51337 https://shitposter.club/user/51337 https://shitposter.club/users/sadanimeman -51693 https://shitposter.club/user/51693 https://shitposter.club/users/iamfubar -51699 https://shitposter.club/user/51699 https://shitposter.club/users/honk -51732 https://shitposter.club/user/51732 https://shitposter.club/users/trash -51733 https://shitposter.club/user/51733 https://shitposter.club/users/normsndy -51827 https://shitposter.club/user/51827 https://shitposter.club/users/zeppy -52063 https://shitposter.club/user/52063 https://shitposter.club/users/anomaleon -52122 https://shitposter.club/user/52122 https://shitposter.club/users/huh -52172 https://shitposter.club/user/52172 https://shitposter.club/users/erzaknightfr -52276 https://shitposter.club/user/52276 https://shitposter.club/users/antasmeme -52457 https://shitposter.club/user/52457 https://shitposter.club/users/girl -52906 https://shitposter.club/user/52906 https://shitposter.club/users/threaddotrun -53474 https://shitposter.club/user/53474 https://shitposter.club/users/starz0r -53716 https://shitposter.club/user/53716 https://shitposter.club/users/yoyo -53967 https://shitposter.club/user/53967 https://shitposter.club/users/sebas -54382 https://shitposter.club/user/54382 https://shitposter.club/users/thndr -54503 https://shitposter.club/user/54503 https://shitposter.club/users/xenonman -54700 https://shitposter.club/user/54700 https://shitposter.club/users/crewofweebs -54831 https://shitposter.club/user/54831 https://shitposter.club/users/gutfuckllc -54859 https://shitposter.club/user/54859 https://shitposter.club/users/zeptat -54860 https://shitposter.club/user/54860 https://shitposter.club/users/zeptar -54876 https://shitposter.club/user/54876 https://shitposter.club/users/vf -55355 https://shitposter.club/user/55355 https://shitposter.club/users/arilando -55371 https://shitposter.club/user/55371 https://shitposter.club/users/deanberryministry -55616 https://shitposter.club/user/55616 https://shitposter.club/users/fatma -55866 https://shitposter.club/user/55866 https://shitposter.club/users/rice -56213 https://shitposter.club/user/56213 https://shitposter.club/users/atdirb -56789 https://shitposter.club/user/56789 https://shitposter.club/users/elshibes -57573 https://shitposter.club/user/57573 https://shitposter.club/users/cyberfreedom -57627 https://shitposter.club/user/57627 https://shitposter.club/users/asdf -57700 https://shitposter.club/user/57700 https://shitposter.club/users/awl -57958 https://shitposter.club/user/57958 https://shitposter.club/users/shitlord -58248 https://shitposter.club/user/58248 https://shitposter.club/users/johnnyneptune -58348 https://shitposter.club/user/58348 https://shitposter.club/users/littleman -58755 https://shitposter.club/user/58755 https://shitposter.club/users/loke -58802 https://shitposter.club/user/58802 https://shitposter.club/users/mysize69 -58859 https://shitposter.club/user/58859 https://shitposter.club/users/crablettes -58862 https://shitposter.club/user/58862 https://shitposter.club/users/fleshlightme -59088 https://shitposter.club/user/59088 https://shitposter.club/users/2rude -59930 https://shitposter.club/user/59930 https://shitposter.club/users/gonk -59955 https://shitposter.club/user/59955 https://shitposter.club/users/squidink -60066 https://shitposter.club/user/60066 https://shitposter.club/users/llxyo -60185 https://shitposter.club/user/60185 https://shitposter.club/users/scrawls -60544 https://shitposter.club/user/60544 https://shitposter.club/users/sigma -60790 https://shitposter.club/user/60790 https://shitposter.club/users/therealkayne -60794 https://shitposter.club/user/60794 https://shitposter.club/users/nanex -61124 https://shitposter.club/user/61124 https://shitposter.club/users/ejs -61307 https://shitposter.club/user/61307 https://shitposter.club/users/skeet -61456 https://shitposter.club/user/61456 https://shitposter.club/users/agentorange -61646 https://shitposter.club/user/61646 https://shitposter.club/users/toad -61652 https://shitposter.club/user/61652 https://shitposter.club/users/kuuomena -61767 https://shitposter.club/user/61767 https://shitposter.club/users/coolboymew -61770 https://shitposter.club/user/61770 https://shitposter.club/users/4fl0wn -61782 https://shitposter.club/user/61782 https://shitposter.club/users/borzoi -61839 https://shitposter.club/user/61839 https://shitposter.club/users/chazcon -61923 https://shitposter.club/user/61923 https://shitposter.club/users/tharsis -62000 https://shitposter.club/user/62000 https://shitposter.club/users/redboooook -62134 https://shitposter.club/user/62134 https://shitposter.club/users/aven -62194 https://shitposter.club/user/62194 https://shitposter.club/users/haydenjones -64293 https://shitposter.club/user/64293 https://shitposter.club/users/yoongi -64357 https://shitposter.club/user/64357 https://shitposter.club/users/cow2001 -64605 https://shitposter.club/user/64605 https://shitposter.club/users/tidux -64672 https://shitposter.club/user/64672 https://shitposter.club/users/d4klutz -64681 https://shitposter.club/user/64681 https://shitposter.club/users/nucleasthete -64727 https://shitposter.club/user/64727 https://shitposter.club/users/hurley -64748 https://shitposter.club/user/64748 https://shitposter.club/users/drgutfuckllc -64759 https://shitposter.club/user/64759 https://shitposter.club/users/0x68756973 -64882 https://shitposter.club/user/64882 https://shitposter.club/users/night -65019 https://shitposter.club/user/65019 https://shitposter.club/users/macgirvin -65080 https://shitposter.club/user/65080 https://shitposter.club/users/jeremiah -65083 https://shitposter.club/user/65083 https://shitposter.club/users/lawlcat -65087 https://shitposter.club/user/65087 https://shitposter.club/users/trippinkitty420 -65330 https://shitposter.club/user/65330 https://shitposter.club/users/leibwiht -65350 https://shitposter.club/user/65350 https://shitposter.club/users/nagiept -65532 https://shitposter.club/user/65532 https://shitposter.club/users/corzetan -66560 https://shitposter.club/user/66560 https://shitposter.club/users/footkage -66562 https://shitposter.club/user/66562 https://shitposter.club/users/pdpineapple -66709 https://shitposter.club/user/66709 https://shitposter.club/users/nigger -66897 https://shitposter.club/user/66897 https://shitposter.club/users/djzep -67554 https://shitposter.club/user/67554 https://shitposter.club/users/linuxsocist -68329 https://shitposter.club/user/68329 https://shitposter.club/users/fris -68895 https://shitposter.club/user/68895 https://shitposter.club/users/nobodyeverywhere -69714 https://shitposter.club/user/69714 https://shitposter.club/users/3000iq -69906 https://shitposter.club/user/69906 https://shitposter.club/users/trustandsaftey -70237 https://shitposter.club/user/70237 https://shitposter.club/users/pd -70249 https://shitposter.club/user/70249 https://shitposter.club/users/markm447 -70798 https://shitposter.club/user/70798 https://shitposter.club/users/sleepfight3r -71463 https://shitposter.club/user/71463 https://shitposter.club/users/jello -71487 https://shitposter.club/user/71487 https://shitposter.club/users/canonicalbrud -71511 https://shitposter.club/user/71511 https://shitposter.club/users/tahu -71605 https://shitposter.club/user/71605 https://shitposter.club/users/noisepollution -71642 https://shitposter.club/user/71642 https://shitposter.club/users/nekolover -72807 https://shitposter.club/user/72807 https://shitposter.club/users/hiddengabber -72824 https://shitposter.club/user/72824 https://shitposter.club/users/oversaturation -72842 https://shitposter.club/user/72842 https://shitposter.club/users/uh -72864 https://shitposter.club/user/72864 https://shitposter.club/users/iajasom -73079 https://shitposter.club/user/73079 https://shitposter.club/users/thunder -73228 https://shitposter.club/user/73228 https://shitposter.club/users/makin -73386 https://shitposter.club/user/73386 https://shitposter.club/users/nevergofullweev -73642 https://shitposter.club/user/73642 https://shitposter.club/users/uxredbyte -73920 https://shitposter.club/user/73920 https://shitposter.club/users/billadoid -73987 https://shitposter.club/user/73987 https://shitposter.club/users/tuturu -74440 https://shitposter.club/user/74440 https://shitposter.club/users/pennyfortheguy -74699 https://shitposter.club/user/74699 https://shitposter.club/users/pururu -74818 https://shitposter.club/user/74818 https://shitposter.club/users/mikem -74940 https://shitposter.club/user/74940 https://shitposter.club/users/undeadmockingbird -75019 https://shitposter.club/user/75019 https://shitposter.club/users/spot -75051 https://shitposter.club/user/75051 https://shitposter.club/users/veruune -75147 https://shitposter.club/user/75147 https://shitposter.club/users/millysoose -75390 https://shitposter.club/user/75390 https://shitposter.club/users/onyxxgoodmann -75534 https://shitposter.club/user/75534 https://shitposter.club/users/voxumbra -75823 https://shitposter.club/user/75823 https://shitposter.club/users/kvazarig -75893 https://shitposter.club/user/75893 https://shitposter.club/users/cobodo -76045 https://shitposter.club/user/76045 https://shitposter.club/users/enkidoodle -76090 https://shitposter.club/user/76090 https://shitposter.club/users/judasdervierte -76309 https://shitposter.club/user/76309 https://shitposter.club/users/itsale -76353 https://shitposter.club/user/76353 https://shitposter.club/users/drump -76858 https://shitposter.club/user/76858 https://shitposter.club/users/gudgames -76890 https://shitposter.club/user/76890 https://shitposter.club/users/yomama -77082 https://shitposter.club/user/77082 https://shitposter.club/users/nowayinhell -78315 https://shitposter.club/user/78315 https://shitposter.club/users/zp -78737 https://shitposter.club/user/78737 https://shitposter.club/users/fr -79635 https://shitposter.club/user/79635 https://shitposter.club/users/fl0wnspc -81502 https://shitposter.club/user/81502 https://shitposter.club/users/tester2 -- cgit v1.2.3 From 7057891db649e1a72abfda13418d8c4bddd4ec92 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 31 Jan 2019 18:18:20 +0300 Subject: Make rich media support toggleable --- lib/pleroma/web/rich_media/helpers.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 71fdddef9..44e876777 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -7,7 +7,8 @@ defmodule Pleroma.Web.RichMedia.Helpers do alias Pleroma.Web.RichMedia.Parser def fetch_data_for_activity(%Activity{} = activity) do - with %Object{} = object <- Object.normalize(activity.data["object"]), + with true <- Pleroma.Config.get([:rich_media, :enabled], true), + %Object{} = object <- Object.normalize(activity.data["object"]), {:ok, page_url} <- HTML.extract_first_external_url(object, object.data["content"]), {:ok, rich_media} <- Parser.parse(page_url) do %{page_url: page_url, rich_media: rich_media} -- cgit v1.2.3 From dafb6f0b5efac3997080f6b164dfb35515f31b24 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Thu, 31 Jan 2019 16:03:56 +0000 Subject: rich media: parser: reject OGP fields we cannot safely process --- lib/pleroma/web/rich_media/parser.ex | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index e67ecc47d..b33411cc7 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -30,7 +30,7 @@ defmodule Pleroma.Web.RichMedia.Parser do try do {:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url, [], adapter: [pool: :media]) - html |> maybe_parse() |> get_parsed_data() + html |> maybe_parse() |> clean_parsed_data() |> check_parsed_data() rescue e -> {:error, "Parsing error: #{inspect(e)}"} @@ -46,11 +46,31 @@ defmodule Pleroma.Web.RichMedia.Parser do end) end - defp get_parsed_data(%{title: title} = data) when is_binary(title) and byte_size(title) > 0 do + defp check_parsed_data(%{title: title} = data) when is_binary(title) and byte_size(title) > 0 do {:ok, data} end - defp get_parsed_data(data) do + defp check_parsed_data(data) do {:error, "Found metadata was invalid or incomplete: #{inspect(data)}"} end + + defp string_is_valid_unicode(data) do + data + |> :unicode.characters_to_binary() + |> clean_string() + end + + defp clean_string({:error, _, _}), do: {:error, "Invalid data"} + defp clean_string(data), do: {:ok, data} + + defp clean_parsed_data(data) do + data + |> Enum.reject(fn {_, val} -> + case string_is_valid_unicode(val) do + {:ok, _} -> false + _ -> true + end + end) + |> Map.new() + end end -- cgit v1.2.3 From 46dba03098b2646fbfb47ccb17261221c9c26f11 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Thu, 31 Jan 2019 16:19:31 +0000 Subject: rich media: parser: only try to validate strings, not numbers (OEmbed) --- lib/pleroma/web/rich_media/parser.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index b33411cc7..32dec9887 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -54,12 +54,14 @@ defmodule Pleroma.Web.RichMedia.Parser do {:error, "Found metadata was invalid or incomplete: #{inspect(data)}"} end - defp string_is_valid_unicode(data) do + defp string_is_valid_unicode(data) when is_binary(data) do data |> :unicode.characters_to_binary() |> clean_string() end + defp string_is_valid_unicode(data), do: {:ok, data} + defp clean_string({:error, _, _}), do: {:error, "Invalid data"} defp clean_string(data), do: {:ok, data} -- cgit v1.2.3 From 308b35ebe2f2062b87a5d7703df8ab5b1210d9c8 Mon Sep 17 00:00:00 2001 From: href Date: Thu, 31 Jan 2019 18:07:46 +0100 Subject: User.follow_all: ensure its stays unique --- lib/pleroma/user.ex | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 60d1d4811..33630ac7c 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -315,7 +315,16 @@ defmodule Pleroma.User do q = from(u in User, where: u.id == ^follower.id, - update: [set: [following: fragment("array_cat(?, ?)", u.following, ^followed_addresses)]] + update: [ + set: [ + following: + fragment( + "array(select distinct unnest (array_cat(?, ?)))", + u.following, + ^followed_addresses + ) + ] + ] ) {1, [follower]} = Repo.update_all(q, [], returning: true) -- cgit v1.2.3 From b19b4f85376f6bad33bb37b1624f45dbd502bfda Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 31 Jan 2019 20:02:08 +0100 Subject: Remove default value for rich media. Setting it to true will actually override a 'false' set before. --- lib/pleroma/web/rich_media/helpers.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 44e876777..521fa7ee0 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.RichMedia.Helpers do alias Pleroma.Web.RichMedia.Parser def fetch_data_for_activity(%Activity{} = activity) do - with true <- Pleroma.Config.get([:rich_media, :enabled], true), + with true <- Pleroma.Config.get([:rich_media, :enabled]), %Object{} = object <- Object.normalize(activity.data["object"]), {:ok, page_url} <- HTML.extract_first_external_url(object, object.data["content"]), {:ok, rich_media} <- Parser.parse(page_url) do -- cgit v1.2.3 From c05928dbdabfafc536512341e8d64b240b097f62 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 03:55:10 -0300 Subject: use nodeinfo 2.1, add repository field that is the only change from nodeinfo 2.0 to 2.1 also this makes the nodeinfo tests use 2.1.json instead of 2.0.json --- lib/pleroma/application.ex | 2 ++ lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 40bff08c7..8b50bcf8c 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -8,9 +8,11 @@ defmodule Pleroma.Application do @name "Pleroma" @version Mix.Project.config()[:version] + @repository "https://git.pleroma.social/pleroma/pleroma" def name, do: @name def version, do: @version def named_version(), do: @name <> " " <> @version + def repository, do: @repository def user_agent() do info = "#{Pleroma.Web.base_url()} <#{Pleroma.Config.get([:instance, :email], "")}>" diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 11b97164d..de7256dda 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -17,8 +17,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do response = %{ links: [ %{ - rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", - href: Web.base_url() <> "/nodeinfo/2.0.json" + rel: "http://nodeinfo.diaspora.software/ns/schema/2.1", + href: Web.base_url() <> "/nodeinfo/2.1.json" } ] } @@ -26,8 +26,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do 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 + # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.1/schema.json + def nodeinfo(conn, %{"version" => "2.1"}) do instance = Application.get_env(:pleroma, :instance) media_proxy = Application.get_env(:pleroma, :media_proxy) suggestions = Application.get_env(:pleroma, :suggestions) @@ -99,10 +99,11 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do |> Enum.filter(& &1) response = %{ - version: "2.0", + version: "2.1", software: %{ name: Pleroma.Application.name(), - version: Pleroma.Application.version() + version: Pleroma.Application.version(), + repository: Pleroma.Application.repository(), }, protocols: ["ostatus", "activitypub"], services: %{ @@ -146,7 +147,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do conn |> put_resp_header( "content-type", - "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" + "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.1#; charset=utf-8" ) |> json(response) end -- cgit v1.2.3 From b0c4c082c4d166f3f49ffce69bb86639c1a34790 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 04:02:40 -0300 Subject: mix format pass --- 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 de7256dda..f5974fbb9 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -103,7 +103,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do software: %{ name: Pleroma.Application.name(), version: Pleroma.Application.version(), - repository: Pleroma.Application.repository(), + repository: Pleroma.Application.repository() }, protocols: ["ostatus", "activitypub"], services: %{ -- cgit v1.2.3 From fa5ec765d9c6184027ba1e4371e9a6f863c3f5db Mon Sep 17 00:00:00 2001 From: href Date: Fri, 1 Feb 2019 11:34:41 +0100 Subject: Serve sw-pleroma.js properly --- lib/pleroma/plugs/instance_static.ex | 2 +- lib/pleroma/web/endpoint.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/plugs/instance_static.ex b/lib/pleroma/plugs/instance_static.ex index af2f6f331..11f108de7 100644 --- a/lib/pleroma/plugs/instance_static.ex +++ b/lib/pleroma/plugs/instance_static.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Plugs.InstanceStatic do end end - @only ~w(index.html static emoji packs sounds images instance favicon.png) + @only ~w(index.html static emoji packs sounds images instance favicon.png sw.js sw-pleroma.js) def init(opts) do opts diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index 0b4ce9cc4..2b156fdfd 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Web.Endpoint do at: "/", from: :pleroma, only: - ~w(index.html static finmoji emoji packs sounds images instance sw.js favicon.png schemas doc) + ~w(index.html static finmoji emoji packs sounds images instance sw.js sw-pleroma.js favicon.png schemas doc) ) # Code reloading can be explicitly enabled under the -- cgit v1.2.3 From cd6db6abe4df010905649816735d925c0538da34 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 14:11:23 -0300 Subject: use Mix.Project.Config for some Application functions --- lib/pleroma/application.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 8b50bcf8c..d67e2cdc8 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -6,9 +6,9 @@ defmodule Pleroma.Application do use Application import Supervisor.Spec - @name "Pleroma" + @name Mix.Project.config()[:name] @version Mix.Project.config()[:version] - @repository "https://git.pleroma.social/pleroma/pleroma" + @repository Mix.Project.config()[:source_url] def name, do: @name def version, do: @version def named_version(), do: @name <> " " <> @version -- cgit v1.2.3 From 74c6119f2863be35312b9b6e11735b0c5ad4f845 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 1 Feb 2019 18:15:15 +0100 Subject: MastodonAPI.MastodonAPIController: Return a 404 when we fail to get a list --- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 5 ++++- 1 file changed, 4 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 491ed9dc5..a94eb5c73 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -905,7 +905,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do res = ListView.render("list.json", list: list) json(conn, res) else - _e -> json(conn, "error") + _e -> + conn + |> put_status(404) + |> json(%{error: "Record not found"}) end end -- cgit v1.2.3 From b17ce875cf3ae73423f737e46b7103116f45e7d0 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 14:23:40 -0300 Subject: keep compatibility with nodeinfo 2.0 splits actual nodeinfo generation into raw_nodeinfo, the 2.0 handler gives the same result, while the 2.1 handler inserts the software.repository field. requested by @href --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 36 +++++++++++++++++++++---- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index f5974fbb9..72b5d97ac 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -16,6 +16,10 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do def schemas(conn, _params) do response = %{ links: [ + %{ + rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", + href: Web.base_url() <> "/nodeinfo/2.0.json" + }, %{ rel: "http://nodeinfo.diaspora.software/ns/schema/2.1", href: Web.base_url() <> "/nodeinfo/2.1.json" @@ -26,8 +30,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do json(conn, response) end - # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.1/schema.json - def nodeinfo(conn, %{"version" => "2.1"}) do + # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field + # under software. + def raw_nodeinfo() do instance = Application.get_env(:pleroma, :instance) media_proxy = Application.get_env(:pleroma, :media_proxy) suggestions = Application.get_env(:pleroma, :suggestions) @@ -98,12 +103,11 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do ] |> Enum.filter(& &1) - response = %{ - version: "2.1", + %{ + version: "2.0", software: %{ name: Pleroma.Application.name(), version: Pleroma.Application.version(), - repository: Pleroma.Application.repository() }, protocols: ["ostatus", "activitypub"], services: %{ @@ -143,6 +147,28 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do restrictedNicknames: Pleroma.Config.get([Pleroma.User, :restricted_nicknames]) } } + end + + # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json + # and https://github.com/jhass/nodeinfo/blob/master/schemas/2.1/schema.json + def nodeinfo(conn, %{"version" => "2.0"}) do + conn + |> put_resp_header( + "content-type", + "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" + ) + |> json(raw_nodeinfo()) + end + + def nodeinfo(conn, %{"version" => "2.1"}) do + raw_response = raw_nodeinfo() + + updated_software = + raw_response + |> Map.get(:software) + |> Map.put(:repository, Pleroma.Application.repository()) + + response = raw_response |> Map.put(:software, updated_software) conn |> put_resp_header( -- cgit v1.2.3 From 23b1c64a19ab13b152ba46e1a744cbf2efafce57 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 14:35:08 -0300 Subject: downcase software name in nodeinfo --- 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 72b5d97ac..b1db58d0b 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -106,7 +106,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do %{ version: "2.0", software: %{ - name: Pleroma.Application.name(), + name: Pleroma.Application.name() |> String.downcase, version: Pleroma.Application.version(), }, protocols: ["ostatus", "activitypub"], -- cgit v1.2.3 From 1cdcee89daec2f0538c6ab69cd9259d6486a7f6f Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 14:40:43 -0300 Subject: mix format pass --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 4 ++-- 1 file changed, 2 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 b1db58d0b..a1a395c8f 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -106,8 +106,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do %{ version: "2.0", software: %{ - name: Pleroma.Application.name() |> String.downcase, - version: Pleroma.Application.version(), + name: Pleroma.Application.name() |> String.downcase(), + version: Pleroma.Application.version() }, protocols: ["ostatus", "activitypub"], services: %{ -- cgit v1.2.3 From d747bd98700dd8b015ef48e8a2a1df0025012b0a Mon Sep 17 00:00:00 2001 From: eugenijm Date: Fri, 1 Feb 2019 21:56:18 +0300 Subject: Use String.replace_leading instead of String.replace for getting websocket streaming api url. Extract the login responsible for obtaining websocket URL into the corresponding Endpoint function. --- lib/pleroma/web/endpoint.ex | 4 ++++ lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index 2b156fdfd..ebbc5d7b5 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -82,4 +82,8 @@ defmodule Pleroma.Web.Endpoint do port = System.get_env("PORT") || raise "expected the PORT environment variable to be set" {:ok, Keyword.put(config, :http, [:inet6, port: port])} end + + def websocket_url do + String.replace_leading(static_url(), "http", "ws") + end end diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index a94eb5c73..85769c3d7 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -138,7 +138,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.named_version()})", email: Keyword.get(instance, :email), urls: %{ - streaming_api: String.replace(Pleroma.Web.Endpoint.static_url(), "http", "ws") + streaming_api: Pleroma.Web.Endpoint.websocket_url() }, stats: Stats.get_stats(), thumbnail: Web.base_url() <> "/instance/thumbnail.jpeg", -- cgit v1.2.3 From 9cac8729afa7219d8b87e2851b855cab7a1c04b3 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 1 Feb 2019 16:03:23 -0300 Subject: update nodeinfo version when requesting 2.1 --- lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 5 ++++- 1 file changed, 4 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 a1a395c8f..21694a5ee 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -168,7 +168,10 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do |> Map.get(:software) |> Map.put(:repository, Pleroma.Application.repository()) - response = raw_response |> Map.put(:software, updated_software) + response = + raw_response + |> Map.put(:software, updated_software) + |> Map.put(:version, "2.1") conn |> put_resp_header( -- cgit v1.2.3 From a184811a605a56436cc5b9eae8ef5c3834285922 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Fri, 1 Feb 2019 22:35:19 +0300 Subject: Use url() instead of static_url in Endpoint.websocket_url() --- lib/pleroma/web/endpoint.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index ebbc5d7b5..3eed047ca 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -84,6 +84,6 @@ defmodule Pleroma.Web.Endpoint do end def websocket_url do - String.replace_leading(static_url(), "http", "ws") + String.replace_leading(url(), "http", "ws") end end -- cgit v1.2.3 From af10ef8d4e4aefc7760bd85a4723c79a0bfbf2e0 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Fri, 1 Feb 2019 19:38:57 +0000 Subject: object: use cached accesses when possible in Object.normalize() --- lib/pleroma/object.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 707a61f14..1088bb5e4 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -31,8 +31,8 @@ defmodule Pleroma.Object do Repo.one(from(object in Object, where: fragment("(?)->>'id' = ?", object.data, ^ap_id))) end - def normalize(obj) when is_map(obj), do: Object.get_by_ap_id(obj["id"]) - def normalize(ap_id) when is_binary(ap_id), do: Object.get_by_ap_id(ap_id) + def normalize(%{"id" => ap_id}), do: normalize(ap_id) + def normalize(ap_id) when is_binary(ap_id), do: get_cached_by_ap_id(ap_id) def normalize(_), do: nil # Owned objects can only be mutated by their owner -- cgit v1.2.3 From 486749064f72ac5078a42ed339519afbbf48027a Mon Sep 17 00:00:00 2001 From: kaniini Date: Fri, 1 Feb 2019 20:22:58 +0000 Subject: Revert "Merge branch 'feature/split-hide-network' into 'develop'" This reverts merge request !733 --- lib/pleroma/user/info.ex | 6 ++---- lib/pleroma/web/activity_pub/views/user_view.ex | 8 ++++---- lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 4 ++-- lib/pleroma/web/twitter_api/twitter_api_controller.ex | 6 +++--- lib/pleroma/web/twitter_api/views/user_view.ex | 3 +-- 5 files changed, 12 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index 2186190a0..c6c923aac 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -30,8 +30,7 @@ defmodule Pleroma.User.Info do field(:topic, :string, default: nil) field(:hub, :string, default: nil) field(:salmon, :string, default: nil) - field(:hide_followers, :boolean, default: false) - field(:hide_followings, :boolean, default: false) + field(:hide_network, :boolean, default: false) field(:pinned_activities, {:array, :string}, default: []) # Found in the wild @@ -144,8 +143,7 @@ defmodule Pleroma.User.Info do :no_rich_text, :default_scope, :banner, - :hide_followings, - :hide_followers, + :hide_network, :background ]) end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index b9588bee5..dcf681b6d 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -86,7 +86,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do query = from(user in query, select: [:ap_id]) following = Repo.all(query) - collection(following, "#{user.ap_id}/following", page, !user.info.hide_followings) + collection(following, "#{user.ap_id}/following", page, !user.info.hide_network) |> Map.merge(Utils.make_json_ld_header()) end @@ -99,7 +99,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do "id" => "#{user.ap_id}/following", "type" => "OrderedCollection", "totalItems" => length(following), - "first" => collection(following, "#{user.ap_id}/following", 1, !user.info.hide_followings) + "first" => collection(following, "#{user.ap_id}/following", 1, !user.info.hide_network) } |> Map.merge(Utils.make_json_ld_header()) end @@ -109,7 +109,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do query = from(user in query, select: [:ap_id]) followers = Repo.all(query) - collection(followers, "#{user.ap_id}/followers", page, !user.info.hide_followers) + collection(followers, "#{user.ap_id}/followers", page, !user.info.hide_network) |> Map.merge(Utils.make_json_ld_header()) end @@ -122,7 +122,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do "id" => "#{user.ap_id}/followers", "type" => "OrderedCollection", "totalItems" => length(followers), - "first" => collection(followers, "#{user.ap_id}/followers", 1, !user.info.hide_followers) + "first" => collection(followers, "#{user.ap_id}/followers", 1, !user.info.hide_network) } |> Map.merge(Utils.make_json_ld_header()) end diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 85769c3d7..7f3fbff4a 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -605,7 +605,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do followers = cond do for_user && user.id == for_user.id -> followers - user.info.hide_followers -> [] + user.info.hide_network -> [] true -> followers end @@ -621,7 +621,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do followers = cond do for_user && user.id == for_user.id -> followers - user.info.hide_followings -> [] + user.info.hide_network -> [] true -> followers end diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 5e3fe9352..3064d61ea 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -503,7 +503,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do followers = cond do for_user && user.id == for_user.id -> followers - user.info.hide_followers -> [] + user.info.hide_network -> [] true -> followers end @@ -523,7 +523,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do friends = cond do for_user && user.id == for_user.id -> friends - user.info.hide_followings -> [] + user.info.hide_network -> [] true -> friends end @@ -618,7 +618,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do defp build_info_cng(user, params) do info_params = - ["no_rich_text", "locked", "hide_followers", "hide_followings"] + ["no_rich_text", "locked", "hide_network"] |> Enum.reduce(%{}, fn key, res -> if value = params[key] do Map.put(res, key, value == "true") diff --git a/lib/pleroma/web/twitter_api/views/user_view.ex b/lib/pleroma/web/twitter_api/views/user_view.ex index cd7c4349c..15682db8f 100644 --- a/lib/pleroma/web/twitter_api/views/user_view.ex +++ b/lib/pleroma/web/twitter_api/views/user_view.ex @@ -108,8 +108,7 @@ defmodule Pleroma.Web.TwitterAPI.UserView do "locked" => user.info.locked, "default_scope" => user.info.default_scope, "no_rich_text" => user.info.no_rich_text, - "hide_followers" => user.info.hide_followers, - "hide_followings" => user.info.hide_followings, + "hide_network" => user.info.hide_network, "fields" => fields, # Pleroma extension -- cgit v1.2.3 From 2c59eb3cfc93b4f23599fb3e551c38745440380c Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sat, 2 Feb 2019 13:38:52 +0300 Subject: Add responsive features to layout --- lib/pleroma/web/templates/layout/app.html.eex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/templates/layout/app.html.eex b/lib/pleroma/web/templates/layout/app.html.eex index 2e96c1509..8dd3284d6 100644 --- a/lib/pleroma/web/templates/layout/app.html.eex +++ b/lib/pleroma/web/templates/layout/app.html.eex @@ -1,7 +1,8 @@ - + + <%= Application.get_env(:pleroma, :instance)[:name] %> -- cgit v1.2.3 From b40b4bc4e5b49ac2b35746cee7b1db92428d3ee1 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sun, 3 Feb 2019 12:41:27 +0300 Subject: [#582] Optimized federation retirement by reducing the number of SQL calls (calling `Instances.set_reachable/1` only if instance had `unreachable_since`, calling `Instances.set_unreachable/1` only if instance had nil `unreachable_since`). --- lib/pleroma/instances/instance.ex | 25 ++++++++++++++++++------- lib/pleroma/web/activity_pub/activity_pub.ex | 13 +++++++------ lib/pleroma/web/federator/federator.ex | 4 ++-- lib/pleroma/web/salmon/salmon.ex | 28 +++++++++++++++++----------- lib/pleroma/web/websub/websub.ex | 12 +++++++----- 5 files changed, 51 insertions(+), 31 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index a87590d8b..4a4ca26dd 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -26,7 +26,7 @@ defmodule Pleroma.Instances.Instance do |> unique_constraint(:host) end - def filter_reachable([]), do: [] + def filter_reachable([]), do: %{} def filter_reachable(urls_or_hosts) when is_list(urls_or_hosts) do hosts = @@ -34,17 +34,28 @@ defmodule Pleroma.Instances.Instance do |> Enum.map(&(&1 && host(&1))) |> Enum.filter(&(to_string(&1) != "")) - unreachable_hosts = + unreachable_since_by_host = Repo.all( from(i in Instance, - where: - i.host in ^hosts and - i.unreachable_since <= ^Instances.reachability_datetime_threshold(), - select: i.host + where: i.host in ^hosts, + select: {i.host, i.unreachable_since} ) ) + |> Map.new(& &1) - Enum.filter(urls_or_hosts, &(&1 && host(&1) not in unreachable_hosts)) + reachability_datetime_threshold = Instances.reachability_datetime_threshold() + + for entry <- Enum.filter(urls_or_hosts, &is_binary/1) do + host = host(entry) + unreachable_since = unreachable_since_by_host[host] + + if !unreachable_since || + NaiveDateTime.compare(unreachable_since, reachability_datetime_threshold) == :gt do + {entry, unreachable_since} + end + end + |> Enum.filter(& &1) + |> Map.new(& &1) end def reachable?(url_or_host) when is_binary(url_or_host) do diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 06e8c3f1c..5f6c8e7d3 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -744,7 +744,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do public = is_public?(activity) - remote_inboxes = + reachable_inboxes_metadata = (Pleroma.Web.Salmon.remote_users(activity) ++ remote_followers) |> Enum.filter(fn user -> User.ap_enabled?(user) end) |> Enum.map(fn %{info: %{source_data: data}} -> @@ -757,17 +757,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) json = Jason.encode!(data) - Enum.each(remote_inboxes, fn inbox -> + Enum.each(reachable_inboxes_metadata, fn {inbox, unreachable_since} -> Federator.enqueue(:publish_single_ap, %{ inbox: inbox, json: json, actor: actor, - id: activity.data["id"] + id: activity.data["id"], + unreachable_since: unreachable_since }) end) end - def publish_one(%{inbox: inbox, json: json, actor: actor, id: id}) do + def publish_one(%{inbox: inbox, json: json, actor: actor, id: id} = params) do Logger.info("Federating #{id} to #{inbox}") host = URI.parse(inbox).host @@ -791,11 +792,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do {"digest", digest} ] ) do - Instances.set_reachable(inbox) + if params[:unreachable_since], do: Instances.set_reachable(inbox) result else {_post_result, response} -> - Instances.set_unreachable(inbox) + unless params[:unreachable_since], do: Instances.set_unreachable(inbox) {:error, response} end end diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index 46f7a4973..bb7676cf0 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -124,8 +124,8 @@ defmodule Pleroma.Web.Federator do end end - def handle(:publish_single_salmon, {user_or_url, feed, poster}) do - Salmon.send_to_user(user_or_url, feed, poster) + def handle(:publish_single_salmon, params) do + Salmon.send_to_user(params) end def handle(:publish_single_ap, params) do diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 07ca42a5f..4d519ece4 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -162,30 +162,29 @@ defmodule Pleroma.Web.Salmon do |> Enum.filter(fn user -> user && !user.local end) end - # push an activity to remote accounts - # - def send_to_user(%{info: %{salmon: salmon}}, feed, poster), - do: send_to_user(salmon, feed, poster) + @doc "Pushes an activity to remote account." + def send_to_user(%{recipient: %{info: %{salmon: salmon}}} = params), + do: send_to_user(Map.put(params, :recipient, salmon)) - def send_to_user(url, feed, poster) when is_binary(url) do + def send_to_user(%{recipient: url, feed: feed, poster: poster} = params) when is_binary(url) do with {:ok, %{status: code}} when code in 200..299 <- poster.( url, feed, [{"Content-Type", "application/magic-envelope+xml"}] ) do - Instances.set_reachable(url) + if params[:unreachable_since], do: Instances.set_reachable(url) Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) :ok else e -> - Instances.set_unreachable(url) + unless params[:unreachable_since], do: Instances.set_reachable(url) Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) :error end end - def send_to_user(_, _, _), do: :noop + def send_to_user(_), do: :noop @supported_activities [ "Create", @@ -218,13 +217,20 @@ defmodule Pleroma.Web.Salmon do remote_users = remote_users(activity) salmon_urls = Enum.map(remote_users, & &1.info.salmon) - reachable_salmon_urls = Instances.filter_reachable(salmon_urls) + reachable_urls_metadata = Instances.filter_reachable(salmon_urls) + reachable_urls = Map.keys(reachable_urls_metadata) remote_users - |> Enum.filter(&(&1.info.salmon in reachable_salmon_urls)) + |> Enum.filter(&(&1.info.salmon in reachable_urls)) |> Enum.each(fn remote_user -> Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) - Pleroma.Web.Federator.enqueue(:publish_single_salmon, {remote_user, feed, poster}) + + Pleroma.Web.Federator.enqueue(:publish_single_salmon, %{ + recipient: remote_user, + feed: feed, + poster: poster, + unreachable_since: reachable_urls_metadata[remote_user.info.salmon] + }) end) end end diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index 8f7d53b03..cf51dce76 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -70,7 +70,8 @@ defmodule Pleroma.Web.Websub do subscriptions = Repo.all(query) callbacks = Enum.map(subscriptions, & &1.callback) - reachable_callbacks = Instances.filter_reachable(callbacks) + reachable_callbacks_metadata = Instances.filter_reachable(callbacks) + reachable_callbacks = Map.keys(reachable_callbacks_metadata) subscriptions |> Enum.filter(&(&1.callback in reachable_callbacks)) @@ -79,7 +80,8 @@ defmodule Pleroma.Web.Websub do xml: response, topic: topic, callback: sub.callback, - secret: sub.secret + secret: sub.secret, + unreachable_since: reachable_callbacks_metadata[sub.callback] } Pleroma.Web.Federator.enqueue(:publish_single_websub, data) @@ -268,7 +270,7 @@ defmodule Pleroma.Web.Websub do end) end - def publish_one(%{xml: xml, topic: topic, callback: callback, secret: secret}) do + def publish_one(%{xml: xml, topic: topic, callback: callback, secret: secret} = params) do signature = sign(secret || "", xml) Logger.info(fn -> "Pushing #{topic} to #{callback}" end) @@ -281,12 +283,12 @@ defmodule Pleroma.Web.Websub do {"X-Hub-Signature", "sha1=#{signature}"} ] ) do - Instances.set_reachable(callback) + if params[:unreachable_since], do: Instances.set_reachable(callback) Logger.info(fn -> "Pushed to #{callback}, code #{code}" end) {:ok, code} else {_post_result, response} -> - Instances.set_unreachable(callback) + unless params[:unreachable_since], do: Instances.set_reachable(callback) Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(response)}" end) {:error, response} end -- cgit v1.2.3 From 3913b0196e47c829df90aa835ade2efdb7c43850 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sun, 3 Feb 2019 13:28:13 +0300 Subject: [#582] Made single-pub task call Instance.set_reachable/1 if `set_reachable` is not specified. Added tests. --- lib/pleroma/web/activity_pub/activity_pub.ex | 4 +++- lib/pleroma/web/salmon/salmon.ex | 4 +++- lib/pleroma/web/websub/websub.ex | 4 +++- 3 files changed, 9 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 5f6c8e7d3..4635e7fcd 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -792,7 +792,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do {"digest", digest} ] ) do - if params[:unreachable_since], do: Instances.set_reachable(inbox) + if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since], + do: Instances.set_reachable(inbox) + result else {_post_result, response} -> diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 4d519ece4..b1c2dc7fa 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -173,7 +173,9 @@ defmodule Pleroma.Web.Salmon do feed, [{"Content-Type", "application/magic-envelope+xml"}] ) do - if params[:unreachable_since], do: Instances.set_reachable(url) + if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since], + do: Instances.set_reachable(url) + Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) :ok else diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index cf51dce76..90ba79962 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -283,7 +283,9 @@ defmodule Pleroma.Web.Websub do {"X-Hub-Signature", "sha1=#{signature}"} ] ) do - if params[:unreachable_since], do: Instances.set_reachable(callback) + if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since], + do: Instances.set_reachable(callback) + Logger.info(fn -> "Pushed to #{callback}, code #{code}" end) {:ok, code} else -- cgit v1.2.3 From 0c08bd4181cda08112a9e12ba92cdfb25c602da1 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Sun, 3 Feb 2019 16:39:42 +0000 Subject: Update Mogrify docs and warning for deprecated syntax to encourage users to enable both strip and auto-orient --- lib/pleroma/upload.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 0a19e737b..ce2a1b696 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -124,10 +124,10 @@ defmodule Pleroma.Upload do :pleroma, Pleroma.Upload, [filters: [Pleroma.Upload.Filter.Mogrify]] - :pleroma, Pleroma.Upload.Filter.Mogrify, args: "strip" + :pleroma, Pleroma.Upload.Filter.Mogrify, args: ["strip", "auto-orient"] """) - Pleroma.Config.put([Pleroma.Upload.Filter.Mogrify], args: "strip") + Pleroma.Config.put([Pleroma.Upload.Filter.Mogrify], args: ["strip", "auto-orient"]) Map.put(opts, :filters, opts.filters ++ [Pleroma.Upload.Filter.Mogrify]) else opts -- cgit v1.2.3 From 505a084058eeeed7d945b43630c97c38cafec656 Mon Sep 17 00:00:00 2001 From: lain Date: Sun, 3 Feb 2019 18:28:14 +0100 Subject: Still do caching in tests. --- lib/pleroma/object.ex | 43 ++++++++++++++++++++--------------- lib/pleroma/web/activity_pub/utils.ex | 2 +- 2 files changed, 26 insertions(+), 19 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 1088bb5e4..7b46a3b05 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -42,24 +42,18 @@ defmodule Pleroma.Object do # Legacy objects can be mutated by anybody def authorize_mutation(%Object{}, %User{}), do: true - if Mix.env() == :test do - def get_cached_by_ap_id(ap_id) do - get_by_ap_id(ap_id) - end - else - def get_cached_by_ap_id(ap_id) do - key = "object:#{ap_id}" - - Cachex.fetch!(:object_cache, key, fn _ -> - object = get_by_ap_id(ap_id) - - if object do - {:commit, object} - else - {:ignore, object} - end - end) - end + def get_cached_by_ap_id(ap_id) do + key = "object:#{ap_id}" + + Cachex.fetch!(:object_cache, key, fn _ -> + object = get_by_ap_id(ap_id) + + if object do + {:commit, object} + else + {:ignore, object} + end + end) end def context_mapping(context) do @@ -90,4 +84,17 @@ defmodule Pleroma.Object do {:ok, object} end end + + def set_cache(%Object{data: %{"id" => ap_id}} = object) do + Cachex.put(:object_cache, "object:#{ap_id}", object) + {:ok, object} + end + + def update_and_set_cache(changeset) do + with {:ok, object} <- Repo.update(changeset) do + set_cache(object) + else + e -> e + end + end end diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 3b0cdfe71..4a2cc6738 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -285,7 +285,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do |> Map.put("#{property}_count", length(element)) |> Map.put("#{property}s", element), changeset <- Changeset.change(object, data: new_data), - {:ok, object} <- Repo.update(changeset), + {:ok, object} <- Object.update_and_set_cache(changeset), _ <- update_object_in_activities(object) do {:ok, object} end -- cgit v1.2.3 From 0ef0ae35abf7c1f1016175bd446436f9e5dd8fc2 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Sun, 3 Feb 2019 20:12:23 +0100 Subject: added optional delist feature --- .../web/activity_pub/mrf/hellthread_policy.ex | 30 ++++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index a3f516ae7..0b9caeb11 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -3,17 +3,37 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do + alias Pleroma.User @behaviour Pleroma.Web.ActivityPub.MRF @impl true def filter(%{"type" => "Create"} = object) do - threshold = Pleroma.Config.get([:mrf_hellthread, :threshold]) + delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold]) + reject_threshold = Pleroma.Config.get([:mrf_hellthread, :reject_threshold]) recipients = (object["to"] || []) ++ (object["cc"] || []) - if length(recipients) > threshold do - {:reject, nil} - else - {:ok, object} + cond do + length(recipients) > reject_threshold -> + {:reject, nil} + + length(recipients) > delist_threshold -> + if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or + Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do + object + |> Kernel.update_in(["object", "to"], [ + User.get_cached_by_ap_id(object["actor"].follower_address) + ]) + |> Kernel.update_in(["object", "cc"], ["https://www.w3.org/ns/activitystreams#Public"]) + |> Kernel.update_in(["to"], [ + User.get_cached_by_ap_id(object["actor"].follower_address) + ]) + |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) + else + {:ok, object} + end + + true -> + {:ok, object} end end -- cgit v1.2.3 From 10130fa7d6a2dca4250ada1144fcfcfe75c26f45 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Sun, 3 Feb 2019 20:27:28 +0100 Subject: made toggleable, added docs --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 0b9caeb11..53588b264 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -13,10 +13,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do recipients = (object["to"] || []) ++ (object["cc"] || []) cond do - length(recipients) > reject_threshold -> + length(recipients) > reject_threshold and reject_threshold != 0 -> {:reject, nil} - length(recipients) > delist_threshold -> + length(recipients) > delist_threshold and delist_threshold != 0 -> if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do object -- cgit v1.2.3 From 531507a635917e15e28a72a58ab0f977eefed571 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Sun, 3 Feb 2019 20:45:32 +0100 Subject: fixed things --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 53588b264..d95424493 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -19,15 +19,15 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do length(recipients) > delist_threshold and delist_threshold != 0 -> if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do + follower_collection = User.get_by_ap_id(object["actor"].follower_address) + object - |> Kernel.update_in(["object", "to"], [ - User.get_cached_by_ap_id(object["actor"].follower_address) - ]) + |> Kernel.update_in(["object", "to"], [follower_collection]) |> Kernel.update_in(["object", "cc"], ["https://www.w3.org/ns/activitystreams#Public"]) - |> Kernel.update_in(["to"], [ - User.get_cached_by_ap_id(object["actor"].follower_address) - ]) + |> Kernel.update_in(["to"], [follower_collection]) |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) + + {:ok, object} else {:ok, object} end -- cgit v1.2.3 From e10cda7541f5d76a32d0bf27d90a51c5fc8e7fcf Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Sun, 3 Feb 2019 22:46:06 +0100 Subject: implemented tweaks --- lib/pleroma/config/deprecation_warnings.ex | 7 +++++ .../web/activity_pub/mrf/hellthread_policy.ex | 31 +++++++++++++--------- 2 files changed, 26 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index dc50682ee..0eb1833aa 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -12,6 +12,13 @@ defmodule Pleroma.Config.DeprecationWarnings do You are using the old configuration mechanism for the frontend. Please check config.md. """) end + + if Pleroma.Config.get(:mrf_hellthread, :threshold) do + Logger.warn(""" + !!!DEPRECATION WARNING!!! + You are using the old configuration mechanism for the hellthread filter. Please check config.md. + """) + end end def warn do diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index d95424493..cd9f9b1c4 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -6,27 +6,34 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do alias Pleroma.User @behaviour Pleroma.Web.ActivityPub.MRF + defp delist_message(object) do + follower_collection = User.get_by_ap_id(object["actor"].follower_address) + + object + |> Kernel.update_in(["to"], [follower_collection]) + |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) + end + @impl true def filter(%{"type" => "Create"} = object) do delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold]) - reject_threshold = Pleroma.Config.get([:mrf_hellthread, :reject_threshold]) + + reject_threshold = + Pleroma.Config.get( + [:mrf_hellthread, :reject_threshold], + Pleroma.Config.get([:mrf_hellthread, :threshold]) + ) + recipients = (object["to"] || []) ++ (object["cc"] || []) cond do - length(recipients) > reject_threshold and reject_threshold != 0 -> + length(recipients) > reject_threshold and reject_threshold > 0 -> {:reject, nil} - length(recipients) > delist_threshold and delist_threshold != 0 -> + length(recipients) > delist_threshold and delist_threshold > 0 -> if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or - Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do - follower_collection = User.get_by_ap_id(object["actor"].follower_address) - - object - |> Kernel.update_in(["object", "to"], [follower_collection]) - |> Kernel.update_in(["object", "cc"], ["https://www.w3.org/ns/activitystreams#Public"]) - |> Kernel.update_in(["to"], [follower_collection]) - |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) - + Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") do + delist_message(object) {:ok, object} else {:ok, object} -- cgit v1.2.3 From 583c4e0f17206d77174e1eaa84bb68fc5a57f196 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Sun, 3 Feb 2019 23:56:20 +0100 Subject: more tweaks, fixed silly mistakes... --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index cd9f9b1c4..1c2de555f 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -6,12 +6,12 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do alias Pleroma.User @behaviour Pleroma.Web.ActivityPub.MRF - defp delist_message(object) do - follower_collection = User.get_by_ap_id(object["actor"].follower_address) + defp delist_message(message) do + follower_collection = User.get_by_ap_id(message["actor"].follower_address) - object - |> Kernel.update_in(["to"], [follower_collection]) - |> Kernel.update_in(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) + message + |> Map.put(["to"], [follower_collection]) + |> Map.put(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) end @impl true @@ -32,9 +32,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do length(recipients) > delist_threshold and delist_threshold > 0 -> if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or - Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") do - delist_message(object) - {:ok, object} + Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do + {:ok, delist_message(object)} else {:ok, object} end -- cgit v1.2.3 From 63a4f4b7be14753d0e78f8a445351b7dae008254 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Mon, 4 Feb 2019 10:23:07 +0100 Subject: fixed Map,put arguments, updated nomenclature --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 1c2de555f..667f5da03 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -10,8 +10,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do follower_collection = User.get_by_ap_id(message["actor"].follower_address) message - |> Map.put(["to"], [follower_collection]) - |> Map.put(["cc"], ["https://www.w3.org/ns/activitystreams#Public"]) + |> Map.put("to", [follower_collection]) + |> Map.put("cc", ["https://www.w3.org/ns/activitystreams#Public"]) end @impl true -- cgit v1.2.3 From 3cf046babb706c9539a0e4e799c578a4ed207c24 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Mon, 4 Feb 2019 10:23:43 +0100 Subject: actually commited the changes --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 667f5da03..e78c9b5f8 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do end @impl true - def filter(%{"type" => "Create"} = object) do + def filter(%{"type" => "Create"} = message) do delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold]) reject_threshold = @@ -24,25 +24,25 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do Pleroma.Config.get([:mrf_hellthread, :threshold]) ) - recipients = (object["to"] || []) ++ (object["cc"] || []) + recipients = (message["to"] || []) ++ (message["cc"] || []) cond do length(recipients) > reject_threshold and reject_threshold > 0 -> {:reject, nil} length(recipients) > delist_threshold and delist_threshold > 0 -> - if Enum.member?(object["to"], "https://www.w3.org/ns/activitystreams#Public") or - Enum.member?(object["cc"], "https://www.w3.org/ns/activitystreams#Public") do - {:ok, delist_message(object)} + if Enum.member?(message["to"], "https://www.w3.org/ns/activitystreams#Public") or + Enum.member?(message["cc"], "https://www.w3.org/ns/activitystreams#Public") do + {:ok, delist_message(message)} else - {:ok, object} + {:ok, message} end true -> - {:ok, object} + {:ok, message} end end @impl true - def filter(object), do: {:ok, object} + def filter(message), do: {:ok, message} end -- cgit v1.2.3 From 4430641349a6f322be52b787cc817c0ff691b836 Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Mon, 4 Feb 2019 12:09:00 +0100 Subject: squished a bug --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index e78c9b5f8..dd0d6dd5f 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do @behaviour Pleroma.Web.ActivityPub.MRF defp delist_message(message) do - follower_collection = User.get_by_ap_id(message["actor"].follower_address) + follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address message |> Map.put("to", [follower_collection]) @@ -44,5 +44,5 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do end @impl true - def filter(message), do: {:ok, message} + def filter(message), do: {:ok_notcreate, message} end -- cgit v1.2.3 From 58262a8b8a759ecb69663a92a56f65b6e16db6ea Mon Sep 17 00:00:00 2001 From: Karen Konou Date: Mon, 4 Feb 2019 11:22:25 +0000 Subject: removed a debug thingy --- lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index dd0d6dd5f..4c6e612b2 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -44,5 +44,5 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do end @impl true - def filter(message), do: {:ok_notcreate, message} + def filter(message), do: {:ok, message} end -- cgit v1.2.3