summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-03-24 15:43:36 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-03-24 15:43:36 +0900
commitf01e6ef6bf061b6c49cc7d9188160e41edad421b (patch)
treed7f5f3c243dc23a0c127e92f62429285cea0332c
parentfix: redesign cat ears (#10039) (diff)
downloadsharkey-f01e6ef6bf061b6c49cc7d9188160e41edad421b.tar.gz
sharkey-f01e6ef6bf061b6c49cc7d9188160e41edad421b.tar.bz2
sharkey-f01e6ef6bf061b6c49cc7d9188160e41edad421b.zip
enhance(backend): リモートユーザーのチャート生成を無効にするオプションを追加
-rw-r--r--CHANGELOG.md2
-rw-r--r--locales/ja-JP.yml1
-rw-r--r--packages/backend/migration/1679639483253-enableChartsForRemoteUser.js11
-rw-r--r--packages/backend/src/core/NoteCreateService.ts7
-rw-r--r--packages/backend/src/core/NoteDeleteService.ts9
-rw-r--r--packages/backend/src/models/entities/Meta.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/meta.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-meta.ts5
-rw-r--r--packages/frontend/src/pages/admin/settings.vue7
9 files changed, 47 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 976db8a6f4..a69c72e25e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,7 +21,7 @@
- センシティブワードの一覧にピン留めユーザーのIDが表示される問題を修正
### Server
--
+- リモートユーザーのチャート生成を無効にするオプションを追加
## 13.10.2
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 36d4a4f2f2..cc13ffbfa7 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -981,6 +981,7 @@ drivecleaner: "ドライブクリーナー"
retryAllQueuesNow: "すべてのキューを今すぐ再試行"
retryAllQueuesConfirmTitle: "今すぐ再試行しますか?"
retryAllQueuesConfirmText: "一時的にサーバーの負荷が増大することがあります。"
+enableChartsForRemoteUser: "リモートユーザーのチャートを生成"
_achievements:
earnedAt: "獲得日時"
diff --git a/packages/backend/migration/1679639483253-enableChartsForRemoteUser.js b/packages/backend/migration/1679639483253-enableChartsForRemoteUser.js
new file mode 100644
index 0000000000..42faab7466
--- /dev/null
+++ b/packages/backend/migration/1679639483253-enableChartsForRemoteUser.js
@@ -0,0 +1,11 @@
+export class enableChartsForRemoteUser1679639483253 {
+ name = 'enableChartsForRemoteUser1679639483253'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" ADD "enableChartsForRemoteUser" boolean NOT NULL DEFAULT true`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableChartsForRemoteUser"`);
+ }
+}
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index 2fc2a3d54f..10d74e4218 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -435,9 +435,12 @@ export class NoteCreateService implements OnApplicationShutdown {
createdAt: User['createdAt'];
isBot: User['isBot'];
}, data: Option, silent: boolean, tags: string[], mentionedUsers: MinimumUser[]) {
- // 統計を更新
+ const meta = await this.metaService.fetch();
+
this.notesChart.update(note, true);
- this.perUserNotesChart.update(user, note, true);
+ if (meta.enableChartsForRemoteUser || (user.host == null)) {
+ this.perUserNotesChart.update(user, note, true);
+ }
// Register host
if (this.userEntityService.isRemoteUser(user)) {
diff --git a/packages/backend/src/core/NoteDeleteService.ts b/packages/backend/src/core/NoteDeleteService.ts
index 571b625523..93cb68bbfe 100644
--- a/packages/backend/src/core/NoteDeleteService.ts
+++ b/packages/backend/src/core/NoteDeleteService.ts
@@ -16,6 +16,7 @@ import { ApDeliverManagerService } from '@/core/activitypub/ApDeliverManagerServ
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { bindThis } from '@/decorators.js';
+import { MetaService } from '@/core/MetaService.js';
@Injectable()
export class NoteDeleteService {
@@ -39,6 +40,7 @@ export class NoteDeleteService {
private federatedInstanceService: FederatedInstanceService,
private apRendererService: ApRendererService,
private apDeliverManagerService: ApDeliverManagerService,
+ private metaService: MetaService,
private notesChart: NotesChart,
private perUserNotesChart: PerUserNotesChart,
private instanceChart: InstanceChart,
@@ -95,9 +97,12 @@ export class NoteDeleteService {
}
//#endregion
- // 統計を更新
+ const meta = await this.metaService.fetch();
+
this.notesChart.update(note, false);
- this.perUserNotesChart.update(user, note, false);
+ if (meta.enableChartsForRemoteUser || (user.host == null)) {
+ this.perUserNotesChart.update(user, note, false);
+ }
if (this.userEntityService.isRemoteUser(user)) {
this.federatedInstanceService.fetch(user.host).then(i => {
diff --git a/packages/backend/src/models/entities/Meta.ts b/packages/backend/src/models/entities/Meta.ts
index 57338ecbd2..179fb53564 100644
--- a/packages/backend/src/models/entities/Meta.ts
+++ b/packages/backend/src/models/entities/Meta.ts
@@ -396,6 +396,11 @@ export class Meta {
})
public enableActiveEmailValidation: boolean;
+ @Column('boolean', {
+ default: true,
+ })
+ public enableChartsForRemoteUser: boolean;
+
@Column('jsonb', {
default: { },
})
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
index ce7e0d569d..28e42e578b 100644
--- a/packages/backend/src/server/api/endpoints/admin/meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -239,6 +239,10 @@ export const meta = {
type: 'boolean',
optional: true, nullable: false,
},
+ enableChartsForRemoteUser: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
policies: {
type: 'object',
optional: false, nullable: false,
@@ -337,6 +341,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
deeplIsPro: instance.deeplIsPro,
enableIpLogging: instance.enableIpLogging,
enableActiveEmailValidation: instance.enableActiveEmailValidation,
+ enableChartsForRemoteUser: instance.enableChartsForRemoteUser,
policies: { ...DEFAULT_POLICIES, ...instance.policies },
};
});
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index 2f23aca243..88c0565e4a 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -93,6 +93,7 @@ export const paramDef = {
objectStorageS3ForcePathStyle: { type: 'boolean' },
enableIpLogging: { type: 'boolean' },
enableActiveEmailValidation: { type: 'boolean' },
+ enableChartsForRemoteUser: { type: 'boolean' },
},
required: [],
} as const;
@@ -382,6 +383,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
set.enableActiveEmailValidation = ps.enableActiveEmailValidation;
}
+ if (ps.enableChartsForRemoteUser !== undefined) {
+ set.enableChartsForRemoteUser = ps.enableChartsForRemoteUser;
+ }
+
await this.metaService.update(set);
this.moderationLogService.insertModerationLog(me, 'updateMeta');
});
diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue
index 12f341c01d..ce6a14600c 100644
--- a/packages/frontend/src/pages/admin/settings.vue
+++ b/packages/frontend/src/pages/admin/settings.vue
@@ -43,6 +43,10 @@
<MkSwitch v-model="emailRequiredForSignup">
<template #label>{{ i18n.ts.emailRequiredForSignup }}</template>
</MkSwitch>
+
+ <MkSwitch v-model="enableChartsForRemoteUser">
+ <template #label>{{ i18n.ts.enableChartsForRemoteUser }}</template>
+ </MkSwitch>
</div>
</FormSection>
@@ -175,6 +179,7 @@ let cacheRemoteFiles: boolean = $ref(false);
let enableRegistration: boolean = $ref(false);
let emailRequiredForSignup: boolean = $ref(false);
let enableServiceWorker: boolean = $ref(false);
+let enableChartsForRemoteUser: boolean = $ref(false);
let swPublicKey: any = $ref(null);
let swPrivateKey: any = $ref(null);
let deeplAuthKey: string = $ref('');
@@ -198,6 +203,7 @@ async function init() {
enableRegistration = !meta.disableRegistration;
emailRequiredForSignup = meta.emailRequiredForSignup;
enableServiceWorker = meta.enableServiceWorker;
+ enableChartsForRemoteUser = meta.enableChartsForRemoteUser;
swPublicKey = meta.swPublickey;
swPrivateKey = meta.swPrivateKey;
deeplAuthKey = meta.deeplAuthKey;
@@ -222,6 +228,7 @@ function save() {
disableRegistration: !enableRegistration,
emailRequiredForSignup,
enableServiceWorker,
+ enableChartsForRemoteUser,
swPublicKey,
swPrivateKey,
deeplAuthKey,