2018-03-29 14:32:18 +03:00
|
|
|
import db from '../db/mongodb';
|
2018-11-04 16:00:43 +02:00
|
|
|
import config from '../config';
|
2018-11-06 17:44:56 +02:00
|
|
|
import User from './user';
|
|
|
|
import { transform } from '../misc/cafy-id';
|
2017-11-15 02:47:47 +02:00
|
|
|
|
2018-03-29 08:48:47 +03:00
|
|
|
const Meta = db.get<IMeta>('meta');
|
|
|
|
export default Meta;
|
2017-11-15 02:47:47 +02:00
|
|
|
|
2018-11-04 16:00:43 +02:00
|
|
|
// 後方互換性のため。
|
|
|
|
// 過去のMisskeyではインスタンス名や紹介を設定ファイルに記述していたのでそれを移行
|
|
|
|
if ((config as any).name) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.name == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
name: (config as any).name
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if ((config as any).description) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.description == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
description: (config as any).description
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-06 00:14:43 +02:00
|
|
|
if ((config as any).localDriveCapacityMb) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.localDriveCapacityMb == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
localDriveCapacityMb: (config as any).localDriveCapacityMb
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if ((config as any).remoteDriveCapacityMb) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.remoteDriveCapacityMb == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
remoteDriveCapacityMb: (config as any).remoteDriveCapacityMb
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-06 00:52:13 +02:00
|
|
|
if ((config as any).preventCacheRemoteFiles) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.cacheRemoteFiles == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
cacheRemoteFiles: !(config as any).preventCacheRemoteFiles
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-06 17:08:21 +02:00
|
|
|
if ((config as any).recaptcha) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.enableRecaptcha == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
enableRecaptcha: (config as any).recaptcha != null,
|
|
|
|
recaptchaSiteKey: (config as any).recaptcha.site_key,
|
|
|
|
recaptchaSecretKey: (config as any).recaptcha.secret_key,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-06 17:44:56 +02:00
|
|
|
if ((config as any).ghost) {
|
|
|
|
Meta.findOne({}).then(async m => {
|
|
|
|
if (m != null && m.proxyAccount == null) {
|
|
|
|
const account = await User.findOne({ _id: transform((config as any).ghost) });
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
proxyAccount: account.username
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-06 18:12:26 +02:00
|
|
|
if ((config as any).maintainer) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.maintainer == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
maintainer: (config as any).maintainer
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-07 06:14:52 +02:00
|
|
|
if ((config as any).twitter) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.enableTwitterIntegration == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
enableTwitterIntegration: true,
|
|
|
|
twitterConsumerKey: (config as any).twitter.consumer_key,
|
|
|
|
twitterConsumerSecret: (config as any).twitter.consumer_secret
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if ((config as any).github) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.enableGithubIntegration == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
enableGithubIntegration: true,
|
|
|
|
githubClientId: (config as any).github.client_id,
|
|
|
|
githubClientSecret: (config as any).github.client_secret
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-21 16:44:59 +02:00
|
|
|
if ((config as any).user_recommendation) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.enableExternalUserRecommendation == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
enableExternalUserRecommendation: true,
|
|
|
|
externalUserRecommendationEngine: (config as any).user_recommendation.engine,
|
|
|
|
externalUserRecommendationTimeout: (config as any).user_recommendation.timeout
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-12-19 21:11:10 +02:00
|
|
|
if ((config as any).sw) {
|
|
|
|
Meta.findOne({}).then(m => {
|
|
|
|
if (m != null && m.enableServiceWorker == null) {
|
|
|
|
Meta.update({}, {
|
|
|
|
$set: {
|
|
|
|
enableServiceWorker: true,
|
|
|
|
swPublicKey: (config as any).sw.public_key,
|
|
|
|
swPrivateKey: (config as any).sw.private_key
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2018-11-04 16:00:43 +02:00
|
|
|
|
2017-11-15 02:47:47 +02:00
|
|
|
export type IMeta = {
|
2018-11-04 16:00:43 +02:00
|
|
|
name?: string;
|
|
|
|
description?: string;
|
2018-11-06 18:12:26 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* メンテナ情報
|
|
|
|
*/
|
|
|
|
maintainer: {
|
|
|
|
/**
|
|
|
|
* メンテナの名前
|
|
|
|
*/
|
|
|
|
name: string;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* メンテナの連絡先
|
|
|
|
*/
|
|
|
|
email?: string;
|
|
|
|
};
|
|
|
|
|
2018-11-07 05:28:53 +02:00
|
|
|
langs?: string[];
|
|
|
|
|
2018-09-07 13:20:50 +03:00
|
|
|
broadcasts?: any[];
|
2018-11-06 18:12:26 +02:00
|
|
|
|
2018-09-07 13:20:50 +03:00
|
|
|
stats?: {
|
2018-06-16 04:40:53 +03:00
|
|
|
notesCount: number;
|
|
|
|
originalNotesCount: number;
|
|
|
|
usersCount: number;
|
|
|
|
originalUsersCount: number;
|
|
|
|
};
|
2018-11-06 18:12:26 +02:00
|
|
|
|
2018-09-07 13:20:50 +03:00
|
|
|
disableRegistration?: boolean;
|
2018-09-11 20:48:19 +03:00
|
|
|
disableLocalTimeline?: boolean;
|
2018-09-07 13:20:50 +03:00
|
|
|
hidedTags?: string[];
|
2019-01-03 20:52:50 +02:00
|
|
|
mascotImageUrl?: string;
|
2018-09-20 11:21:16 +03:00
|
|
|
bannerUrl?: string;
|
2018-12-11 13:19:13 +02:00
|
|
|
errorImageUrl?: string;
|
2018-11-05 04:09:05 +02:00
|
|
|
|
2018-11-06 00:52:13 +02:00
|
|
|
cacheRemoteFiles?: boolean;
|
|
|
|
|
2018-11-06 17:44:56 +02:00
|
|
|
proxyAccount?: string;
|
|
|
|
|
2018-11-06 17:08:21 +02:00
|
|
|
enableRecaptcha?: boolean;
|
|
|
|
recaptchaSiteKey?: string;
|
|
|
|
recaptchaSecretKey?: string;
|
|
|
|
|
2018-11-06 00:14:43 +02:00
|
|
|
/**
|
|
|
|
* Drive capacity of a local user (MB)
|
|
|
|
*/
|
|
|
|
localDriveCapacityMb?: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Drive capacity of a remote user (MB)
|
|
|
|
*/
|
|
|
|
remoteDriveCapacityMb?: number;
|
|
|
|
|
2018-11-05 04:09:05 +02:00
|
|
|
/**
|
|
|
|
* Max allowed note text length in charactors
|
|
|
|
*/
|
|
|
|
maxNoteTextLength?: number;
|
2018-11-07 06:14:52 +02:00
|
|
|
|
2018-11-23 01:13:17 +02:00
|
|
|
summalyProxy?: string;
|
|
|
|
|
2018-11-07 06:14:52 +02:00
|
|
|
enableTwitterIntegration?: boolean;
|
|
|
|
twitterConsumerKey?: string;
|
|
|
|
twitterConsumerSecret?: string;
|
|
|
|
|
|
|
|
enableGithubIntegration?: boolean;
|
|
|
|
githubClientId?: string;
|
|
|
|
githubClientSecret?: string;
|
2018-11-15 12:15:04 +02:00
|
|
|
|
|
|
|
enableDiscordIntegration?: boolean;
|
|
|
|
discordClientId?: string;
|
|
|
|
discordClientSecret?: string;
|
2018-11-21 16:44:59 +02:00
|
|
|
|
|
|
|
enableExternalUserRecommendation?: boolean;
|
|
|
|
externalUserRecommendationEngine?: string;
|
|
|
|
externalUserRecommendationTimeout?: number;
|
2018-11-29 09:23:45 +02:00
|
|
|
|
|
|
|
enableEmail?: boolean;
|
|
|
|
email?: string;
|
|
|
|
smtpSecure?: boolean;
|
|
|
|
smtpHost?: string;
|
|
|
|
smtpPort?: number;
|
|
|
|
smtpUser?: string;
|
|
|
|
smtpPass?: string;
|
2018-12-19 21:08:13 +02:00
|
|
|
|
|
|
|
enableServiceWorker?: boolean;
|
|
|
|
swPublicKey?: string;
|
|
|
|
swPrivateKey?: string;
|
2017-11-15 02:47:47 +02:00
|
|
|
};
|