Misskey: Pleromaからの削除通知を受け取れない問題

Created on 6 Jul 2020  ·  4Comments  ·  Source: syuilo/misskey

💡 Summary

Pleromaでは削除アクティビティのobjectのURLにアクセスすると404が返ってくる仕様ですので、下記の処理でコケてしまい投稿が正常に削除されません。

https://github.com/syuilo/misskey/blob/4fd06369d355f032b5eb245dfd98faadee2289f9/src/remote/activitypub/kernel/delete/index.ts#L17

自分で修正を行ってみようと行ってみようと思い、Mastodon側の実装などを読んでいたのですが、ここはResolverを通さずdeleteNoteに直接投げてしまえばと思ったのですが、どうなんでしょうか...?

https://github.com/mfmfuyu/misskey/commits/patch-delete-activity (仮実装なので雑です)

https://github.com/tootsuite/mastodon/blob/d48a1289e448b5d21f3cd9f5dd07e539e97a2b4c/app/lib/activitypub/activity/delete.rb#L28

🙂 Expected Behavior

投稿が正常に削除される

☹️ Actual Behavior

投稿が削除されない

📝 Steps to Reproduce

  1. Pleromaから投稿を行う
  2. Pleromaで投稿を削除する

📌 Environment

  • Misskey (b08e3f59d3a6cdcaae5da590de560afa84634697)
  • Pleroma (2.0.50-1709-g7c7a6509)
⚠️bug? 🌌Federation

All 4 comments


まず、削除対象objectがPost(Note)なのかActorなのか確定させる必要があって (Misskey今Actor消す処理無いので常にDeleteNoteしかないですが)

そして、削除対象objectのパターンは3つ考えられて

1つ目がhttps://example.com/objects/0001のようなstringが来るパターンで、これはリモートresolveする必要があるのですが
リモートでは間違いなく消えてるのでリモートresolveせずにtype保留にしてます。
※ここが問題のリモートアクセスして404返されてそのまま終わってしまうという部分の解消ですね。

2つ目がTombstone送られてくる場合で、これは実装によってはformerTypeで元のtypeが取得できることがあるので
可能ならばここで元のtype取得しています https://www.w3.org/TR/activitystreams-vocabulary/#dfn-tombstone

{
    "type": "Tombstone",
    "id": "https://example.com/objects/0001",
    "formerType": "Note"
}

3つ目が元のオブジェクトがそのまま送られてくる場合で (まずないと思いますが)
この場合は元のtypeとして扱うようにしています。

{
    "type": "Note",
    "id": "https://example.com/objects/0001"
}

そしてここまで来て元のtypeが確定できない場合 (まずこれになりますが)
「対象objectのid が Acticity Actor と同一の場合 それはtype=Actorに違いない」ということが成り立つため
その場合はtypeをActor (ここでは暫定的にPerson) として確定させています。
これはMastodonでいうここだと思います。
https://github.com/tootsuite/mastodon/blob/d48a1289e448b5d21f3cd9f5dd07e539e97a2b4c/app/lib/activitypub/activity/delete.rb#L5
見た感じMastodonのPost or Actor を分岐は、結局この判定しかしてないないみたいですが。

そして、対象が Post or Actor かによって処理を分岐させています。 (Actorを消す処理は今ないですが…)

おそらく https://github.com/syuilo/misskey/issues/5642 の2の事象と同じ

なるほど、Actorの削除通知も捌く必要があったのですね
私の実装よりもmei23さんの実装の方が良いので、マージはそちらの変更の方が良さそうですね。

また、#5642 に関してはIssueを見逃しておりましたが同じ事象のようですね。
重複してしまっているので #5642 にまとめるために、こちらのIssueは閉じようと思います。

Was this page helpful?
0 / 5 - 0 ratings