summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-12-20 04:08:13 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-12-20 04:08:13 +0900
commit454632d785cbf031f54a9dc63a20af0d92302e0d (patch)
tree3ec3a8868caab821ea55a3360572ee6fca707b87 /src/server/api
parentBetter cw detection (diff)
downloadsharkey-454632d785cbf031f54a9dc63a20af0d92302e0d.tar.gz
sharkey-454632d785cbf031f54a9dc63a20af0d92302e0d.tar.bz2
sharkey-454632d785cbf031f54a9dc63a20af0d92302e0d.zip
Resolve #3687
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts33
-rw-r--r--src/server/api/endpoints/meta.ts5
-rw-r--r--src/server/api/endpoints/sw/register.ts8
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
});
}));