diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-12-20 04:08:13 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-12-20 04:08:13 +0900 |
| commit | 454632d785cbf031f54a9dc63a20af0d92302e0d (patch) | |
| tree | 3ec3a8868caab821ea55a3360572ee6fca707b87 /src/server/api/endpoints | |
| parent | Better cw detection (diff) | |
| download | sharkey-454632d785cbf031f54a9dc63a20af0d92302e0d.tar.gz sharkey-454632d785cbf031f54a9dc63a20af0d92302e0d.tar.bz2 sharkey-454632d785cbf031f54a9dc63a20af0d92302e0d.zip | |
Resolve #3687
Diffstat (limited to 'src/server/api/endpoints')
| -rw-r--r-- | src/server/api/endpoints/admin/update-meta.ts | 33 | ||||
| -rw-r--r-- | src/server/api/endpoints/meta.ts | 5 | ||||
| -rw-r--r-- | src/server/api/endpoints/sw/register.ts | 8 |
3 files changed, 41 insertions, 5 deletions
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index 5c156442ef..6ceb2a98dc 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -285,6 +285,27 @@ export const meta = { 'ja-JP': 'SMTPサーバのパスワード' } }, + + enableServiceWorker: { + validator: $.bool.optional, + desc: { + 'ja-JP': 'ServiceWorkerを有効にするか否か' + } + }, + + swPublicKey: { + validator: $.str.optional.nullable, + desc: { + 'ja-JP': 'ServiceWorkerのVAPIDキーペアの公開鍵' + } + }, + + swPrivateKey: { + validator: $.str.optional.nullable, + desc: { + 'ja-JP': 'ServiceWorkerのVAPIDキーペアの秘密鍵' + } + }, } }; @@ -447,6 +468,18 @@ export default define(meta, (ps) => new Promise(async (res, rej) => { set.errorImageUrl = ps.errorImageUrl; } + if (ps.enableServiceWorker !== undefined) { + set.enableServiceWorker = ps.enableServiceWorker; + } + + if (ps.swPublicKey !== undefined) { + set.swPublicKey = ps.swPublicKey; + } + + if (ps.swPrivateKey !== undefined) { + set.swPrivateKey = ps.swPrivateKey; + } + await Meta.update({}, { $set: set }, { upsert: true }); diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index 4df7280250..57311426a8 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -63,7 +63,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { cacheRemoteFiles: instance.cacheRemoteFiles, enableRecaptcha: instance.enableRecaptcha, recaptchaSiteKey: instance.recaptchaSiteKey, - swPublickey: null, + swPublickey: instance.swPublicKey, bannerUrl: instance.bannerUrl, errorImageUrl: instance.errorImageUrl, maxNoteTextLength: instance.maxNoteTextLength, @@ -85,7 +85,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { twitter: instance.enableTwitterIntegration, github: instance.enableGithubIntegration, discord: instance.enableDiscordIntegration, - serviceWorker: config.sw ? true : false, + serviceWorker: instance.enableServiceWorker, userRecommendation: { external: instance.enableExternalUserRecommendation, engine: instance.externalUserRecommendationEngine, @@ -114,6 +114,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { response.smtpPort = instance.smtpPort; response.smtpUser = instance.smtpUser; response.smtpPass = instance.smtpPass; + response.swPrivateKey = instance.swPrivateKey; } res(response); diff --git a/src/server/api/endpoints/sw/register.ts b/src/server/api/endpoints/sw/register.ts index c5c003bded..095c1b765d 100644 --- a/src/server/api/endpoints/sw/register.ts +++ b/src/server/api/endpoints/sw/register.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; import Subscription from '../../../../models/sw-subscription'; -import config from '../../../../config'; import define from '../../define'; +import fetchMeta from '../../../../misc/fetch-meta'; export const meta = { requireCredential: true, @@ -31,10 +31,12 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { deletedAt: { $exists: false } }); + const instance = await fetchMeta(); + if (exist != null) { return res({ state: 'already-subscribed', - key: config.sw.publicKey + key: instance.swPublicKey }); } @@ -47,6 +49,6 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { res({ state: 'subscribed', - key: config.sw.publicKey + key: instance.swPublicKey }); })); |