From 7c03d37caa3107c4e21f60563a6f19979d0a509b Mon Sep 17 00:00:00 2001 From: tamaina Date: Tue, 14 May 2019 02:57:04 +0900 Subject: Add ToSUrl, repositoryUrl, feedbackUrl (#4921) * Add ToSUrl, repositoryUrl, feedbackUrl * modify nodeinfo --- src/server/api/endpoints/admin/update-meta.ts | 33 +++++++++++++++++++++++++++ src/server/api/endpoints/meta.ts | 3 +++ 2 files changed, 36 insertions(+) (limited to 'src/server/api/endpoints') 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(), -- cgit v1.2.3-freya From f9f574532e3a6baca7e04190c78600c5b334aaa0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 14 May 2019 20:49:09 +0900 Subject: インスタンスブロックを設定できるように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/ja-JP.yml | 2 ++ src/client/app/admin/views/federation.vue | 36 ++++++++++++++++++++++++--- src/server/api/endpoints/admin/update-meta.ts | 11 ++++++++ src/server/api/endpoints/meta.ts | 1 + 4 files changed, 47 insertions(+), 3 deletions(-) (limited to 'src/server/api/endpoints') diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index c3bb4f7756..9390af40a9 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1486,6 +1486,8 @@ admin/views/federation.vue: chart-spans: hour: "1時間ごと" day: "1日ごと" + blocked-hosts: "ブロック" + blocked-hosts-info: "ブロックしたいホストを改行で区切って記述します。" desktop/views/pages/welcome.vue: about: "詳しく..." diff --git a/src/client/app/admin/views/federation.vue b/src/client/app/admin/views/federation.vue index 25400393b9..4d0b4b7c77 100644 --- a/src/client/app/admin/views/federation.vue +++ b/src/client/app/admin/views/federation.vue @@ -54,7 +54,6 @@ {{ $t('latest-request-received-at') }} - {{ $t('block') }} {{ $t('marked-as-closed') }}
{{ $t('charts') }} @@ -142,6 +141,16 @@ {{ $t('result-is-truncated', { n: limit }) }} + + + +
+ + + + {{ $t('save') }} +
+
@@ -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 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/server/api/endpoints') 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