Merge branch 'develop' into merge/2024-02-03
# Conflicts: # locales/index.d.ts # packages/backend/src/server/api/EndpointsModule.ts # packages/backend/src/server/api/endpoints.ts # packages/misskey-js/src/autogen/endpoint.ts # sharkey-locales/en-US.yml
This commit is contained in:
commit
363111f5de
8 changed files with 132 additions and 0 deletions
14
locales/index.d.ts
vendored
14
locales/index.d.ts
vendored
|
@ -12011,6 +12011,20 @@ export interface Locale extends ILocale {
|
||||||
*/
|
*/
|
||||||
"parentDefault": string;
|
"parentDefault": string;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Generate Keys
|
||||||
|
*/
|
||||||
|
"genKeys": string;
|
||||||
|
"_genKeysDialog": {
|
||||||
|
/**
|
||||||
|
* Are you sure that you want to generate new keys? This will stop push notifications for all users who have already enabled them.
|
||||||
|
*/
|
||||||
|
"text": string;
|
||||||
|
/**
|
||||||
|
* Generate new keys
|
||||||
|
*/
|
||||||
|
"title": string;
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* ID
|
* ID
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -59,6 +59,7 @@ export * as 'admin/federation/refresh-remote-instance-metadata' from './endpoint
|
||||||
export * as 'admin/federation/remove-all-following' from './endpoints/admin/federation/remove-all-following.js';
|
export * as 'admin/federation/remove-all-following' from './endpoints/admin/federation/remove-all-following.js';
|
||||||
export * as 'admin/federation/update-instance' from './endpoints/admin/federation/update-instance.js';
|
export * as 'admin/federation/update-instance' from './endpoints/admin/federation/update-instance.js';
|
||||||
export * as 'admin/forward-abuse-user-report' from './endpoints/admin/forward-abuse-user-report.js';
|
export * as 'admin/forward-abuse-user-report' from './endpoints/admin/forward-abuse-user-report.js';
|
||||||
|
export * as 'admin/gen-vapid-keys' from './endpoints/admin/gen-vapid-keys.js';
|
||||||
export * as 'admin/get-index-stats' from './endpoints/admin/get-index-stats.js';
|
export * as 'admin/get-index-stats' from './endpoints/admin/get-index-stats.js';
|
||||||
export * as 'admin/get-table-stats' from './endpoints/admin/get-table-stats.js';
|
export * as 'admin/get-table-stats' from './endpoints/admin/get-table-stats.js';
|
||||||
export * as 'admin/get-user-ips' from './endpoints/admin/get-user-ips.js';
|
export * as 'admin/get-user-ips' from './endpoints/admin/get-user-ips.js';
|
||||||
|
|
|
@ -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 };
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -138,6 +138,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #label>Private key<span v-if="serviceWorkerForm.modifiedStates.swPrivateKey" class="_modified">{{ i18n.ts.modified }}</span></template>
|
<template #label>Private key<span v-if="serviceWorkerForm.modifiedStates.swPrivateKey" class="_modified">{{ i18n.ts.modified }}</span></template>
|
||||||
<template #prefix><i class="ti ti-key"></i></template>
|
<template #prefix><i class="ti ti-key"></i></template>
|
||||||
</MkInput>
|
</MkInput>
|
||||||
|
|
||||||
|
<MkButton primary @click="genKeys">{{ i18n.ts.genKeys }}</MkButton>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</MkFolder>
|
</MkFolder>
|
||||||
|
@ -434,6 +436,18 @@ function chooseProxyAccount() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function genKeys() {
|
||||||
|
if (serviceWorkerForm.savedState.swPrivateKey) {
|
||||||
|
const result = await os.confirm({ type: 'warning', title: i18n.ts._genKeysDialog.title, text: i18n.ts._genKeysDialog.text });
|
||||||
|
if (result.canceled) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const keys = await os.apiWithDialog('admin/gen-vapid-keys', {});
|
||||||
|
|
||||||
|
serviceWorkerForm.state.swPublicKey = keys.public;
|
||||||
|
serviceWorkerForm.state.swPrivateKey = keys.private;
|
||||||
|
}
|
||||||
|
|
||||||
const headerTabs = computed(() => []);
|
const headerTabs = computed(() => []);
|
||||||
|
|
||||||
definePageMetadata(() => ({
|
definePageMetadata(() => ({
|
||||||
|
|
|
@ -548,6 +548,17 @@ declare module '../api.js' {
|
||||||
credential?: string | null,
|
credential?: string | null,
|
||||||
): Promise<SwitchCaseResponseType<E, P>>;
|
): Promise<SwitchCaseResponseType<E, P>>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No description provided.
|
||||||
|
*
|
||||||
|
* **Credential required**: *Yes* / **Permission**: *write:admin:meta*
|
||||||
|
*/
|
||||||
|
request<E extends 'admin/gen-vapid-keys', P extends Endpoints[E]['req']>(
|
||||||
|
endpoint: E,
|
||||||
|
params: P,
|
||||||
|
credential?: string | null,
|
||||||
|
): Promise<SwitchCaseResponseType<E, P>>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* No description provided.
|
* No description provided.
|
||||||
*
|
*
|
||||||
|
|
|
@ -658,6 +658,7 @@ export type Endpoints = {
|
||||||
'admin/federation/remove-all-following': { req: AdminFederationRemoveAllFollowingRequest; res: EmptyResponse };
|
'admin/federation/remove-all-following': { req: AdminFederationRemoveAllFollowingRequest; res: EmptyResponse };
|
||||||
'admin/federation/update-instance': { req: AdminFederationUpdateInstanceRequest; res: EmptyResponse };
|
'admin/federation/update-instance': { req: AdminFederationUpdateInstanceRequest; res: EmptyResponse };
|
||||||
'admin/forward-abuse-user-report': { req: AdminForwardAbuseUserReportRequest; res: EmptyResponse };
|
'admin/forward-abuse-user-report': { req: AdminForwardAbuseUserReportRequest; res: EmptyResponse };
|
||||||
|
'admin/gen-vapid-keys': { req: EmptyRequest; res: EmptyResponse };
|
||||||
'admin/get-index-stats': { req: EmptyRequest; res: AdminGetIndexStatsResponse };
|
'admin/get-index-stats': { req: EmptyRequest; res: AdminGetIndexStatsResponse };
|
||||||
'admin/get-table-stats': { req: EmptyRequest; res: AdminGetTableStatsResponse };
|
'admin/get-table-stats': { req: EmptyRequest; res: AdminGetTableStatsResponse };
|
||||||
'admin/get-user-ips': { req: AdminGetUserIpsRequest; res: AdminGetUserIpsResponse };
|
'admin/get-user-ips': { req: AdminGetUserIpsRequest; res: AdminGetUserIpsResponse };
|
||||||
|
|
|
@ -459,6 +459,15 @@ export type paths = {
|
||||||
*/
|
*/
|
||||||
post: operations['admin___forward-abuse-user-report'];
|
post: operations['admin___forward-abuse-user-report'];
|
||||||
};
|
};
|
||||||
|
'/admin/gen-vapid-keys': {
|
||||||
|
/**
|
||||||
|
* admin/gen-vapid-keys
|
||||||
|
* @description No description provided.
|
||||||
|
*
|
||||||
|
* **Credential required**: *Yes* / **Permission**: *write:admin:meta*
|
||||||
|
*/
|
||||||
|
post: operations['admin___gen-vapid-keys'];
|
||||||
|
};
|
||||||
'/admin/get-index-stats': {
|
'/admin/get-index-stats': {
|
||||||
/**
|
/**
|
||||||
* admin/get-index-stats
|
* admin/get-index-stats
|
||||||
|
@ -8306,6 +8315,50 @@ export type operations = {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* admin/gen-vapid-keys
|
||||||
|
* @description No description provided.
|
||||||
|
*
|
||||||
|
* **Credential required**: *Yes* / **Permission**: *write:admin:meta*
|
||||||
|
*/
|
||||||
|
'admin___gen-vapid-keys': {
|
||||||
|
responses: {
|
||||||
|
/** @description OK (without any results) */
|
||||||
|
204: {
|
||||||
|
content: never;
|
||||||
|
};
|
||||||
|
/** @description Client error */
|
||||||
|
400: {
|
||||||
|
content: {
|
||||||
|
'application/json': components['schemas']['Error'];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/** @description Authentication error */
|
||||||
|
401: {
|
||||||
|
content: {
|
||||||
|
'application/json': components['schemas']['Error'];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/** @description Forbidden error */
|
||||||
|
403: {
|
||||||
|
content: {
|
||||||
|
'application/json': components['schemas']['Error'];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/** @description I'm Ai */
|
||||||
|
418: {
|
||||||
|
content: {
|
||||||
|
'application/json': components['schemas']['Error'];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/** @description Internal server error */
|
||||||
|
500: {
|
||||||
|
content: {
|
||||||
|
'application/json': components['schemas']['Error'];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* admin/get-index-stats
|
* admin/get-index-stats
|
||||||
* @description No description provided.
|
* @description No description provided.
|
||||||
|
|
|
@ -448,4 +448,9 @@ _defaultCWPriority:
|
||||||
defaultParent: "Use Default, then Parent (use the default CW, and append the inherited CW)"
|
defaultParent: "Use Default, then Parent (use the default CW, and append the inherited CW)"
|
||||||
parentDefault: "Use Parent, then Default (use the inherited CW, and append the default CW)"
|
parentDefault: "Use Parent, then Default (use the inherited CW, and append the default CW)"
|
||||||
|
|
||||||
|
genKeys: "Generate Keys"
|
||||||
|
_genKeysDialog:
|
||||||
|
text: "Are you sure that you want to generate new keys? This will stop push notifications for all users who have already enabled them."
|
||||||
|
title: "Generate new keys"
|
||||||
|
|
||||||
id: "ID"
|
id: "ID"
|
||||||
|
|
Loading…
Add table
Reference in a new issue