Drop more OStatus stuff

This commit is contained in:
Thomas Sileo 2018-07-22 12:04:18 +02:00
parent a165e36303
commit deea5be452
4 changed files with 33 additions and 12 deletions

View file

@ -16,8 +16,8 @@ from little_boxes import strtobool
from little_boxes.activitypub import _to_list from little_boxes.activitypub import _to_list
from little_boxes.backend import Backend from little_boxes.backend import Backend
from little_boxes.errors import ActivityGoneError from little_boxes.errors import ActivityGoneError
from little_boxes.errors import NotAnActivityError
from little_boxes.errors import Error from little_boxes.errors import Error
from little_boxes.errors import NotAnActivityError
from config import BASE_URL from config import BASE_URL
from config import DB from config import DB

View file

@ -6,9 +6,9 @@ import random
import requests import requests
from celery import Celery from celery import Celery
from little_boxes import activitypub as ap from little_boxes import activitypub as ap
from little_boxes.errors import NotAnActivityError
from little_boxes.errors import ActivityGoneError from little_boxes.errors import ActivityGoneError
from little_boxes.errors import ActivityNotFoundError from little_boxes.errors import ActivityNotFoundError
from little_boxes.errors import NotAnActivityError
from little_boxes.httpsig import HTTPSigAuth from little_boxes.httpsig import HTTPSigAuth
from little_boxes.linked_data_sig import generate_signature from little_boxes.linked_data_sig import generate_signature
from requests.exceptions import HTTPError from requests.exceptions import HTTPError
@ -44,10 +44,17 @@ def process_new_activity(self, iri: str) -> None:
# Is the activity expected? # Is the activity expected?
# following = ap.get_backend().following() # following = ap.get_backend().following()
should_forward = False should_forward = False
should_delete = False
tag_stream = False tag_stream = False
if activity.has_type(ap.ActivityType.ANNOUNCE): if activity.has_type(ap.ActivityType.ANNOUNCE):
tag_stream = True tag_stream = True
try:
activity.get_object()
except NotAnActivityError:
# Most likely on OStatus notice
tag_stream = False
should_delete = True
elif activity.has_type(ap.ActivityType.CREATE): elif activity.has_type(ap.ActivityType.CREATE):
note = activity.get_object() note = activity.get_object()
@ -56,13 +63,17 @@ def process_new_activity(self, iri: str) -> None:
tag_stream = True tag_stream = True
if note.inReplyTo: if note.inReplyTo:
reply = ap.fetch_remote_activity(note.inReplyTo) try:
if ( reply = ap.fetch_remote_activity(note.inReplyTo)
reply.id.startswith(ID) or reply.has_mention(ID) if (
) and activity.is_public(): reply.id.startswith(ID) or reply.has_mention(ID)
# The reply is public "local reply", forward the reply (i.e. the original activity) to the original ) and activity.is_public():
# recipients # The reply is public "local reply", forward the reply (i.e. the original activity) to the
should_forward = True # original recipients
should_forward = True
except NotAnActivityError:
# Most likely a reply to an OStatus notce
should_delete = True
# (partial) Ghost replies handling # (partial) Ghost replies handling
# [X] This is the first time the server has seen this Activity. # [X] This is the first time the server has seen this Activity.
@ -82,7 +93,7 @@ def process_new_activity(self, iri: str) -> None:
note = DB.activities.find_one( note = DB.activities.find_one(
{"activity.object.id": activity.get_object().id} {"activity.object.id": activity.get_object().id}
) )
if note["meta"].get("forwarded", False): if note and note["meta"].get("forwarded", False):
# If the activity was originally forwarded, forward the delete too # If the activity was originally forwarded, forward the delete too
should_forward = True should_forward = True
@ -90,10 +101,19 @@ def process_new_activity(self, iri: str) -> None:
log.info(f"will forward {activity!r} to followers") log.info(f"will forward {activity!r} to followers")
activity.forward(back.followers_as_recipients()) activity.forward(back.followers_as_recipients())
if should_delete:
log.info(f"will soft delete {activity!r}")
log.info(f"{iri} tag_stream={tag_stream}") log.info(f"{iri} tag_stream={tag_stream}")
DB.activities.update_one( DB.activities.update_one(
{"remote_id": activity.id}, {"remote_id": activity.id},
{"$set": {"meta.stream": tag_stream, "meta.forwarded": should_forward}}, {
"$set": {
"meta.stream": tag_stream,
"meta.forwarded": should_forward,
"meta.deleted": should_delete,
}
},
) )
log.info(f"new activity {iri} processed") log.info(f"new activity {iri} processed")

View file

@ -3,8 +3,8 @@ import json
import little_boxes.activitypub as ap import little_boxes.activitypub as ap
import mf2py import mf2py
import requests import requests
from little_boxes.webfinger import get_actor_url
from little_boxes.errors import NotAnActivityError from little_boxes.errors import NotAnActivityError
from little_boxes.webfinger import get_actor_url
def lookup(url: str) -> ap.BaseActivity: def lookup(url: str) -> ap.BaseActivity:

View file

@ -5,6 +5,7 @@ from little_boxes import activitypub as ap
from little_boxes.errors import NotAnActivityError from little_boxes.errors import NotAnActivityError
from little_boxes.urlutils import check_url from little_boxes.urlutils import check_url
from little_boxes.urlutils import is_url_valid from little_boxes.urlutils import is_url_valid
from .lookup import lookup from .lookup import lookup