misskey icon indicating copy to clipboard operation
misskey copied to clipboard

フォロワー限定投稿の本人リノートが連合されず、未知の投稿の場合に本人が引用/リプライしても連合されない (そもそもフォロワー限定投稿を照会出来ない)

Open Sayamame-beans opened this issue 10 months ago • 5 comments

💡 Summary

タイトル通りです。

  • 投稿者本人がフォロワー限定投稿をリノートしても、リモートには連合されない
  • 投稿者本人がフォロワー限定投稿を引用しても、それが未知のもの(当該サーバーとの連合開始以前の投稿等)である場合は、引用したノート本体のみ連合され、どのノートが引用されているかは分からず(引用でないように見える)、引用されたノートの連合もされない
  • 未知のフォロワー限定投稿に対し、リプライを追加しても、親投稿、リプライともに連合されない

これはピン留めしている投稿であっても同様です。

🥰 Expected Behavior

いずれも正しく連合される

🤬 Actual Behavior

連合されていない

📝 Steps to Reproduce

  1. フォロワー限定投稿をします
  2. 当該アカウントを誰もフォローしていないサーバーから、当該アカウントをフォローします
  3. リノート/引用/リプライします(挙動確認ポイント1)
  4. フォロワー限定投稿を追加で行います
  5. それもリノート/引用/リプライします(挙動確認ポイント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

Sayamame-beans avatar Feb 17 '25 23:02 Sayamame-beans

未知の投稿の場合、リプライを追加した場合でも連合されなかったので追記

Sayamame-beans avatar Feb 18 '25 14:02 Sayamame-beans

そもそも未知のフォロワー限定投稿は照会自体が出来ていないようですね…(要確認)

Sayamame-beans avatar Feb 18 '25 15:02 Sayamame-beans

調査したのでメモ:


リノートした鍵投稿の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を使えば…?とも思ったのですが、力尽きました

samunohito avatar Nov 26 '25 13:11 samunohito

実質actorのkeyのみを使うようになっている

actorを使いまわす用かも…? とにかく、現状ではだいぶ厳しい感じがします

samunohito avatar Nov 26 '25 14:11 samunohito

やれることとして

  1. 取得して401/403になるAnnounceされたノートの解決でその人をフォローしているactor(user)をresolverのuserとして使うようにする
  2. private, (とspecified)も適切な閲覧権限があるactorでsignedGetされたら取得できるように修正する

これで取得できる可能性

https://github.com/misskey-dev/misskey/blob/105cc4b50a97049fdd2d83d1493e7dfbe15507a6/packages/backend/src/core/activitypub/ApInboxService.ts#L323-L337 この部分で4xxならすべて弾いている部分でresolverを適切に変更して再度行うイメージ

tai-cha avatar Nov 26 '25 14:11 tai-cha