2018-03-29 11:32:18 +00:00
|
|
|
import db from '../db/mongodb';
|
2018-11-04 14:00:43 +00:00
|
|
|
import config from '../config';
|
2018-11-06 15:44:56 +00:00
|
|
|
import User from './user';
|
|
|
|
import { transform } from '../misc/cafy-id';
|
2017-11-15 00:47:47 +00:00
|
|
|
|
2018-03-29 05:48:47 +00:00
|
|
|
const Meta = db.get<IMeta>('meta');
|
|
|
|
export default Meta;
|
2017-11-15 00:47:47 +00:00
|
|
|
|
2018-11-04 14:00:43 +00: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-05 22:14:43 +00: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-05 22:52:13 +00: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 15:08:21 +00: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 15:44:56 +00: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 16:12:26 +00: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 04:14:52 +00: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 14:44:59 +00: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-11-04 14:00:43 +00:00
|
|
|
|
2017-11-15 00:47:47 +00:00
|
|
|
export type IMeta = {
|
2018-11-04 14:00:43 +00:00
|
|
|
name?: string;
|
|
|
|
description?: string;
|
2018-11-06 16:12:26 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* メンテナ情報
|
|
|
|
*/
|
|
|
|
maintainer: {
|
|
|
|
/**
|
|
|
|
* メンテナの名前
|
|
|
|
*/
|
|
|
|
name: string;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* メンテナの連絡先
|
|
|
|
*/
|
|
|
|
email?: string;
|
|
|
|
};
|
|
|
|
|
2018-11-07 03:28:53 +00:00
|
|
|
langs?: string[];
|
|
|
|
|
2018-09-07 10:20:50 +00:00
|
|
|
broadcasts?: any[];
|
2018-11-06 16:12:26 +00:00
|
|
|
|
2018-09-07 10:20:50 +00:00
|
|
|
stats?: {
|
2018-06-16 01:40:53 +00:00
|
|
|
notesCount: number;
|
|
|
|
originalNotesCount: number;
|
|
|
|
usersCount: number;
|
|
|
|
originalUsersCount: number;
|
|
|
|
};
|
2018-11-06 16:12:26 +00:00
|
|
|
|
2018-09-07 10:20:50 +00:00
|
|
|
disableRegistration?: boolean;
|
2018-09-11 17:48:19 +00:00
|
|
|
disableLocalTimeline?: boolean;
|
2018-09-07 10:20:50 +00:00
|
|
|
hidedTags?: string[];
|
2018-09-20 08:21:16 +00:00
|
|
|
bannerUrl?: string;
|
2018-12-11 11:19:13 +00:00
|
|
|
errorImageUrl?: string;
|
2018-11-05 02:09:05 +00:00
|
|
|
|
2018-11-05 22:52:13 +00:00
|
|
|
cacheRemoteFiles?: boolean;
|
|
|
|
|
2018-11-06 15:44:56 +00:00
|
|
|
proxyAccount?: string;
|
|
|
|
|
2018-11-06 15:08:21 +00:00
|
|
|
enableRecaptcha?: boolean;
|
|
|
|
recaptchaSiteKey?: string;
|
|
|
|
recaptchaSecretKey?: string;
|
|
|
|
|
2018-11-05 22:14:43 +00:00
|
|
|
/**
|
|
|
|
* Drive capacity of a local user (MB)
|
|
|
|
*/
|
|
|
|
localDriveCapacityMb?: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Drive capacity of a remote user (MB)
|
|
|
|
*/
|
|
|
|
remoteDriveCapacityMb?: number;
|
|
|
|
|
2018-11-05 02:09:05 +00:00
|
|
|
/**
|
|
|
|
* Max allowed note text length in charactors
|
|
|
|
*/
|
|
|
|
maxNoteTextLength?: number;
|
2018-11-07 04:14:52 +00:00
|
|
|
|
2018-11-22 23:13:17 +00:00
|
|
|
summalyProxy?: string;
|
|
|
|
|
2018-11-07 04:14:52 +00:00
|
|
|
enableTwitterIntegration?: boolean;
|
|
|
|
twitterConsumerKey?: string;
|
|
|
|
twitterConsumerSecret?: string;
|
|
|
|
|
|
|
|
enableGithubIntegration?: boolean;
|
|
|
|
githubClientId?: string;
|
|
|
|
githubClientSecret?: string;
|
2018-11-15 10:15:04 +00:00
|
|
|
|
|
|
|
enableDiscordIntegration?: boolean;
|
|
|
|
discordClientId?: string;
|
|
|
|
discordClientSecret?: string;
|
2018-11-21 14:44:59 +00:00
|
|
|
|
|
|
|
enableExternalUserRecommendation?: boolean;
|
|
|
|
externalUserRecommendationEngine?: string;
|
|
|
|
externalUserRecommendationTimeout?: number;
|
2018-11-29 07:23:45 +00:00
|
|
|
|
|
|
|
enableEmail?: boolean;
|
|
|
|
email?: string;
|
|
|
|
smtpSecure?: boolean;
|
|
|
|
smtpHost?: string;
|
|
|
|
smtpPort?: number;
|
|
|
|
smtpUser?: string;
|
|
|
|
smtpPass?: string;
|
2017-11-15 00:47:47 +00:00
|
|
|
};
|