From 161db7636adda2ed6c16f2a761f9e6d6303bb732 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 11 May 2019 10:58:34 +0900 Subject: Update log.ts --- src/models/entities/log.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/models/entities/log.ts b/src/models/entities/log.ts index 99e1e8947e..182a9fbed8 100644 --- a/src/models/entities/log.ts +++ b/src/models/entities/log.ts @@ -35,7 +35,7 @@ export class Log { public machine: string; @Column('varchar', { - length: 1024 + length: 2048 }) public message: string; -- cgit v1.2.3-freya From 24c6dff3e40ec55f9727aa59995b63d81e9722b0 Mon Sep 17 00:00:00 2001 From: kabo2468 <28654659+kabo2468@users.noreply.github.com> Date: Sat, 11 May 2019 21:43:08 +0900 Subject: Fix #4875 (#4899) --- src/client/app/common/views/components/settings/settings.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/app/common/views/components/settings/settings.vue b/src/client/app/common/views/components/settings/settings.vue index be2d7fce85..4d4cac0976 100644 --- a/src/client/app/common/views/components/settings/settings.vue +++ b/src/client/app/common/views/components/settings/settings.vue @@ -543,8 +543,8 @@ export default Vue.extend({ }); } else { this.$root.dialog({ - title: this.$t('update-available'), - text: this.$t('update-available-desc') + title: this.$t('@._settings.update-available'), + text: this.$t('@._settings.update-available-desc') }); } }); -- cgit v1.2.3-freya From 410b9ad6bcde756e5cdf13f55711199027dfc7a6 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sun, 12 May 2019 09:37:00 +0900 Subject: Fix: ピン留め投稿の表示順がおかしい (#4906) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: syuilo#4904 * fix comment --- src/models/repositories/user.ts | 5 ++++- src/remote/activitypub/models/person.ts | 8 +++++++- src/server/activitypub/featured.ts | 5 ++++- 3 files changed, 15 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts index 33eb53612a..330220fb72 100644 --- a/src/models/repositories/user.ts +++ b/src/models/repositories/user.ts @@ -72,7 +72,10 @@ export class UserRepository extends Repository { const meId = me ? typeof me === 'string' ? me : me.id : null; const relation = meId && (meId !== user.id) && opts.detail ? await this.getRelation(meId, user.id) : null; - const pins = opts.detail ? await UserNotePinings.find({ userId: user.id }) : []; + const pins = opts.detail ? await UserNotePinings.find({ + where: { userId: user.id }, + order: { id: 'DESC' } + }) : []; const profile = opts.detail ? await UserProfiles.findOne(user.id).then(ensure) : null; const falsy = opts.detail ? false : undefined; diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index a40677dfc3..654d36403e 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -474,9 +474,15 @@ export async function updateFeatured(userId: User['id']) { .slice(0, 5) .map(item => limit(() => resolveNote(item, resolver)))); + // delete + await UserNotePinings.delete({ userId: user.id }); + + // とりあえずidを別の時間で生成して順番を維持 + let td = 0; for (const note of featuredNotes.filter(note => note != null)) { + td -= 1000; UserNotePinings.save({ - id: genId(), + id: genId(new Date(Date.now() + td)), createdAt: new Date(), userId: user.id, noteId: note!.id diff --git a/src/server/activitypub/featured.ts b/src/server/activitypub/featured.ts index 86ec1000c7..dae72f16b6 100644 --- a/src/server/activitypub/featured.ts +++ b/src/server/activitypub/featured.ts @@ -21,7 +21,10 @@ export default async (ctx: Router.IRouterContext) => { return; } - const pinings = await UserNotePinings.find({ userId: user.id }); + const pinings = await UserNotePinings.find({ + where: { userId: user.id }, + order: { id: 'DESC' } + }); const pinnedNotes = await Promise.all(pinings.map(pining => Notes.findOne(pining.noteId).then(ensure))); -- cgit v1.2.3-freya From 342e48ed77a54dbbaad86fe0a8c7962d70df7607 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 14 May 2019 02:50:23 +0900 Subject: Fix meta tags (#4918) --- src/client/app/admin/views/federation.vue | 2 +- src/client/app/common/views/components/forkit.vue | 2 +- src/client/app/common/views/components/integrations.integration.vue | 2 +- src/client/app/common/views/components/messaging-room.message.vue | 2 +- src/client/app/common/views/components/mfm.ts | 2 ++ src/client/app/common/views/components/nav.vue | 4 ++-- src/client/app/common/views/components/settings/2fa.vue | 2 +- src/client/app/common/views/components/settings/integration.vue | 6 +++--- src/client/app/common/views/components/settings/theme.vue | 2 +- src/client/app/common/views/components/url-preview.vue | 2 +- src/client/app/common/views/components/url.vue | 4 ++-- src/client/app/common/views/deck/deck.note-column.vue | 2 +- src/client/app/common/views/deck/deck.user-column.vue | 2 +- src/client/app/common/views/widgets/rss.vue | 2 +- src/client/app/desktop/views/components/note-detail.vue | 2 +- src/client/app/desktop/views/components/note.vue | 2 +- src/client/app/desktop/views/home/user/index.vue | 2 +- src/client/app/mobile/views/components/media-video.vue | 1 + src/client/app/mobile/views/components/note-detail.vue | 2 +- src/client/app/mobile/views/components/note.vue | 2 +- src/client/app/mobile/views/pages/user/index.vue | 2 +- src/docs/article.pug | 2 +- src/server/web/views/note.pug | 3 +++ src/server/web/views/user.pug | 3 +++ 24 files changed, 33 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/client/app/admin/views/federation.vue b/src/client/app/admin/views/federation.vue index 6b09a3c28e..25400393b9 100644 --- a/src/client/app/admin/views/federation.vue +++ b/src/client/app/admin/views/federation.vue @@ -130,7 +130,7 @@ {{ $t('status') }}
- {{ instance.host }} + {{ instance.host }} {{ instance.notesCount | number }} {{ instance.usersCount | number }} {{ instance.followingCount | number }} diff --git a/src/client/app/common/views/components/forkit.vue b/src/client/app/common/views/components/forkit.vue index 5629c5ac24..d652b846a4 100644 --- a/src/client/app/common/views/components/forkit.vue +++ b/src/client/app/common/views/components/forkit.vue @@ -1,5 +1,5 @@ diff --git a/src/client/app/common/views/components/messaging-room.message.vue b/src/client/app/common/views/components/messaging-room.message.vue index 256ea760b3..908533e0cc 100644 --- a/src/client/app/common/views/components/messaging-room.message.vue +++ b/src/client/app/common/views/components/messaging-room.message.vue @@ -9,7 +9,7 @@
- +

{{ message.file.name }}

diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index 78734200a7..9459172881 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -174,6 +174,7 @@ export default Vue.component('misskey-flavored-markdown', { key: Math.random(), props: { url: token.node.props.url, + rel: 'nofollow noopener', target: '_blank' }, attrs: { @@ -187,6 +188,7 @@ export default Vue.component('misskey-flavored-markdown', { attrs: { class: 'link', href: token.node.props.url, + rel: 'nofollow noopener', target: '_blank', title: token.node.props.url, style: 'color:var(--mfmLink);' diff --git a/src/client/app/common/views/components/nav.vue b/src/client/app/common/views/components/nav.vue index a8f9bb9289..9d4e7091b5 100644 --- a/src/client/app/common/views/components/nav.vue +++ b/src/client/app/common/views/components/nav.vue @@ -2,9 +2,9 @@
{{ $t('about') }} - {{ $t('repository') }} + {{ $t('repository') }} - {{ $t('feedback') }} + {{ $t('feedback') }} {{ $t('develop') }} diff --git a/src/client/app/common/views/components/settings/2fa.vue b/src/client/app/common/views/components/settings/2fa.vue index 07a1493151..6e8d19d83a 100644 --- a/src/client/app/common/views/components/settings/2fa.vue +++ b/src/client/app/common/views/components/settings/2fa.vue @@ -9,7 +9,7 @@
    -
  1. {{ $t('authenticator') }}{{ $t('howtoinstall') }}
  2. +
  3. {{ $t('authenticator') }}{{ $t('howtoinstall') }}
  4. {{ $t('scan') }}
  5. {{ $t('done') }}
    {{ $t('token') }} diff --git a/src/client/app/common/views/components/settings/integration.vue b/src/client/app/common/views/components/settings/integration.vue index 8ac0c134c0..71ad8b4509 100644 --- a/src/client/app/common/views/components/settings/integration.vue +++ b/src/client/app/common/views/components/settings/integration.vue @@ -4,21 +4,21 @@
    Twitter
    -

    {{ $t('connected-to') }}: @{{ $store.state.i.twitter.screenName }}

    +

    {{ $t('connected-to') }}: @{{ $store.state.i.twitter.screenName }}

    {{ $t('disconnect') }} {{ $t('connect') }}
    Discord
    -

    {{ $t('connected-to') }}: @{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}

    +

    {{ $t('connected-to') }}: @{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}

    {{ $t('disconnect') }} {{ $t('connect') }}
    GitHub
    -

    {{ $t('connected-to') }}: @{{ $store.state.i.github.login }}

    +

    {{ $t('connected-to') }}: @{{ $store.state.i.github.login }}

    {{ $t('disconnect') }} {{ $t('connect') }}
    diff --git a/src/client/app/common/views/components/settings/theme.vue b/src/client/app/common/views/components/settings/theme.vue index b1f7b2bc49..3e6b9133cd 100644 --- a/src/client/app/common/views/components/settings/theme.vue +++ b/src/client/app/common/views/components/settings/theme.vue @@ -45,7 +45,7 @@ - {{ $t('find-more-theme') }} + {{ $t('find-more-theme') }}
    {{ $t('create-a-theme') }} diff --git a/src/client/app/common/views/components/url-preview.vue b/src/client/app/common/views/components/url-preview.vue index af5f3e4ebc..9ca4497ad8 100644 --- a/src/client/app/common/views/components/url-preview.vue +++ b/src/client/app/common/views/components/url-preview.vue @@ -9,7 +9,7 @@
- +
diff --git a/src/client/app/common/views/components/url.vue b/src/client/app/common/views/components/url.vue index 2daf79cba6..faf439814d 100644 --- a/src/client/app/common/views/components/url.vue +++ b/src/client/app/common/views/components/url.vue @@ -1,5 +1,5 @@

{{ $t('@.user-suspended') }}

-
+

{{ $t('@.is-remote-user') }}{{ $t('@.view-on-remote') }}

diff --git a/src/docs/article.pug b/src/docs/article.pug index 38494fec6c..48f501d406 100644 --- a/src/docs/article.pug +++ b/src/docs/article.pug @@ -6,4 +6,4 @@ block main block footer p = i18n('docs.edit-this-page-on-github') - a(href=src target="_blank")= i18n('docs.edit-this-page-on-github-link') + a(href=src rel="noopener" target="_blank")= i18n('docs.edit-this-page-on-github-link') diff --git a/src/server/web/views/note.pug b/src/server/web/views/note.pug index 983c731a04..0580e959f7 100644 --- a/src/server/web/views/note.pug +++ b/src/server/web/views/note.pug @@ -26,6 +26,9 @@ block meta meta(name='twitter:card' content='summary') // todo + if user.host + meta(name='robots' content='noindex') + if user.twitter meta(name='twitter:creator' content=`@${user.twitter.screenName}`) diff --git a/src/server/web/views/user.pug b/src/server/web/views/user.pug index bff98ba80f..9b257afb7b 100644 --- a/src/server/web/views/user.pug +++ b/src/server/web/views/user.pug @@ -24,6 +24,9 @@ block meta meta(name='twitter:card' content='summary') + if user.host + meta(name='robots' content='noindex') + if profile.twitter meta(name='twitter:creator' content=`@${profile.twitter.screenName}`) -- cgit v1.2.3-freya From b128b593c205df895d8d9d3c5763d87f7e7ebd71 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 14 May 2019 02:53:05 +0900 Subject: Fix: user menu (#4845) (#4920) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: Firefoxで自分のメニューが開けないなど * 自分のユーザーメニューにはミュートなどを表示しないようになど --- .../app/common/views/components/user-menu.vue | 31 ++++++++++++---------- .../app/desktop/views/home/user/user.header.vue | 13 +-------- 2 files changed, 18 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/client/app/common/views/components/user-menu.vue b/src/client/app/common/views/components/user-menu.vue index 0af0fdb7e4..7cbffa9f9a 100644 --- a/src/client/app/common/views/components/user-menu.vue +++ b/src/client/app/common/views/components/user-menu.vue @@ -7,7 +7,6 @@ diff --git a/src/client/app/common/views/components/signup.vue b/src/client/app/common/views/components/signup.vue index 9b1df79771..bf8e5d25b8 100644 --- a/src/client/app/common/views/components/signup.vue +++ b/src/client/app/common/views/components/signup.vue @@ -37,8 +37,13 @@

{{ $t('password-not-matched') }}

+ + + {{ $t('tos') }} + +
- {{ $t('create') }} + {{ $t('create') }} @@ -64,7 +69,8 @@ export default Vue.extend({ usernameState: null, passwordStrength: '', passwordRetypeState: null, - meta: null + meta: {}, + ToSAgreement: false } }, diff --git a/src/models/entities/meta.ts b/src/models/entities/meta.ts index 2c36b8333f..c3797a9ed6 100644 --- a/src/models/entities/meta.ts +++ b/src/models/entities/meta.ts @@ -268,4 +268,24 @@ export class Meta { nullable: true }) public discordClientSecret: string | null; + + @Column('varchar', { + length: 512, + nullable: true + }) + public ToSUrl: string | null; + + @Column('varchar', { + length: 512, + default: 'https://github.com/syuilo/misskey', + nullable: false + }) + public repositoryUrl: string; + + @Column('varchar', { + length: 512, + default: 'https://github.com/syuilo/misskey/issues/new', + nullable: true + }) + public feedbackUrl: string | null; } diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index 8a2019fcc1..e34840e907 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -330,6 +330,27 @@ export const meta = { 'ja-JP': 'ServiceWorkerのVAPIDキーペアの秘密鍵' } }, + + ToSUrl: { + validator: $.optional.nullable.str, + desc: { + 'ja-JP': '利用規約のURL' + } + }, + + repositoryUrl: { + validator: $.optional.str, + desc: { + 'ja-JP': 'リポジトリのURL' + } + }, + + feedbackUrl: { + validator: $.optional.str, + desc: { + 'ja-JP': 'フィードバックのURL' + } + } } }; @@ -516,6 +537,18 @@ export default define(meta, async (ps) => { set.swPrivateKey = ps.swPrivateKey; } + if (ps.ToSUrl !== undefined) { + set.ToSUrl = ps.ToSUrl; + } + + if (ps.repositoryUrl !== undefined) { + set.repositoryUrl = ps.repositoryUrl; + } + + if (ps.feedbackUrl !== undefined) { + set.feedbackUrl = ps.feedbackUrl; + } + await getConnection().transaction(async transactionalEntityManager => { const meta = await transactionalEntityManager.findOne(Meta, { order: { diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index 5667e7fbb4..e29edae266 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -106,6 +106,9 @@ export default define(meta, async (ps, me) => { uri: config.url, description: instance.description, langs: instance.langs, + ToSUrl: instance.ToSUrl, + repositoryUrl: instance.repositoryUrl, + feedbackUrl: instance.feedbackUrl, secure: config.https != null, machine: os.hostname(), diff --git a/src/server/nodeinfo.ts b/src/server/nodeinfo.ts index d3ad90fab5..da1e4e7b5e 100644 --- a/src/server/nodeinfo.ts +++ b/src/server/nodeinfo.ts @@ -26,6 +26,9 @@ const nodeinfo2 = async () => { maintainerName, maintainerEmail, langs, + ToSUrl, + repositoryUrl, + feedbackUrl, announcements, disableRegistration, disableLocalTimeline, @@ -77,6 +80,9 @@ const nodeinfo2 = async () => { email: maintainerEmail }, langs, + ToSUrl, + repositoryUrl, + feedbackUrl, announcements, disableRegistration, disableLocalTimeline, -- cgit v1.2.3-freya From 5d42ee2359c1f9a0018fc3ae9c7b3f2f2c6fbccc Mon Sep 17 00:00:00 2001 From: Satsuki Yanagi <17376330+u1-liquid@users.noreply.github.com> Date: Tue, 14 May 2019 10:50:20 +0900 Subject: Fix tag cloud on Welcome page (#4922) Resolve #4754 --- src/client/app/common/views/components/tag-cloud.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/app/common/views/components/tag-cloud.vue b/src/client/app/common/views/components/tag-cloud.vue index b5eef964b6..3fa5e3b9d4 100644 --- a/src/client/app/common/views/components/tag-cloud.vue +++ b/src/client/app/common/views/components/tag-cloud.vue @@ -4,7 +4,7 @@

{{ $t('empty') }}

@@ -149,7 +158,7 @@ import Vue from 'vue'; import i18n from '../../i18n'; import { faPaperPlane } from '@fortawesome/free-regular-svg-icons'; -import { faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faTrafficLight, faInbox } from '@fortawesome/free-solid-svg-icons'; +import { faBan, faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faTrafficLight, faInbox } from '@fortawesome/free-solid-svg-icons'; import ApexCharts from 'apexcharts'; import * as tinycolor from 'tinycolor2'; @@ -176,7 +185,8 @@ export default Vue.extend({ chartSrc: 'requests', chartSpan: 'hour', chartInstance: null, - faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faPaperPlane, faTrafficLight, faInbox + blockedHosts: '', + faBan, faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faPaperPlane, faTrafficLight, faInbox }; }, @@ -246,6 +256,10 @@ export default Vue.extend({ mounted() { this.fetchInstances(); + + this.$root.getMeta().then(meta => { + this.blockedHosts = meta.blockedHosts.join('\n'); + }); }, beforeDestroy() { @@ -477,6 +491,22 @@ export default Vue.extend({ }] }; }, + + saveBlockedHosts() { + this.$root.api('admin/update-meta', { + blockedHosts: this.blockedHosts.split('\n') + }).then(() => { + this.$root.dialog({ + type: 'success', + text: this.$t('saved') + }); + }).catch(e => { + this.$root.dialog({ + type: 'error', + text: e + }); + }); + } } }); diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index e34840e907..e4f2e86aaa 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -70,6 +70,13 @@ export const meta = { } }, + blockedHosts: { + validator: $.optional.nullable.arr($.str), + desc: { + 'ja-JP': 'ブロックするホスト' + } + }, + mascotImageUrl: { validator: $.optional.nullable.str, desc: { @@ -389,6 +396,10 @@ export default define(meta, async (ps) => { set.hiddenTags = ps.hiddenTags; } + if (Array.isArray(ps.blockedHosts)) { + set.blockedHosts = ps.blockedHosts; + } + if (ps.mascotImageUrl !== undefined) { set.mascotImageUrl = ps.mascotImageUrl; } diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index e29edae266..1bd88a1e6d 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -165,6 +165,7 @@ export default define(meta, async (ps, me) => { response.useStarForReactionFallback = instance.useStarForReactionFallback; response.pinnedUsers = instance.pinnedUsers; response.hiddenTags = instance.hiddenTags; + response.blockedHosts = instance.blockedHosts; response.recaptchaSecretKey = instance.recaptchaSecretKey; response.proxyAccount = instance.proxyAccount; response.twitterConsumerKey = instance.twitterConsumerKey; -- cgit v1.2.3-freya From c3529f06910c6c50d1f653e8853194f69396aeca Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 14 May 2019 20:53:49 +0900 Subject: Improve usability --- locales/ja-JP.yml | 1 + src/client/app/admin/views/instance.vue | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 9390af40a9..7068e7c3ed 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1272,6 +1272,7 @@ admin/views/instance.vue: save: "保存" saved: "保存しました" pinned-users: "ピン留めユーザー" + pinned-users-info: "ピン留めしたいユーザーを改行で区切って記述します。" email-config: "メールサーバーの設定" email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" enable-email: "メール配信を有効にする" diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index 3bbe6579d3..4e7411a723 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -87,8 +87,10 @@ -
- +
+ + + {{ $t('save') }}
@@ -204,7 +206,7 @@ export default Vue.extend({ enableServiceWorker: false, swPublicKey: null, swPrivateKey: null, - pinnedUsers: [], + pinnedUsers: '', faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope, faBolt }; }, -- cgit v1.2.3-freya From 811f9c22d78438a107061b24714539225d44c9c3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 14 May 2019 20:57:24 +0900 Subject: :art: --- src/client/app/admin/views/instance.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index 4e7411a723..5cdd22296f 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -86,7 +86,7 @@ - +
@@ -149,7 +149,7 @@ import Vue from 'vue'; import i18n from '../../i18n'; import { url, host } from '../../config'; import { toUnicode } from 'punycode'; -import { faHeadset, faShieldAlt, faGhost, faUserPlus, faBolt } from '@fortawesome/free-solid-svg-icons'; +import { faHeadset, faShieldAlt, faGhost, faUserPlus, faBolt, faThumbtack } from '@fortawesome/free-solid-svg-icons'; import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons'; export default Vue.extend({ @@ -207,7 +207,7 @@ export default Vue.extend({ swPublicKey: null, swPrivateKey: null, pinnedUsers: '', - faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope, faBolt + faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope, faBolt, faThumbtack }; }, -- cgit v1.2.3-freya From b779ff08e0aeb95b879972b7dc26bc81a81e627c Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 14 May 2019 21:08:35 +0900 Subject: 特定のインスタンスのファイルをすべて削除できるように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/ja-JP.yml | 1 + src/client/app/admin/views/federation.vue | 19 +++++++++++++-- .../endpoints/admin/federation/delete-all-files.ts | 27 ++++++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/server/api/endpoints/admin/federation/delete-all-files.ts (limited to 'src') diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 7068e7c3ed..ed0da44d68 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1441,6 +1441,7 @@ admin/views/federation.vue: latest-request-received-at: "直近のリクエスト受信" remove-all-following: "フォローを全解除" remove-all-following-info: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。" + delete-all-files: "ファイルをすべて削除" block: "ブロック" marked-as-closed: "閉鎖されているとマーク" lookup: "照会" diff --git a/src/client/app/admin/views/federation.vue b/src/client/app/admin/views/federation.vue index 4d0b4b7c77..8b7719069c 100644 --- a/src/client/app/admin/views/federation.vue +++ b/src/client/app/admin/views/federation.vue @@ -78,6 +78,10 @@
+
+ {{ $t('delete-all-files') }} + {{ $t('delete-all-files') }} +
{{ $t('remove-all-following') }} {{ $t('remove-all-following') }} @@ -158,7 +162,7 @@ import Vue from 'vue'; import i18n from '../../i18n'; import { faPaperPlane } from '@fortawesome/free-regular-svg-icons'; -import { faBan, faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faTrafficLight, faInbox } from '@fortawesome/free-solid-svg-icons'; +import { faTrashAlt, faBan, faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faTrafficLight, faInbox } from '@fortawesome/free-solid-svg-icons'; import ApexCharts from 'apexcharts'; import * as tinycolor from 'tinycolor2'; @@ -186,7 +190,7 @@ export default Vue.extend({ chartSpan: 'hour', chartInstance: null, blockedHosts: '', - faBan, faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faPaperPlane, faTrafficLight, faInbox + faTrashAlt, faBan, faGlobe, faTerminal, faSearch, faMinusCircle, faServer, faCrosshairs, faEnvelopeOpenText, faUsers, faCaretDown, faCaretUp, faPaperPlane, faTrafficLight, faInbox }; }, @@ -307,6 +311,17 @@ export default Vue.extend({ }); }, + deleteAllFiles() { + this.$root.api('admin/federation/delete-all-files', { + host: this.instance.host + }).then(() => { + this.$root.dialog({ + type: 'success', + splash: true + }); + }); + }, + updateInstance() { this.$root.api('admin/federation/update-instance', { host: this.instance.host, diff --git a/src/server/api/endpoints/admin/federation/delete-all-files.ts b/src/server/api/endpoints/admin/federation/delete-all-files.ts new file mode 100644 index 0000000000..befb362264 --- /dev/null +++ b/src/server/api/endpoints/admin/federation/delete-all-files.ts @@ -0,0 +1,27 @@ +import $ from 'cafy'; +import define from '../../../define'; +import del from '../../../../../services/drive/delete-file'; +import { DriveFiles } from '../../../../../models'; + +export const meta = { + tags: ['admin'], + + requireCredential: true, + requireModerator: true, + + params: { + host: { + validator: $.str + } + } +}; + +export default define(meta, async (ps, me) => { + const files = await DriveFiles.find({ + userHost: ps.host + }); + + for (const file of files) { + del(file); + } +}); -- cgit v1.2.3-freya