メンションの最大数をロールごとに設定可能にする
What
ユーザーが投稿できるメンションとダイレクト投稿の宛先の数をロールごとに制限する。リモートの投稿も対象となる。
Why
メンションを多数つけた投稿を行うことで、スパムを投稿しようとする攻撃者は、限られたレートリミットにおいてスパムの送付対象となる被害ユーザーを増やすことができる。そのため、一つのノートにつけられるメンションの数を制限することで、スパムを送付する効率を下げることができると考えられる。
ロールごとにメンションとダイレクト投稿の宛先の数を制限することにより、信頼のおけるユーザーのみが複数のメンションを許すというサーバーの運用が可能になる。
Additional info (optional)
Checklist
- [x] Read the contribution guide
- [x] Test working in a local environment
- [ ] (If needed) Add story of storybook
- [ ] (If needed) Update CHANGELOG.md
- [ ] (If possible) Add tests
Related: https://github.com/misskey-dev/misskey/issues/13332
このPRによるapi.jsonの差分
差分はこちら
--- base
+++ head
@@ -53625,6 +53625,15 @@
}
}
},
+ "CONTAINS_TOO_MANY_MENTIONS": {
+ "value": {
+ "error": {
+ "message": "Cannot post because it exceeds the allowed number of mentions.",
+ "code": "CONTAINS_TOO_MANY_MENTIONS",
+ "id": "4de0363a-3046-481b-9b0f-feff3e211025"
+ }
+ }
+ },
"INVALID_PARAM": {
"value": {
"error": {
@@ -77834,6 +77843,9 @@
"canPublicNote": {
"type": "boolean"
},
+ "mentionLimit": {
+ "type": "integer"
+ },
"canInvite": {
"type": "boolean"
},
@@ -77902,6 +77914,7 @@
"gtlAvailable",
"ltlAvailable",
"canPublicNote",
+ "mentionLimit",
"canInvite",
"inviteLimit",
"inviteLimitCycle",
https://github.com/misskey-dev/misskey/issues/13332#issuecomment-1947965237 とはいえロールで切れるのならそれでもよさそう
Codecov Report
Attention: Patch coverage is 68.18182% with 7 lines in your changes are missing coverage. Please review.
Project coverage is 62.83%. Comparing base (
16f16e6) to head (3420057). Report is 2 commits behind head on develop.
:exclamation: Current head 3420057 differs from pull request most recent head 9072231. Consider uploading reports for the commit 9072231 to get more accurate results
| Files | Patch % | Lines |
|---|---|---|
| ...s/backend/src/server/api/endpoints/notes/create.ts | 54.54% | 5 Missing :warning: |
| packages/backend/src/core/NoteCreateService.ts | 50.00% | 2 Missing :warning: |
Additional details and impacted files
@@ Coverage Diff @@
## develop #13343 +/- ##
===========================================
Coverage 62.83% 62.83%
===========================================
Files 986 804 -182
Lines 110646 90252 -20394
Branches 5358 5251 -107
===========================================
- Hits 69527 56712 -12815
+ Misses 39453 32112 -7341
+ Partials 1666 1428 -238
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
なですきーで実運用してみているのですが、リモートの投稿の場合にジョブキューのInboxにDelayedで溜まってしまう現象が起きています packages/backend/src/queue/processors/InboxProcessorService.tsなどで例外をキャッチする必要があるかもしれません
参考: https://github.com/misskey-dev/misskey/pull/13428 https://github.com/MisskeyIO/misskey/pull/468
・デフォルトのベースロールのメンション上限は20アカウントに設定しています。 ・解決できないリモートユーザーは、メンションの人数に含めない実装になっています。(そのためリモートユーザーへのメンションは自動テスト項目から除外しています。)
CHANGELOG要りそう
autogenを実行しても手元では何も差分が生まれなかったので、CIのエラーはちょっとわからないです…。
$ pnpm run build-misskey-js-with-types
> [email protected] build-misskey-js-with-types /home/yuriha/misskey
> pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api
> [email protected] build-pre /home/yuriha/misskey
> node ./scripts/build-pre.js
Scope: 2 of 8 workspace projects
packages/misskey-reversi build$ node ./build.js
└─ Done in 100ms
packages/backend build$ swc src -d built -D
│ Successfully compiled: 800 files, copied 27 files with swc (401.53ms)
└─ Done in 509ms
> backend@ generate-api-json /home/yuriha/misskey/packages/backend
> pnpm build && node ./generate_api_json.js
(中略)
api-extractor 7.39.1 - https://api-extractor.com/
Using configuration from ./api-extractor.json
Analysis will use the bundled TypeScript version 5.3.3
Writing: /home/yuriha/misskey/packages/misskey-js/temp/misskey-js.api.json
The API report is up to date: temp/misskey-js.api.md
API Extractor completed successfully
$ git status
On branch limit-mentions
Your branch is up to date with 'origin/limit-mentions'.
nothing to commit, working tree clean
develop取り込んだらワンチャン全チェック通らないかな
Chromatic以外は全部通ってそう
developにマージしやすいようにupdateしたらテスト落ちたけど1個前でpassしてるのでdevelopがチェック落ちているのが悪そう
👍
Thank you for sending us a great Pull Request! 👍 Please regenerate misskey-js type definitions! 🙏
example:
pnpm run build-misskey-js-with-types