summaryrefslogtreecommitdiff
path: root/packages/backend/src/server
diff options
context:
space:
mode:
authorMarie <github@yuugi.dev>2025-02-07 06:00:49 +0100
committerMarie <github@yuugi.dev>2025-02-07 06:00:49 +0100
commitc889948f95ad9706403ae07072e5ce76002c73b5 (patch)
tree7347d51e75353effa27c7d0b1e92220edfaa3f39 /packages/backend/src/server
parentmerge: Add "follow back" button on follow-related notifications (resolves #89... (diff)
downloadsharkey-c889948f95ad9706403ae07072e5ce76002c73b5.tar.gz
sharkey-c889948f95ad9706403ae07072e5ce76002c73b5.tar.bz2
sharkey-c889948f95ad9706403ae07072e5ce76002c73b5.zip
feat: Add generation of keys to admin page
Diffstat (limited to 'packages/backend/src/server')
-rw-r--r--packages/backend/src/server/api/EndpointsModule.ts4
-rw-r--r--packages/backend/src/server/api/endpoints.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/gen-vapid-keys.ts33
3 files changed, 39 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/EndpointsModule.ts b/packages/backend/src/server/api/EndpointsModule.ts
index e319d6e0a4..3b72160597 100644
--- a/packages/backend/src/server/api/EndpointsModule.ts
+++ b/packages/backend/src/server/api/EndpointsModule.ts
@@ -101,6 +101,7 @@ import * as ep___admin_systemWebhook_list from './endpoints/admin/system-webhook
import * as ep___admin_systemWebhook_show from './endpoints/admin/system-webhook/show.js';
import * as ep___admin_systemWebhook_update from './endpoints/admin/system-webhook/update.js';
import * as ep___admin_systemWebhook_test from './endpoints/admin/system-webhook/test.js';
+import * as ep___admin_genVapidKeys from './endpoints/admin/gen-vapid-keys.js';
import * as ep___announcements from './endpoints/announcements.js';
import * as ep___announcements_show from './endpoints/announcements/show.js';
import * as ep___antennas_create from './endpoints/antennas/create.js';
@@ -508,6 +509,7 @@ const $admin_systemWebhook_list: Provider = { provide: 'ep:admin/system-webhook/
const $admin_systemWebhook_show: Provider = { provide: 'ep:admin/system-webhook/show', useClass: ep___admin_systemWebhook_show.default };
const $admin_systemWebhook_update: Provider = { provide: 'ep:admin/system-webhook/update', useClass: ep___admin_systemWebhook_update.default };
const $admin_systemWebhook_test: Provider = { provide: 'ep:admin/system-webhook/test', useClass: ep___admin_systemWebhook_test.default };
+const $admin_genVapidKeys: Provider = { provide: 'ep:admin/gen-vapid-keys', useClass: ep___admin_genVapidKeys.default };
const $announcements: Provider = { provide: 'ep:announcements', useClass: ep___announcements.default };
const $announcements_show: Provider = { provide: 'ep:announcements/show', useClass: ep___announcements_show.default };
const $antennas_create: Provider = { provide: 'ep:antennas/create', useClass: ep___antennas_create.default };
@@ -919,6 +921,7 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
$admin_systemWebhook_show,
$admin_systemWebhook_update,
$admin_systemWebhook_test,
+ $admin_genVapidKeys,
$announcements,
$announcements_show,
$antennas_create,
@@ -1324,6 +1327,7 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
$admin_systemWebhook_show,
$admin_systemWebhook_update,
$admin_systemWebhook_test,
+ $admin_genVapidKeys,
$announcements,
$announcements_show,
$antennas_create,
diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts
index b4f36234f0..b6998ba581 100644
--- a/packages/backend/src/server/api/endpoints.ts
+++ b/packages/backend/src/server/api/endpoints.ts
@@ -108,6 +108,7 @@ import * as ep___admin_systemWebhook_list from './endpoints/admin/system-webhook
import * as ep___admin_systemWebhook_show from './endpoints/admin/system-webhook/show.js';
import * as ep___admin_systemWebhook_update from './endpoints/admin/system-webhook/update.js';
import * as ep___admin_systemWebhook_test from './endpoints/admin/system-webhook/test.js';
+import * as ep___admin_genVapidKeys from './endpoints/admin/gen-vapid-keys.js';
import * as ep___announcements from './endpoints/announcements.js';
import * as ep___announcements_show from './endpoints/announcements/show.js';
import * as ep___antennas_create from './endpoints/antennas/create.js';
@@ -513,6 +514,7 @@ const eps = [
['admin/system-webhook/show', ep___admin_systemWebhook_show],
['admin/system-webhook/update', ep___admin_systemWebhook_update],
['admin/system-webhook/test', ep___admin_systemWebhook_test],
+ ['admin/gen-vapid-keys', ep___admin_genVapidKeys],
['announcements', ep___announcements],
['announcements/show', ep___announcements_show],
['antennas/create', ep___antennas_create],
diff --git a/packages/backend/src/server/api/endpoints/admin/gen-vapid-keys.ts b/packages/backend/src/server/api/endpoints/admin/gen-vapid-keys.ts
new file mode 100644
index 0000000000..5695866265
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/gen-vapid-keys.ts
@@ -0,0 +1,33 @@
+/*
+ * SPDX-FileCopyrightText: marie and sharkey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import webpush from 'web-push';
+const { generateVAPIDKeys } = webpush;
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { ModerationLogService } from '@/core/ModerationLogService.js';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true,
+ requireModerator: true,
+ kind: 'write:admin:meta',
+} as const;
+
+export const paramDef = {} as const;
+
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
+ constructor(
+ private moderationLogService: ModerationLogService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const keys = await generateVAPIDKeys();
+
+ return { public: keys.publicKey, private: keys.privateKey };
+ });
+ }
+}