フォロワー限定投稿の本人リノートが連合されず、未知の投稿の場合に本人が引用/リプライしても連合されない (そもそもフォロワー限定投稿を照会出来ない)
💡 Summary
タイトル通りです。
- 投稿者本人がフォロワー限定投稿をリノートしても、リモートには連合されない
- 投稿者本人がフォロワー限定投稿を引用しても、それが未知のもの(当該サーバーとの連合開始以前の投稿等)である場合は、引用したノート本体のみ連合され、どのノートが引用されているかは分からず(引用でないように見える)、引用されたノートの連合もされない
- 未知のフォロワー限定投稿に対し、リプライを追加しても、親投稿、リプライともに連合されない
これはピン留めしている投稿であっても同様です。
🥰 Expected Behavior
いずれも正しく連合される
🤬 Actual Behavior
連合されていない
📝 Steps to Reproduce
- フォロワー限定投稿をします
- 当該アカウントを誰もフォローしていないサーバーから、当該アカウントをフォローします
- リノート/引用/リプライします(挙動確認ポイント1)
- フォロワー限定投稿を追加で行います
- それもリノート/引用/リプライします(挙動確認ポイント2)
💻 Frontend Environment
* Model and OS of the device(s): any
* Browser: any
* Server URL: https://misskey.niri.la/ → https://virtualkemomimi.net/ , https://mi.yude.moe/
* Misskey:2025.2.0-kinel.1 , 2025.2.0-mewl.0 , 2024.8.0
🛰 Backend Environment (for server admin)
* Installation Method or Hosting Service:
* Misskey:
* Node:
* PostgreSQL:
* Redis:
* OS and Architecture:
Do you want to address this bug yourself?
- [ ] Yes, I will patch the bug myself and send a pull request
未知の投稿の場合、リプライを追加した場合でも連合されなかったので追記
そもそも未知のフォロワー限定投稿は照会自体が出来ていないようですね…(要確認)
調査したのでメモ:
リノートした鍵投稿のURLは_misskey_quoteに格納されて相手まで届いていて(ログで見た)、そのURLをもとに解決を図ろうとまではしているようでした。ただ…
https://github.com/misskey-dev/misskey/blob/b5767c315a31363edac4fe39aa5202f94942f7e9/packages/backend/src/server/ActivityPubServerService.ts#L648-L652 ↑で弾かれています。public/homeのみ取るようになってるので、followersなノートは引っかかりません。
で、試しにリクエストに乗ってきたkeyIdから誰か特定してフォロワーかどうかを確認する実装を仕込んでみましたが、instance.actorのkeyを使って照会してきているようで、このロジックは役に立ちませんでした。
照会する側でkeyを設定するときってどうやってるのかと思ったら、 https://github.com/misskey-dev/misskey/blob/26506677c2debbe7d58b26f1e5c98b834bc72e0f/packages/backend/src/core/activitypub/ApResolverService.ts#L107-L113 のようになっていました。this.userが指定されていなければactorを使う動きになっているようですが、このthis.userは上記の個所でしか設定されないので、実質actorのkeyのみを使うようになっているようでした。
ここで個人のkeyを使えば…?とも思ったのですが、力尽きました
実質actorのkeyのみを使うようになっている
actorを使いまわす用かも…? とにかく、現状ではだいぶ厳しい感じがします
やれることとして
- 取得して401/403になるAnnounceされたノートの解決でその人をフォローしているactor(user)をresolverのuserとして使うようにする
- private, (とspecified)も適切な閲覧権限があるactorでsignedGetされたら取得できるように修正する
これで取得できる可能性
https://github.com/misskey-dev/misskey/blob/105cc4b50a97049fdd2d83d1493e7dfbe15507a6/packages/backend/src/core/activitypub/ApInboxService.ts#L323-L337 この部分で4xxならすべて弾いている部分でresolverを適切に変更して再度行うイメージ