Commit aa79d64e authored by lain's avatar lain

Correctly stitch mastodon -> ostatus replies.

parent 2583a9f6
Pipeline #802 failed with stage
in 3 minutes and 3 seconds
......@@ -10,6 +10,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
import Ecto.Query
require Logger
@doc """
Modifies an incoming AP object (mastodon format) to our internal format.
"""
......@@ -43,6 +45,20 @@ def handle_incoming(%{"type" => "Create", "object" => %{"type" => "Note"} = obje
with nil <- Activity.get_create_activity_by_object_ap_id(object["id"]),
%User{} = user <- User.get_or_fetch_by_ap_id(data["actor"]) do
object = fix_object(data["object"])
replied_to_id = if object["inReplyTo"] do
case ActivityPub.fetch_object_from_id(object["inReplyTo"]) do
{:ok, object} -> object.data["id"]
e ->
Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}")
nil
end
else
nil
end
object = Map.put(object, "inReplyTo", replied_to_id || object["inReplyTo"])
params = %{
to: data["to"],
object: object,
......@@ -56,9 +72,6 @@ def handle_incoming(%{"type" => "Create", "object" => %{"type" => "Note"} = obje
])
}
if object["inReplyTo"] do
{:ok, object} = ActivityPub.fetch_object_from_id(object["inReplyTo"])
end
ActivityPub.create(params)
else
......
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:statusnet="http://status.net/schema/api/1/">
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
<id>tag:shitposter.club,2018-02-22:noticeId=7369654:objectType=comment</id>
<title>New comment by shpuld</title>
<content type="html">@&lt;a href=&quot;https://testing.pleroma.lol/users/lain&quot; class=&quot;h-card mention&quot; title=&quot;Rael Electric Razor&quot;&gt;lain&lt;/a&gt; me far right</content>
<link rel="alternate" type="text/html" href="https://shitposter.club/notice/7369654"/>
<status_net notice_id="7369654"></status_net>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2018-02-22T09:20:12+00:00</published>
<updated>2018-02-22T09:20:12+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://shitposter.club/user/5381</uri>
<name>shpuld</name>
<link rel="alternate" type="text/html" href="https://shitposter.club/shpuld"/>
<link rel="avatar" type="image/png" media:width="864" media:height="864" href="https://shitposter.club/avatar/5381-original-20171230093854.png"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="https://shitposter.club/avatar/5381-96-20171230093854.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="https://shitposter.club/avatar/5381-48-20171230093854.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="https://shitposter.club/avatar/5381-24-20171230093900.png"/>
<poco:preferredUsername>shpuld</poco:preferredUsername>
<poco:displayName>shp</poco:displayName>
<followers url="https://shitposter.club/shpuld/subscribers"></followers>
<statusnet:profile_info local_id="5381"></statusnet:profile_info>
</author>
<thr:in-reply-to ref="https://testing.pleroma.lol/objects/b319022a-4946-44c5-9de9-34801f95507b" href="https://testing.pleroma.lol/objects/b319022a-4946-44c5-9de9-34801f95507b"></thr:in-reply-to>
<link rel="related" href="https://testing.pleroma.lol/objects/b319022a-4946-44c5-9de9-34801f95507b"/>
<link rel="ostatus:conversation" href="https://shitposter.club/conversation/4378601"/>
<ostatus:conversation href="https://shitposter.club/conversation/4378601" local_id="4378601" ref="tag:shitposter.club,2018-02-22:objectType=thread:nonce=e5a7c72d60a9c0e4">tag:shitposter.club,2018-02-22:objectType=thread:nonce=e5a7c72d60a9c0e4</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://testing.pleroma.lol/users/lain"/>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://shitposter.club/api/statuses/user_timeline/5381.atom</id>
<title>shp</title>
<link rel="alternate" type="text/html" href="https://shitposter.club/shpuld"/>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/user_timeline/5381.atom"/>
<link rel="license" href="https://shitposter.club/doc/tos"/>
<icon>https://shitposter.club/avatar/5381-96-20171230093854.png</icon>
<updated>2018-02-23T13:30:15+00:00</updated>
</source>
<link rel="self" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/7369654.atom"/>
<link rel="edit" type="application/atom+xml" href="https://shitposter.club/api/statuses/show/7369654.atom"/>
<statusnet:notice_info local_id="7369654" source="Pleroma FE"></statusnet:notice_info>
</entry>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shitposter Club</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<link rel="stylesheet" type="text/css" href="https://shitposter.club/plugins/Qvitter/css/qvitter.css?changed=20170610161937" />
<link rel="stylesheet" type="text/css" href="https://shitposter.club/plugins/Qvitter/css/jquery.minicolors.css" />
<link rel="apple-touch-icon" sizes="57x57" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-96x96.png" sizes="96x96">
<link rel="manifest" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/manifest.json">
<link rel="mask-icon" href="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/safari-pinned-tab.svg" color="#a22430">
<meta name="apple-mobile-web-app-title" content="Shitposter Club">
<meta name="application-name" content="Shitposter Club">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<link title="oEmbed" href="https://shitposter.club/services/oembed.json?url=https%3A%2F%2Fshitposter.club%2Fnotice%2F7369654" type="application/json+oembed" rel="alternate">
<link title="oEmbed" href="https://shitposter.club/services/oembed.xml?url=https%3A%2F%2Fshitposter.club%2Fnotice%2F7369654" type="application/xml+oembed" rel="alternate">
<link title="Single notice (JSON)" href="https://shitposter.club/api/statuses/show/7369654.json" type="application/stream+json" rel="alternate">
<link title="Single notice (Atom)" href="https://shitposter.club/api/statuses/show/7369654.atom" type="application/atom+xml" rel="alternate">
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="shp (@shpuld)" />
<meta name="twitter:description" content="@lain me far right" />
<meta property="og:description" content="@lain me far right" />
<meta property="og:site_name" content="Shitposter Club" />
<script>
/*
@licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (C) 2015 Hannes Mannerheim and other contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
@licend The above is the entire license notice
for the JavaScript code in this page.
*/
window.usersLanguageCode = "en";
window.usersLanguageNameInEnglish = "English";
window.englishLanguageData = {
"directionality":"ltr",
"languageName": "English",
"loginUsername": "Username or e-mail",
"loginPassword": "Password",
"loginSignIn": "Sign in",
"loginRememberMe": "Remember me",
"loginForgotPassword": "Forgot password?",
"notices": "Notices",
"followers": "Followers",
"following": "Following",
"groups": "Groups",
"compose": "PULL THE TRIGGER",
"queetVerb": "Send",
"queetsNounPlural": "Notices",
"logout": "Sign out",
"languageSelected": "Language:",
"viewMyProfilePage": "View my profile page",
"expand": "Expand",
"collapse": "Collapse",
"details": "Details",
"expandFullConversation": "Expand full conversation",
"replyVerb": "Reply",
"requeetVerb": "Repeat",
"favoriteVerb": "Favorite",
"requeetedVerb": "Repeated",
"favoritedVerb": "Favorited",
"replyTo": "Reply to",
"requeetedBy": "Repeated by {requeeted-by}",
"favoriteNoun": "Favorite",
"favoritesNoun": "Favorites",
"requeetNoun": "Repeat",
"requeetsNoun": "Repeats",
"newQueet": "{new-notice-count} new notice",
"newQueets": "{new-notice-count} new notices",
"longmonthsJanuary": "January",
"longmonthsFebruary": "February",
"longmonthsMars": "March",
"longmonthsApril": "April",
"longmonthsMay": "May",
"longmonthsJune": "June",
"longmonthsJuly": "July",
"longmonthsAugust": "August",
"longmonthsSeptember": "September",
"longmonthsOctober": "October",
"longmonthsNovember": "November",
"longmonthsDecember": "December",
"shortmonthsJanuary": "jan",
"shortmonthsFebruary": "feb",
"shortmonthsMars": "mar",
"shortmonthsApril": "apr",
"shortmonthsMay": "may",
"shortmonthsJune": "jun",
"shortmonthsJuly": "jul",
"shortmonthsAugust": "aug",
"shortmonthsSeptember": "sep",
"shortmonthsOctober": "oct",
"shortmonthsNovember": "nov",
"shortmonthsDecember": "dec",
"time12am": "{time} am",
"time12pm": "{time} pm",
"longDateFormat": "{time12} - {day} {month} {year}",
"shortDateFormatSeconds": "{seconds}s",
"shortDateFormatMinutes": "{minutes}m",
"shortDateFormatHours": "{hours}h",
"shortDateFormatDate": "{day} {month}",
"shortDateFormatDateAndY": "{day} {month} {year}",
"now": "now",
"posting": "posting",
"viewMoreInConvBefore": "← View more in conversation",
"viewMoreInConvAfter": "View more in conversation →",
"mentions": "Mentions",
"timeline": "Only Who I'm Following",
"publicTimeline": "Everyone on Shitposter Club",
"publicAndExtTimeline": "MY EYES! I CAN SEE FOREVER",
"searchVerb": "Search",
"deleteVerb": "Delete",
"cancelVerb": "Cancel",
"deleteConfirmation": "Are you sure you want to delete this notice?",
"userExternalFollow": "Remote follow",
"userExternalFollowHelp": "Your account ID (e.g. user@rainbowdash.net).",
"userFollow": "Follow",
"userFollowing": "Following",
"userUnfollow": "Unfollow",
"joinGroup": "Join",
"joinExternalGroup": "Join remotely",
"isMemberOfGroup": "Member",
"leaveGroup": "Leave",
"memberCount": "Members",
"adminCount": "Admins",
"settings": "Settings",
"saveChanges": "Save changes",
"linkColor": "Link color",
"backgroundColor": "Background color",
"newToQuitter": "New to {site-title}?",
"signUp": "Sign up",
"signUpFullName": "Full name",
"signUpEmail": "Email",
"signUpButtonText": "Sign up to {site-title}",
"welcomeHeading": "Welcome to {site-title}.",
"welcomeText": "We are a <span id=\"federated-tooltip\"><div id=\"what-is-federation\">\"Federation\" means that you don't need a {site-title} account to be able to follow, be followed by or interact with {site-title} users. You can register on any StatusNet or GNU social server or any service based on the the <a href=\"http://www.w3.org/community/ostatus/wiki/Main_Page\">Ostatus</a> protocol! You don't even have to join a service – try installing the lovely <a href=\"http://www.gnu.org/software/social/\">GNU social</a> software on your own server! :)</div>federation</span> of microbloggers who care about social justice and solidarity and want to quit the centralised capitalist services.",
"registerNickname": "Nickname",
"registerHomepage": "Homepage",
"registerBio": "Bio",
"registerLocation": "Location",
"registerRepeatPassword": "Repeat password",
"moreSettings": "More settings",
"otherServers": "Alternatively you can create an account on another server of the GNU social network. <a href=\"http://federation.skilledtests.com/select_your_server.html\">Comparison</a>",
"editMyProfile": "Edit profile",
"notifications": "Notifications",
"xFavedYourQueet": "favorited your notice",
"xRepeatedYourQueet": "repeated you",
"xStartedFollowingYou": "followed you",
"followsYou": "follows you",
"FAQ": "FAQ",
"inviteAFriend": "Invite a friend!",
"goToExternalProfile": "Go to full profile",
"cropAndSave": "Crop and save",
"showTerms": "Read our Terms of Use",
"ellipsisMore": "More",
"blockUser": "Block",
"goToOriginalNotice": "Go to the original notice",
"goToTheUsersRemoteProfile": "Go to the user's remote profile",
"clickToDrag":"Click to drag",
"keyboardShortcuts":"Keyboard shortcuts",
"classicInterface":"Classic {site-title}",
"accessibilityToggleLink":"For better accessibility, click this link to switch to the classic interface",
"tooltipBookmarkStream":"Add this stream to your bookmarks",
"tooltipTopMenu":"Menu and settings",
"tooltipAttachImage":"Attach an image",
"tooltipShortenUrls":"Shorten all URLs in the notice",
"tooltipReloadStream":"Refresh this stream",
"tooltipRemoveBookmark":"Remove this bookmark",
"clearHistory":"Clear browsing history",
"ERRORsomethingWentWrong":"Something went wrong.",
"ERRORmustBeLoggedIn":"You must be logged in to view this stream.",
"ERRORcouldNotFindUserWithNickname":"Could not find a user with nickname \"{nickname}\" on this server",
"ERRORcouldNotFindGroupWithNickname":"Could not find a group with nickname \"{nickname}\" on this server",
"ERRORcouldNotFindPage":"Could not find that page.",
"ERRORnoticeRemoved": "This notice has been removed.",
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connection. Please try again later!",
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
"markAllNotificationsAsSeen":"Mark all notifications as seen",
"notifyRepliesAndMentions":"Mentions and replies",
"notifyFavs":"Favorites",
"notifyRepeats":"Repeats",
"notifyFollows":"New followers",
"timelineOptions":"Timeline options",
"ERRORfailedSavingYourSetting":"Failed saving your setting",
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
"newNotification": "{new-notice-count} new notification",
"newNotifications": "{new-notice-count} new notifications",
"thisIsANoticeFromABlockedUser":"Warning: This is a quip from a user you have blocked. Click to show it.",
"nicknamesListWithListName":"{nickname}’s list: {list-name}",
"myListWithListName":"My list: {list-name}",
"listMembers":"Members",
"listSubscribers":"Subscribers",
"ERRORcouldNotFindList":"There is no such list.",
"emailAlreadyInUse":"Already in use",
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline",
"userBlocks":"Accounts you're blocking",
"buttonBlocked":"Blocked",
"buttonUnblock":"Unblock",
"failedBlockingUser":"Failed to block the user.",
"failedUnblockingUser":"Failed to unblock the user.",
"unblockUser": "Unblock",
"tooltipBlocksYou":"You are blocked from following {username}.",
"silenced":"Silenced",
"silencedPlural":"Silenced profiles",
"silencedUsersOnThisInstance":"Silenced profiles on {site-title}",
"sandboxed":"Sandboxed",
"sandboxedPlural":"Sandboxed profiles",
"sandboxedUsersOnThisInstance":"Sandboxed profiles on {site-title}",
"silencedStreamDescription":"Silenced users can't login or post quips and the quips they've already posted are hidden. For local users it's like a delete that can be reversed, for remote users it's like a site wide block.",
"sandboxedStreamDescription":"Quips from sandboxed users are excluded from the Public Timeline and The Whole Known Network. Apart from that, they can use the site like any other user.",
"onlyShowNotificationsFromUsersIFollow":"Only show notifications from users I follow",
"userOptions":"More user actions",
"silenceThisUser":"Silence {nickname}",
"sandboxThisUser":"Sandbox {nickname}",
"unSilenceThisUser":"Unsilence {nickname}",
"unSandboxThisUser":"Unsandbox {nickname}",
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
"muteUser":"Mute",
"unmuteUser":"Unmute",
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
"userMutes":"Accounts you're muting",
"userBlocked":"Blocked accounts",
"userMuted":"Muted accounts",
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still receive notifications from these accounts, unless you select &quot;Hide notifications from muted users&quot; from the cog wheel menu on the notifications page.",
"profileAndSettings":"Profile and settings",
"profileSettings":"Profile settings",
"thisIsABookmark":"This is a bookmark created in the Classic interface",
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
"findSomeone":"Find someone",
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname",
"tooltipAttachFile":"Attach a file"
}
;
window.defaultAvatarStreamSize = "https:\/\/shitposter.club\/theme\/neo-gnu\/default-avatar-stream.png";
window.defaultAvatarProfileSize = "https:\/\/shitposter.club\/theme\/neo-gnu\/default-avatar-profile.png";
window.textLimit = 3800;
window.registrationsClosed = false;
window.thisSiteThinksItIsHttpButIsActuallyHttps = false;
window.siteTitle = "Shitposter Club";
window.loggedIn = false;
window.timeBetweenPolling = 5000;
window.apiRoot = 'https://shitposter.club/api/';
window.fullUrlToThisQvitterApp = 'https://shitposter.club/plugins/Qvitter/';
window.siteRootDomain = 'shitposter.club';
window.siteInstanceURL = 'https://shitposter.club/';
window.avatarServer= "";
window.defaultLinkColor = '#0084B4';
window.defaultBackgroundColor = '#f4f4f4';
window.siteBackground = '../../file/cityscape.jpg';
window.enableWelcomeText = true;
window.customWelcomeText = {"en":"<h1 style=\"text-align: center;\"><img src=\"\/custom\/spclublogo-05.png\" alt=\"Shitposter Club\"><br>A safe space on the Internet<\/h1>"};
window.urlShortenerAPIURL = 'http://qttr.at/yourls-api.php';
window.urlShortenerSignature = 'b6afeec983';
window.urlshortenerFormat = 'jsonp';
window.commonSessionToken = '99dbb9040190c2c0d1e0a991204b088116ba434cfcf532c2d423fdbd67647d1a2b737b446dfd81579980e6acd53ad37974801547b69f293e008f45bd5b89bc4a';
window.siteMaxThumbnailSize = 1000;
window.siteAttachmentURLBase = 'https://shitposter.club//file/';
window.siteAvatarURLBase = 'https://shitposter.club//avatar/';
window.siteEmail = 'shitposterclub@gmail.com';
window.siteLicenseTitle = '';
window.siteLicenseURL = 'https://shitposter.club/doc/tos';
window.customTermsOfUse = "<h2>The Rules<\/h2>\n<ol>\n<li>Do not post content that is illegal in the United States of America.<\/li>\n<li>Do not engage in behavior onsite that would get the admin or his hosting\nthreatened, e.g. doxing, harassment, posting copyrighted content that\nwill get the site DMCA'd, etc. This is a vague rule, sorry, it can't be\nhelped.<\/li>\n<li>The site should be considered NOT SAFE FOR WORK (NSFW), <em>however<\/em>,\nwe DO NOT allow: \n <ul>\n <li>\"excessive or extreme pornography\"<\/li>\n <li>gore or \"gross-out\" (e.g. \"tubgirl\") pics<\/li>\n <li>so-called \"loli hentai\" aka sexually explicit drawn depictions of children<\/li>\n <li>\"child model\" pictures<\/li>\n <\/ul>\n ...on the \"public\" (\"everyone on Shitposter Club\") timeline.\n <p>\n What this means is, do not post these pictures, or \"repeat\" them from The Whole Known Network (\"My eyes!\") timeline, or embed them.<\/li>\n<li>Do not engage in behavior that harms the functionality of the site\nitself, e.g. no hacking or exploiting it or spamming. If you're told you're doing\nsomething that is harming the technical operation of the site, stop doing it. The\nadmin's word is final.<\/li>\n<\/ol>\n<h2>My Pledge to You<\/h2>\n<p>I will not ban you or delete your posts for:\nBeing a jerk, having a terrible opinion, disagreeing with me, engaging in so-called \"hate\" or \"offensive\" speech (we have a block button, use it.)<\/p>\n<p>I will ban you or delete your posts for:\nBreaking the rules above, intentionally evading a block to post directly\nat someone who has blocked you, basically antisocial behavior that\ndirectly tries to get around any of the other rules. I will TRY to be lenient and tolerant about rules and not be a ban-Nazi.<\/p>\n<p>You own your posts, but due to the nature of federated services you\nare granting an irrevocable license for others on the network to\nsyndicate it. You are responsible for what you post.<\/p>";
window.siteLocalOnlyDefaultPath = true;
window.disableKeyboardShortcuts = false;
// available language files and their last update time
window.availableLanguages = {
"ar": "ar.json?changed=20170610161937",
"ast": "ast.json?changed=20170610161937",
"ca": "ca.json?changed=20170610161937",
"de": "de.json?changed=20170610161937",
"en": "en.json?changed=20170610161937",
"eo": "eo.json?changed=20170610161937",
"es_419": "es_419.json?changed=20170610161937",
"es": "es.json?changed=20170610161937",
"eu": "eu.json?changed=20170610161937",
"fa": "fa.json?changed=20170610161937",
"fi": "fi.json?changed=20170610161937",
"fr": "fr.json?changed=20170610161937",
"gl": "gl.json?changed=20170610161937",
"he": "he.json?changed=20170610161937",
"hy": "hy.json?changed=20170610161937",
"ia": "ia.json?changed=20170610161937",
"io": "io.json?changed=20170610161937",
"it": "it.json?changed=20170610161937",
"ja": "ja.json?changed=20170610161937",
"nb": "nb.json?changed=20170610161937",
"nl": "nl.json?changed=20170610161937",
"pl": "pl.json?changed=20170610161937",
"pt_br": "pt_br.json?changed=20170610161937",
"pt": "pt.json?changed=20170610161937",
"ru": "ru.json?changed=20170610161937",
"sq": "sq.json?changed=20170610161937",
"sv": "sv.json?changed=20170610161937",
"tr": "tr.json?changed=20170610161937",
"uk": "uk.json?changed=20170610161937",
"zh_cn": "zh_cn.json?changed=20170610161937",
"zh_tw": "zh_tw.json?changed=20170610161937",
};
</script>
<link href='https://shitposter.club/plugins/QvitterSimpleSecurity/css/ss.css?changed=20160925025913' rel='stylesheet' type='text/css'> </head>
<body class="" style="background-color:#f4f4f4">
<input id="upload-image-input" class="upload-image-input" type="file" name="upload-image-input">
<div class="topbar">
<a href="https://shitposter.club/main/public"><div id="logo"></div></a><div id="top-compose" class="hidden"></div>
<ul class="quitter-settings dropdown-menu">
<li class="dropdown-caret right">
<span class="caret-outer"></span>
<span class="caret-inner"></span>
</li>
<li class="fullwidth"><a id="top-menu-profile-link" class="no-hover-card" href="https://shitposter.club/"><div id="top-menu-profile-link-fullname"></div><div id="top-menu-profile-link-view-profile"></div></a></li>
<li class="fullwidth dropdown-divider"></li>
<li class="fullwidth"><a id="faq-link"></a></li>
<li class="fullwidth"><a id="tou-link"></a></li>
<li class="fullwidth"><a id="shortcuts-link"></a></li> <li class="fullwidth"><a id="invite-link" href="https://shitposter.club/main/invite"></a></li>
<li class="fullwidth"><a id="classic-link"></a></li>
<li class="fullwidth dropdown-divider"></li>
<li class="fullwidth"><a id="logout"></a></li>
<li class="fullwidth language dropdown-divider"></li>
<li class="language"><a class="language-link" data-tooltip="العربية – Arabic" data-lang-code="ar">العربية</a></li><li class="language"><a class="language-link" data-tooltip="asturianu – Asturian" data-lang-code="ast">asturianu</a></li><li class="language"><a class="language-link" data-tooltip="català – Catalan" data-lang-code="ca">català</a></li><li class="language"><a class="language-link" data-tooltip="Deutsch – German" data-lang-code="de">Deutsch</a></li><li class="language"><a class="language-link" data-tooltip="English" data-lang-code="en">English</a></li><li class="language"><a class="language-link" data-tooltip="esperanto – Esperanto" data-lang-code="eo">esperanto</a></li><li class="language"><a class="language-link" data-tooltip="español (Latinoamérica) – Spanish (Latin America)" data-lang-code="es_419">español (Latinoamérica)</a></li><li class="language"><a class="language-link" data-tooltip="español – Spanish" data-lang-code="es">español</a></li><li class="language"><a class="language-link" data-tooltip="euskara – Basque" data-lang-code="eu">euskara</a></li><li class="language"><a class="language-link" data-tooltip="فارسی – Persian" data-lang-code="fa">فارسی</a></li><li class="language"><a class="language-link" data-tooltip="suomi – Finnish" data-lang-code="fi">suomi</a></li><li class="language"><a class="language-link" data-tooltip="français – French" data-lang-code="fr">français</a></li><li class="language"><a class="language-link" data-tooltip="galego – Galician" data-lang-code="gl">galego</a></li><li class="language"><a class="language-link" data-tooltip="עברית – Hebrew" data-lang-code="he">עברית</a></li><li class="language"><a class="language-link" data-tooltip="հայերեն – Armenian" data-lang-code="hy">հայերեն</a></li><li class="language"><a class="language-link" data-tooltip="Interlingua" data-lang-code="ia">Interlingua</a></li><li class="language"><a class="language-link" data-tooltip="Ido" data-lang-code="io">Ido</a></li><li class="language"><a class="language-link" data-tooltip="italiano – Italian" data-lang-code="it">italiano</a></li><li class="language"><a class="language-link" data-tooltip="日本語 – Japanese" data-lang-code="ja">日本語</a></li><li class="language"><a class="language-link" data-tooltip="norsk bokmål – Norwegian Bokmål" data-lang-code="nb">norsk bokmål</a></li><li class="language"><a class="language-link" data-tooltip="Nederlands – Dutch" data-lang-code="nl">Nederlands</a></li><li class="language"><a class="language-link" data-tooltip="polski – Polish" data-lang-code="pl">polski</a></li><li class="language"><a class="language-link" data-tooltip="português (Brasil) – Portuguese (Brazil)" data-lang-code="pt_br">português (Brasil)</a></li><li class="language"><a class="language-link" data-tooltip="português – Portuguese" data-lang-code="pt">português</a></li><li class="language"><a class="language-link" data-tooltip="русский – Russian" data-lang-code="ru">русский</a></li><li class="language"><a class="language-link" data-tooltip="shqip – Albanian" data-lang-code="sq">shqip</a></li><li class="language"><a class="language-link" data-tooltip="svenska – Swedish" data-lang-code="sv">svenska</a></li><li class="language"><a class="language-link" data-tooltip="Türkçe – Turkish" data-lang-code="tr">Türkçe</a></li><li class="language"><a class="language-link" data-tooltip="українська – Ukrainian" data-lang-code="uk">українська</a></li><li class="language"><a class="language-link" data-tooltip="中文(中国) – Chinese (China)" data-lang-code="zh_cn">中文(中国)</a></li><li class="language"><a class="language-link" data-tooltip="中文(台灣) – Chinese (Taiwan)" data-lang-code="zh_tw">中文(台灣)</a></li> <li class="fullwidth language dropdown-divider"></li>
<li class="fullwidth"><a href="https://git.gnu.io/h2p/Qvitter/tree/master/locale" target="_blank" id="add-edit-language-link"></a></li>
</ul>
<div class="global-nav">
<div class="global-nav-inner">
<div class="container">
<div id="search">
<input type="text" spellcheck="false" autocomplete="off" name="q" placeholder="Sök" id="search-query" class="search-input">
<span class="search-icon">
<button class="icon nav-search" type="submit" tabindex="-1">
<span> Sök </span>
</button>
</span>
</div>
<ul class="language-dropdown">
<li class="dropdown">
<a class="dropdown-toggle">
<small></small>
<span class="current-language"></span>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li class="dropdown-caret right">
<span class="caret-outer"></span>
<span class="caret-inner"></span>
</li>
<li><a class="language-link" data-tooltip="Arabic" data-lang-code="ar">العربية</a></li><li><a class="language-link" data-tooltip="Asturian" data-lang-code="ast">asturianu</a></li><li><a class="language-link" data-tooltip="Catalan" data-lang-code="ca">català</a></li><li><a class="language-link" data-tooltip="German" data-lang-code="de">Deutsch</a></li><li><a class="language-link" data-tooltip="English" data-lang-code="en">English</a></li><li><a class="language-link" data-tooltip="Esperanto" data-lang-code="eo">esperanto</a></li><li><a class="language-link" data-tooltip="Spanish (Latin America)" data-lang-code="es_419">español (Latinoamérica)</a></li><li><a class="language-link" data-tooltip="Spanish" data-lang-code="es">español</a></li><li><a class="language-link" data-tooltip="Basque" data-lang-code="eu">euskara</a></li><li><a class="language-link" data-tooltip="Persian" data-lang-code="fa">فارسی</a></li><li><a class="language-link" data-tooltip="Finnish" data-lang-code="fi">suomi</a></li><li><a class="language-link" data-tooltip="French" data-lang-code="fr">français</a></li><li><a class="language-link" data-tooltip="Galician" data-lang-code="gl">galego</a></li><li><a class="language-link" data-tooltip="Hebrew" data-lang-code="he">עברית</a></li><li><a class="language-link" data-tooltip="Armenian" data-lang-code="hy">հայերեն</a></li><li><a class="language-link" data-tooltip="Interlingua" data-lang-code="ia">Interlingua</a></li><li><a class="language-link" data-tooltip="Ido" data-lang-code="io">Ido</a></li><li><a class="language-link" data-tooltip="Italian" data-lang-code="it">italiano</a></li><li><a class="language-link" data-tooltip="Japanese" data-lang-code="ja">日本語</a></li><li><a class="language-link" data-tooltip="Norwegian Bokmål" data-lang-code="nb">norsk bokmål</a></li><li><a class="language-link" data-tooltip="Dutch" data-lang-code="nl">Nederlands</a></li><li><a class="language-link" data-tooltip="Polish" data-lang-code="pl">polski</a></li><li><a class="language-link" data-tooltip="Portuguese (Brazil)" data-lang-code="pt_br">português (Brasil)</a></li><li><a class="language-link" data-tooltip="Portuguese" data-lang-code="pt">português</a></li><li><a class="language-link" data-tooltip="Russian" data-lang-code="ru">русский</a></li><li><a class="language-link" data-tooltip="Albanian" data-lang-code="sq">shqip</a></li><li><a class="language-link" data-tooltip="Swedish" data-lang-code="sv">svenska</a></li><li><a class="language-link" data-tooltip="Turkish" data-lang-code="tr">Türkçe</a></li><li><a class="language-link" data-tooltip="Ukrainian" data-lang-code="uk">українська</a></li><li><a class="language-link" data-tooltip="Chinese (China)" data-lang-code="zh_cn">中文(中国)</a></li><li><a class="language-link" data-tooltip="Chinese (Taiwan)" data-lang-code="zh_tw">中文(台灣)</a></li> </ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id="no-js-error">Please enable javascript to use this site.<script>var element = document.getElementById('no-js-error'); element.parentNode.removeChild(element);</script></div>
<div id="page-container">
<div id="site-notice"><h1 style="color: white">WARNING: this site filled with KREMLIN TROLLS</h1><div id="site-notice-minimize">_</div></div> <div class="front-welcome-text "></div>
<div id="login-register-container">
<div id="login-content">
<form id="form_login" class="form_settings" action="https://shitposter.club/main/qlogin" method="post">
<div id="username-container">
<input id="nickname" name="nickname" type="text" value="" tabindex="1" />
</div>
<table class="password-signin"><tbody><tr>
<td class="flex-table-primary">
<div class="placeholding-input">
<input id="password" name="password" type="password" tabindex="2" value="" />
</div>
</td>
<td class="flex-table-secondary">
<button class="submit" type="submit" id="submit-login" tabindex="4"></button>
</td>
</tr></tbody></table>
<div id="remember-forgot">
<input type="checkbox" id="rememberme" name="rememberme" value="yes" tabindex="3" checked="checked"> <span id="rememberme_label"></span> · <a id="forgot-password" href="https://shitposter.club/main/recoverpassword" ></a>
<input type="hidden" id="token" name="token" value="99dbb9040190c2c0d1e0a991204b088116ba434cfcf532c2d423fdbd67647d1a2b737b446dfd81579980e6acd53ad37974801547b69f293e008f45bd5b89bc4a">
<a href="https://shitposter.club/main/openid" id="openid-login" title="OpenID" donthijack>OpenID</a> </div>
</form>
</div>
<div class="front-signup">
<h2></h2>
<div class="signup-input-container"><input placeholder="" type="text" name="user[name]" autocomplete="off" class="text-input" id="signup-user-name"></div>
<div class="signup-input-container"><input placeholder="" type="text" name="user[email]" autocomplete="off" id="signup-user-email"></div>
<div class="signup-input-container"><input placeholder="" type="password" name="user[user_password]" class="text-input" id="signup-user-password"></div>
<button id="signup-btn-step1" class="signup-btn" type="submit"></button>
</div>
<div id="other-servers-link"></div><div id="qvitter-notice-logged-out"></div></div>
<div id="feed">
<div id="feed-header">
<div id="feed-header-inner">
<h2>
<span id="stream-header"></span>
</h2>
<div class="reload-stream"></div>
</div>
<div id="feed-header-description"></div>
</div>
<div id="new-queets-bar-container" class="hidden"><div id="new-queets-bar"></div></div>
<div id="feed-body"></div>
</div>
<div id="hidden-html"><ol class="notices xoxo"><style type="text/css" media="">.greentext { color: green; }</style>
<style type="text/css" media="">
.sensitive-blocker {
display: none;
}
div.stream-item.notice.sensitive-notice .sensitive-blocker {
display: block;
width: 100%;
height: 100%;
position: absolute;
z-index: 100;
/*background-color: #d4baba;*/
background-color: black;
background-image: url(/custom/afterdark.jpg);
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
transition: opacity 1s ease-in-out;
}
.sensitive-blocker:hover {
opacity: .5;
}
div.stream-item.notice.expanded.sensitive-notice .sensitive-blocker {
display: none;
background-color: transparent;
background-image: none;
}
</style>
<style type="text/css" media="">span.dicerolls { font-weight: bold; border: 1px solid black; }</style>
<li class="h-entry notice post notice-source-PleromaFE" id="notice-7369654">
<span class="tagcontainer">
<section class="notice-headers">
<a href="https://shitposter.club/notice/7369654" class="notice-title">shp (shpuld)'s status on Thursday, 22-Feb-2018 09:20:12 UTC</a>
<a href="https://shitposter.club/shpuld" class="h-card p-author" title="shpuld">
<img src="https://shitposter.club/avatar/5381-48-20171230093854.png" class="avatar u-photo" width="48" height="48" alt="shp"/>
shp</a>
<div class="parents">
<a href="https://testing.pleroma.lol/objects/b319022a-4946-44c5-9de9-34801f95507b" class="u-in-reply-to" rel="in-reply-to">in reply to</a>
<ul class="addressees">
<li class="h-card">
<a href="https://testing.pleroma.lol/users/lain" title="lain" class="addressee account">Rael Electric Razor</a>
</li>
</ul>
</div>
</section>
<article class="e-content">@<a href="https://testing.pleroma.lol/users/lain" class="h-card mention" title="Rael Electric Razor">lain</a> me far right</article>
<footer>
<a rel="bookmark" class="timestamp" href="https://shitposter.club/conversation/4378601#notice-7369654">
<time class="dt-published" datetime="2018-02-22T09:20:12+00:00" title="Thursday, 22-Feb-2018 09:20:12 UTC">about a day ago</time>
</a>
<span class="source">from <span class="device">Pleroma FE</span>
</span>
<a href="https://shitposter.club/notice/7369654" class="permalink u-url">permalink</a>
</footer>
</span>
</li>
</ol></div>
<div id="footer"><div id="footer-spinner-container"></div></div>