summaryrefslogtreecommitdiff
path: root/packages/backend
diff options
context:
space:
mode:
authorおさむのひと <46447427+samunohito@users.noreply.github.com>2025-05-27 20:46:22 +0900
committerGitHub <noreply@github.com>2025-05-27 20:46:22 +0900
commit9bbc2028ade21c0d9b0e0c887d6b8c29b244de73 (patch)
treea53c9d50bba0571e686b7260d4444216acf0d071 /packages/backend
parentrefactor(frontend): revoke weakening endpoint param type of API caller for ty... (diff)
downloadmisskey-9bbc2028ade21c0d9b0e0c887d6b8c29b244de73.tar.gz
misskey-9bbc2028ade21c0d9b0e0c887d6b8c29b244de73.tar.bz2
misskey-9bbc2028ade21c0d9b0e0c887d6b8c29b244de73.zip
feat: URLプレビューのリダイレクトを受け入れるかどうかを設定できるようにする (#16112)
* feat: URLプレビューのリダイレクトを受け入れるかどうかを設定できるようにする * fix CHANGELOG.md * fix lang
Diffstat (limited to '')
-rw-r--r--packages/backend/migration/1748310233000-addUrlPreviewAllowRedirect.js16
-rw-r--r--packages/backend/src/models/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/backend/src/server/web/UrlPreviewService.ts3
5 files changed, 33 insertions, 1 deletions
diff --git a/packages/backend/migration/1748310233000-addUrlPreviewAllowRedirect.js b/packages/backend/migration/1748310233000-addUrlPreviewAllowRedirect.js
new file mode 100644
index 0000000000..a895d0a941
--- /dev/null
+++ b/packages/backend/migration/1748310233000-addUrlPreviewAllowRedirect.js
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class AddUrlPreviewAllowRedirect1748310233000 {
+ name = 'AddUrlPreviewAllowRedirect1748310233000'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" ADD "urlPreviewAllowRedirect" boolean NOT NULL DEFAULT true`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "urlPreviewAllowRedirect"`);
+ }
+}
diff --git a/packages/backend/src/models/Meta.ts b/packages/backend/src/models/Meta.ts
index 545173ff3c..3ee6190d45 100644
--- a/packages/backend/src/models/Meta.ts
+++ b/packages/backend/src/models/Meta.ts
@@ -619,6 +619,11 @@ export class MiMeta {
})
public urlPreviewEnabled: boolean;
+ @Column('boolean', {
+ default: true,
+ })
+ public urlPreviewAllowRedirect: boolean;
+
@Column('integer', {
default: 10000,
})
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
index 0cd46b614f..924163afbb 100644
--- a/packages/backend/src/server/api/endpoints/admin/meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -495,6 +495,10 @@ export const meta = {
type: 'boolean',
optional: false, nullable: false,
},
+ urlPreviewAllowRedirect: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
urlPreviewTimeout: {
type: 'number',
optional: false, nullable: false,
@@ -704,6 +708,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
notesPerOneAd: instance.notesPerOneAd,
summalyProxy: instance.urlPreviewSummaryProxyUrl,
urlPreviewEnabled: instance.urlPreviewEnabled,
+ urlPreviewAllowRedirect: instance.urlPreviewAllowRedirect,
urlPreviewTimeout: instance.urlPreviewTimeout,
urlPreviewMaximumContentLength: instance.urlPreviewMaximumContentLength,
urlPreviewRequireContentLength: instance.urlPreviewRequireContentLength,
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 0e3569d667..578aa2b662 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -170,6 +170,7 @@ export const paramDef = {
description: '[Deprecated] Use "urlPreviewSummaryProxyUrl" instead.',
},
urlPreviewEnabled: { type: 'boolean' },
+ urlPreviewAllowRedirect: { type: 'boolean' },
urlPreviewTimeout: { type: 'integer' },
urlPreviewMaximumContentLength: { type: 'integer' },
urlPreviewRequireContentLength: { type: 'boolean' },
@@ -664,6 +665,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
set.urlPreviewEnabled = ps.urlPreviewEnabled;
}
+ if (ps.urlPreviewAllowRedirect !== undefined) {
+ set.urlPreviewAllowRedirect = ps.urlPreviewAllowRedirect;
+ }
+
if (ps.urlPreviewTimeout !== undefined) {
set.urlPreviewTimeout = ps.urlPreviewTimeout;
}
diff --git a/packages/backend/src/server/web/UrlPreviewService.ts b/packages/backend/src/server/web/UrlPreviewService.ts
index 531d085315..16763b2c3e 100644
--- a/packages/backend/src/server/web/UrlPreviewService.ts
+++ b/packages/backend/src/server/web/UrlPreviewService.ts
@@ -122,7 +122,7 @@ export class UrlPreviewService {
: undefined;
return summaly(url, {
- followRedirects: false,
+ followRedirects: this.meta.urlPreviewAllowRedirect,
lang: lang ?? 'ja-JP',
agent: agent,
userAgent: meta.urlPreviewUserAgent ?? undefined,
@@ -137,6 +137,7 @@ export class UrlPreviewService {
const queryStr = query({
url: url,
lang: lang ?? 'ja-JP',
+ followRedirects: this.meta.urlPreviewAllowRedirect,
userAgent: meta.urlPreviewUserAgent ?? undefined,
operationTimeout: meta.urlPreviewTimeout,
contentLengthLimit: meta.urlPreviewMaximumContentLength,