summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-03-25 01:50:28 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-03-25 01:50:28 +0900
commitd0a346ed8ab3fd879d0e1d2635df0b77a9b0bc05 (patch)
tree6c4181d1588677cb5db6673539bf3b25e5ba8c57 /packages/backend/src/server/api
parentrecognize null in _misskey_content for notes (#8440) (diff)
downloadsharkey-d0a346ed8ab3fd879d0e1d2635df0b77a9b0bc05.tar.gz
sharkey-d0a346ed8ab3fd879d0e1d2635df0b77a9b0bc05.tar.bz2
sharkey-d0a346ed8ab3fd879d0e1d2635df0b77a9b0bc05.zip
refactor: separate meta api for admin or not
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/endpoints/admin/meta.ts401
-rw-r--r--packages/backend/src/server/api/endpoints/meta.ts184
2 files changed, 401 insertions, 184 deletions
diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts
new file mode 100644
index 0000000000..8d50486ef6
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/meta.ts
@@ -0,0 +1,401 @@
+import config from '@/config/index.js';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
+
+export const meta = {
+ tags: ['meta'],
+
+ requireCredential: true,
+ requireAdmin: true,
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ driveCapacityPerLocalUserMb: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ driveCapacityPerRemoteUserMb: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ cacheRemoteFiles: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ emailRequiredForSignup: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableHcaptcha: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ hcaptchaSiteKey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ enableRecaptcha: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ recaptchaSiteKey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ swPublickey: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ mascotImageUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ default: '/assets/ai.png',
+ },
+ bannerUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ errorImageUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ default: 'https://xn--931a.moe/aiart/yubitun.png',
+ },
+ iconUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ maxNoteTextLength: {
+ type: 'number',
+ optional: false, nullable: false,
+ },
+ emojis: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ id: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'id',
+ },
+ aliases: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ category: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ host: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ url: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'url',
+ },
+ },
+ },
+ },
+ ads: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ place: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ url: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'url',
+ },
+ imageUrl: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'url',
+ },
+ },
+ },
+ },
+ enableEmail: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableTwitterIntegration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableGithubIntegration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableDiscordIntegration: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ enableServiceWorker: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ translatorAvailable: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ proxyAccountName: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ userStarForReactionFallback: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ pinnedUsers: {
+ type: 'array',
+ optional: true, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ hiddenTags: {
+ type: 'array',
+ optional: true, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ blockedHosts: {
+ type: 'array',
+ optional: true, nullable: false,
+ items: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ },
+ hcaptchaSecretKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ recaptchaSecretKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ proxyAccountId: {
+ type: 'string',
+ optional: true, nullable: true,
+ format: 'id',
+ },
+ twitterConsumerKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ twitterConsumerSecret: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ githubClientId: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ githubClientSecret: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ discordClientId: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ discordClientSecret: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ summaryProxy: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ email: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpSecure: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ smtpHost: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpPort: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpUser: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ smtpPass: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ swPrivateKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ useObjectStorage: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ objectStorageBaseUrl: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageBucket: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStoragePrefix: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageEndpoint: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageRegion: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStoragePort: {
+ type: 'number',
+ optional: true, nullable: true,
+ },
+ objectStorageAccessKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageSecretKey: {
+ type: 'string',
+ optional: true, nullable: true,
+ },
+ objectStorageUseSSL: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ objectStorageUseProxy: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ objectStorageSetPublicRead: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
+ },
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ },
+ required: [],
+} as const;
+
+// eslint-disable-next-line import/no-default-export
+export default define(meta, paramDef, async (ps, me) => {
+ const instance = await fetchMeta(true);
+
+ return {
+ maintainerName: instance.maintainerName,
+ maintainerEmail: instance.maintainerEmail,
+ version: config.version,
+ name: instance.name,
+ uri: config.url,
+ description: instance.description,
+ langs: instance.langs,
+ tosUrl: instance.ToSUrl,
+ repositoryUrl: instance.repositoryUrl,
+ feedbackUrl: instance.feedbackUrl,
+ disableRegistration: instance.disableRegistration,
+ disableLocalTimeline: instance.disableLocalTimeline,
+ disableGlobalTimeline: instance.disableGlobalTimeline,
+ driveCapacityPerLocalUserMb: instance.localDriveCapacityMb,
+ driveCapacityPerRemoteUserMb: instance.remoteDriveCapacityMb,
+ emailRequiredForSignup: instance.emailRequiredForSignup,
+ enableHcaptcha: instance.enableHcaptcha,
+ hcaptchaSiteKey: instance.hcaptchaSiteKey,
+ enableRecaptcha: instance.enableRecaptcha,
+ recaptchaSiteKey: instance.recaptchaSiteKey,
+ swPublickey: instance.swPublicKey,
+ themeColor: instance.themeColor,
+ mascotImageUrl: instance.mascotImageUrl,
+ bannerUrl: instance.bannerUrl,
+ errorImageUrl: instance.errorImageUrl,
+ iconUrl: instance.iconUrl,
+ backgroundImageUrl: instance.backgroundImageUrl,
+ logoImageUrl: instance.logoImageUrl,
+ maxNoteTextLength: MAX_NOTE_TEXT_LENGTH, // 後方互換性のため
+ defaultLightTheme: instance.defaultLightTheme,
+ defaultDarkTheme: instance.defaultDarkTheme,
+ enableEmail: instance.enableEmail,
+ enableTwitterIntegration: instance.enableTwitterIntegration,
+ enableGithubIntegration: instance.enableGithubIntegration,
+ enableDiscordIntegration: instance.enableDiscordIntegration,
+ enableServiceWorker: instance.enableServiceWorker,
+ translatorAvailable: instance.deeplAuthKey != null,
+ pinnedPages: instance.pinnedPages,
+ pinnedClipId: instance.pinnedClipId,
+ cacheRemoteFiles: instance.cacheRemoteFiles,
+
+ useStarForReactionFallback: instance.useStarForReactionFallback,
+ pinnedUsers: instance.pinnedUsers,
+ hiddenTags: instance.hiddenTags,
+ blockedHosts: instance.blockedHosts,
+ hcaptchaSecretKey: instance.hcaptchaSecretKey,
+ recaptchaSecretKey: instance.recaptchaSecretKey,
+ proxyAccountId: instance.proxyAccountId,
+ twitterConsumerKey: instance.twitterConsumerKey,
+ twitterConsumerSecret: instance.twitterConsumerSecret,
+ githubClientId: instance.githubClientId,
+ githubClientSecret: instance.githubClientSecret,
+ discordClientId: instance.discordClientId,
+ discordClientSecret: instance.discordClientSecret,
+ summalyProxy: instance.summalyProxy,
+ email: instance.email,
+ smtpSecure: instance.smtpSecure,
+ smtpHost: instance.smtpHost,
+ smtpPort: instance.smtpPort,
+ smtpUser: instance.smtpUser,
+ smtpPass: instance.smtpPass,
+ swPrivateKey: instance.swPrivateKey,
+ useObjectStorage: instance.useObjectStorage,
+ objectStorageBaseUrl: instance.objectStorageBaseUrl,
+ objectStorageBucket: instance.objectStorageBucket,
+ objectStoragePrefix: instance.objectStoragePrefix,
+ objectStorageEndpoint: instance.objectStorageEndpoint,
+ objectStorageRegion: instance.objectStorageRegion,
+ objectStoragePort: instance.objectStoragePort,
+ objectStorageAccessKey: instance.objectStorageAccessKey,
+ objectStorageSecretKey: instance.objectStorageSecretKey,
+ objectStorageUseSSL: instance.objectStorageUseSSL,
+ objectStorageUseProxy: instance.objectStorageUseProxy,
+ objectStorageSetPublicRead: instance.objectStorageSetPublicRead,
+ objectStorageS3ForcePathStyle: instance.objectStorageS3ForcePathStyle,
+ deeplAuthKey: instance.deeplAuthKey,
+ deeplIsPro: instance.deeplIsPro,
+ };
+});
diff --git a/packages/backend/src/server/api/endpoints/meta.ts b/packages/backend/src/server/api/endpoints/meta.ts
index 1aff1f63fb..79f20cf710 100644
--- a/packages/backend/src/server/api/endpoints/meta.ts
+++ b/packages/backend/src/server/api/endpoints/meta.ts
@@ -290,151 +290,6 @@ export const meta = {
},
},
},
- userStarForReactionFallback: {
- type: 'boolean',
- optional: true, nullable: false,
- },
- pinnedUsers: {
- type: 'array',
- optional: true, nullable: false,
- items: {
- type: 'string',
- optional: false, nullable: false,
- },
- },
- hiddenTags: {
- type: 'array',
- optional: true, nullable: false,
- items: {
- type: 'string',
- optional: false, nullable: false,
- },
- },
- blockedHosts: {
- type: 'array',
- optional: true, nullable: false,
- items: {
- type: 'string',
- optional: false, nullable: false,
- },
- },
- hcaptchaSecretKey: {
- type: 'string',
- optional: true, nullable: true,
- },
- recaptchaSecretKey: {
- type: 'string',
- optional: true, nullable: true,
- },
- proxyAccountId: {
- type: 'string',
- optional: true, nullable: true,
- format: 'id',
- },
- twitterConsumerKey: {
- type: 'string',
- optional: true, nullable: true,
- },
- twitterConsumerSecret: {
- type: 'string',
- optional: true, nullable: true,
- },
- githubClientId: {
- type: 'string',
- optional: true, nullable: true,
- },
- githubClientSecret: {
- type: 'string',
- optional: true, nullable: true,
- },
- discordClientId: {
- type: 'string',
- optional: true, nullable: true,
- },
- discordClientSecret: {
- type: 'string',
- optional: true, nullable: true,
- },
- summaryProxy: {
- type: 'string',
- optional: true, nullable: true,
- },
- email: {
- type: 'string',
- optional: true, nullable: true,
- },
- smtpSecure: {
- type: 'boolean',
- optional: true, nullable: false,
- },
- smtpHost: {
- type: 'string',
- optional: true, nullable: true,
- },
- smtpPort: {
- type: 'string',
- optional: true, nullable: true,
- },
- smtpUser: {
- type: 'string',
- optional: true, nullable: true,
- },
- smtpPass: {
- type: 'string',
- optional: true, nullable: true,
- },
- swPrivateKey: {
- type: 'string',
- optional: true, nullable: true,
- },
- useObjectStorage: {
- type: 'boolean',
- optional: true, nullable: false,
- },
- objectStorageBaseUrl: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStorageBucket: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStoragePrefix: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStorageEndpoint: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStorageRegion: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStoragePort: {
- type: 'number',
- optional: true, nullable: true,
- },
- objectStorageAccessKey: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStorageSecretKey: {
- type: 'string',
- optional: true, nullable: true,
- },
- objectStorageUseSSL: {
- type: 'boolean',
- optional: true, nullable: false,
- },
- objectStorageUseProxy: {
- type: 'boolean',
- optional: true, nullable: false,
- },
- objectStorageSetPublicRead: {
- type: 'boolean',
- optional: true, nullable: false,
- },
},
},
} as const;
@@ -552,45 +407,6 @@ export default define(meta, paramDef, async (ps, me) => {
serviceWorker: instance.enableServiceWorker,
miauth: true,
};
-
- if (me && me.isAdmin) {
- response.useStarForReactionFallback = instance.useStarForReactionFallback;
- response.pinnedUsers = instance.pinnedUsers;
- response.hiddenTags = instance.hiddenTags;
- response.blockedHosts = instance.blockedHosts;
- response.hcaptchaSecretKey = instance.hcaptchaSecretKey;
- response.recaptchaSecretKey = instance.recaptchaSecretKey;
- response.proxyAccountId = instance.proxyAccountId;
- response.twitterConsumerKey = instance.twitterConsumerKey;
- response.twitterConsumerSecret = instance.twitterConsumerSecret;
- response.githubClientId = instance.githubClientId;
- response.githubClientSecret = instance.githubClientSecret;
- response.discordClientId = instance.discordClientId;
- response.discordClientSecret = instance.discordClientSecret;
- response.summalyProxy = instance.summalyProxy;
- response.email = instance.email;
- response.smtpSecure = instance.smtpSecure;
- response.smtpHost = instance.smtpHost;
- response.smtpPort = instance.smtpPort;
- response.smtpUser = instance.smtpUser;
- response.smtpPass = instance.smtpPass;
- response.swPrivateKey = instance.swPrivateKey;
- response.useObjectStorage = instance.useObjectStorage;
- response.objectStorageBaseUrl = instance.objectStorageBaseUrl;
- response.objectStorageBucket = instance.objectStorageBucket;
- response.objectStoragePrefix = instance.objectStoragePrefix;
- response.objectStorageEndpoint = instance.objectStorageEndpoint;
- response.objectStorageRegion = instance.objectStorageRegion;
- response.objectStoragePort = instance.objectStoragePort;
- response.objectStorageAccessKey = instance.objectStorageAccessKey;
- response.objectStorageSecretKey = instance.objectStorageSecretKey;
- response.objectStorageUseSSL = instance.objectStorageUseSSL;
- response.objectStorageUseProxy = instance.objectStorageUseProxy;
- response.objectStorageSetPublicRead = instance.objectStorageSetPublicRead;
- response.objectStorageS3ForcePathStyle = instance.objectStorageS3ForcePathStyle;
- response.deeplAuthKey = instance.deeplAuthKey;
- response.deeplIsPro = instance.deeplIsPro;
- }
}
return response;