forked from forks/microblog.pub
Drop unknown Delete message
This commit is contained in:
parent
6c12eed0fc
commit
6daf8d6f16
2 changed files with 12 additions and 2 deletions
|
@ -479,7 +479,9 @@ class MicroblogPubBackend(Backend):
|
||||||
question = create.get_object()
|
question = create.get_object()
|
||||||
if question.has_type(ap.ActivityType.QUESTION):
|
if question.has_type(ap.ActivityType.QUESTION):
|
||||||
now = datetime.now(timezone.utc)
|
now = datetime.now(timezone.utc)
|
||||||
dt = parser.parse(question.closed or question.endTime).astimezone(timezone.utc)
|
dt = parser.parse(question.closed or question.endTime).astimezone(
|
||||||
|
timezone.utc
|
||||||
|
)
|
||||||
minutes = int((dt - now).total_seconds() / 60)
|
minutes = int((dt - now).total_seconds() / 60)
|
||||||
Tasks.fetch_remote_question(create.id, minutes)
|
Tasks.fetch_remote_question(create.id, minutes)
|
||||||
|
|
||||||
|
|
10
app.py
10
app.py
|
@ -1817,7 +1817,7 @@ def inbox():
|
||||||
"failed to verify request, trying to verify the payload by fetching the remote"
|
"failed to verify request, trying to verify the payload by fetching the remote"
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
data = get_backend().fetch_iri(data["id"])
|
remote_data = get_backend().fetch_iri(data["id"])
|
||||||
except ActivityGoneError:
|
except ActivityGoneError:
|
||||||
# XXX Mastodon sends Delete activities that are not dereferencable, it's the actor url with #delete
|
# XXX Mastodon sends Delete activities that are not dereferencable, it's the actor url with #delete
|
||||||
# appended, so an `ActivityGoneError` kind of ensure it's "legit"
|
# appended, so an `ActivityGoneError` kind of ensure it's "legit"
|
||||||
|
@ -1831,6 +1831,11 @@ def inbox():
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception(f"failed to fetch remote for payload {data!r}")
|
logger.exception(f"failed to fetch remote for payload {data!r}")
|
||||||
|
|
||||||
|
# Friendica does not returns a 410, but a 302 that redirect to an HTML page
|
||||||
|
if ap._has_type(data["type"], ActivityType.DELETE):
|
||||||
|
logger.info(f"received a Delete for an unknown actor {data!r}, drop it")
|
||||||
|
return Response(status=201)
|
||||||
|
|
||||||
# Track/store the payload for analysis
|
# Track/store the payload for analysis
|
||||||
ip, geoip = _get_ip()
|
ip, geoip = _get_ip()
|
||||||
|
|
||||||
|
@ -1856,6 +1861,9 @@ def inbox():
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# We fetched the remote data successfully
|
||||||
|
data = remote_data
|
||||||
print(data)
|
print(data)
|
||||||
activity = ap.parse_activity(data)
|
activity = ap.parse_activity(data)
|
||||||
logger.debug(f"inbox activity={activity}/{data}")
|
logger.debug(f"inbox activity={activity}/{data}")
|
||||||
|
|
Loading…
Reference in a new issue