commit
						52262c7abc
					
				
					 50 changed files with 213 additions and 208 deletions
				
			
		| 
						 | 
					@ -24,7 +24,7 @@ const uglifyes = require('uglify-es');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { fa } from './src/build/fa';
 | 
					import { fa } from './src/build/fa';
 | 
				
			||||||
import version from './src/version';
 | 
					import version from './src/version';
 | 
				
			||||||
import config from './src/conf';
 | 
					import config from './src/config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const uglify = uglifyComposer(uglifyes, console);
 | 
					const uglify = uglifyComposer(uglifyes, console);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ import * as mkdirp from 'mkdirp';
 | 
				
			||||||
import locales from '../../../../locales';
 | 
					import locales from '../../../../locales';
 | 
				
			||||||
import I18nReplacer from '../../../build/i18n';
 | 
					import I18nReplacer from '../../../build/i18n';
 | 
				
			||||||
import fa from '../../../build/fa';
 | 
					import fa from '../../../build/fa';
 | 
				
			||||||
import config from './../../../conf';
 | 
					import config from './../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import generateVars from '../vars';
 | 
					import generateVars from '../vars';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ import * as licenseChecker from 'license-checker';
 | 
				
			||||||
import * as tmp from 'tmp';
 | 
					import * as tmp from 'tmp';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { fa } from '../../build/fa';
 | 
					import { fa } from '../../build/fa';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
import { licenseHtml } from '../../build/license';
 | 
					import { licenseHtml } from '../../build/license';
 | 
				
			||||||
const constants = require('../../const.json');
 | 
					const constants = require('../../const.json');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +0,0 @@
 | 
				
			||||||
import load from './config';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default load();
 | 
					 | 
				
			||||||
							
								
								
									
										154
									
								
								src/config.ts
									
										
									
									
									
								
							
							
						
						
									
										154
									
								
								src/config.ts
									
										
									
									
									
								
							| 
						 | 
					@ -1,154 +0,0 @@
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Config loader
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import * as fs from 'fs';
 | 
					 | 
				
			||||||
import { URL } from 'url';
 | 
					 | 
				
			||||||
import * as yaml from 'js-yaml';
 | 
					 | 
				
			||||||
import isUrl = require('is-url');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Path of configuration directory
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
const dir = `${__dirname}/../.config`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Path of configuration file
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
export const path = process.env.NODE_ENV == 'test'
 | 
					 | 
				
			||||||
	? `${dir}/test.yml`
 | 
					 | 
				
			||||||
	: `${dir}/default.yml`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * ユーザーが設定する必要のある情報
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
type Source = {
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * メンテナ情報
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	maintainer: {
 | 
					 | 
				
			||||||
		/**
 | 
					 | 
				
			||||||
		 * メンテナの名前
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		name: string;
 | 
					 | 
				
			||||||
		/**
 | 
					 | 
				
			||||||
		 * メンテナの連絡先(URLかmailto形式のURL)
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		url: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	url: string;
 | 
					 | 
				
			||||||
	port: number;
 | 
					 | 
				
			||||||
	https?: { [x: string]: string };
 | 
					 | 
				
			||||||
	mongodb: {
 | 
					 | 
				
			||||||
		host: string;
 | 
					 | 
				
			||||||
		port: number;
 | 
					 | 
				
			||||||
		db: string;
 | 
					 | 
				
			||||||
		user: string;
 | 
					 | 
				
			||||||
		pass: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	redis: {
 | 
					 | 
				
			||||||
		host: string;
 | 
					 | 
				
			||||||
		port: number;
 | 
					 | 
				
			||||||
		pass: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	elasticsearch: {
 | 
					 | 
				
			||||||
		enable: boolean;
 | 
					 | 
				
			||||||
		host: string;
 | 
					 | 
				
			||||||
		port: number;
 | 
					 | 
				
			||||||
		pass: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	recaptcha: {
 | 
					 | 
				
			||||||
		site_key: string;
 | 
					 | 
				
			||||||
		secret_key: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	accesslog?: string;
 | 
					 | 
				
			||||||
	accesses?: {
 | 
					 | 
				
			||||||
		enable: boolean;
 | 
					 | 
				
			||||||
		port: number;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	twitter?: {
 | 
					 | 
				
			||||||
		consumer_key: string;
 | 
					 | 
				
			||||||
		consumer_secret: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	github_bot?: {
 | 
					 | 
				
			||||||
		hook_secret: string;
 | 
					 | 
				
			||||||
		username: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	othello_ai?: {
 | 
					 | 
				
			||||||
		id: string;
 | 
					 | 
				
			||||||
		i: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	line_bot?: {
 | 
					 | 
				
			||||||
		channel_secret: string;
 | 
					 | 
				
			||||||
		channel_access_token: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	analysis?: {
 | 
					 | 
				
			||||||
		mecab_command?: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Service Worker
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	sw?: {
 | 
					 | 
				
			||||||
		public_key: string;
 | 
					 | 
				
			||||||
		private_key: string;
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	google_maps_api_key: string;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Misskeyが自動的に(ユーザーが設定した情報から推論して)設定する情報
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
type Mixin = {
 | 
					 | 
				
			||||||
	host: string;
 | 
					 | 
				
			||||||
	hostname: string;
 | 
					 | 
				
			||||||
	scheme: string;
 | 
					 | 
				
			||||||
	ws_scheme: string;
 | 
					 | 
				
			||||||
	api_url: string;
 | 
					 | 
				
			||||||
	ws_url: string;
 | 
					 | 
				
			||||||
	auth_url: string;
 | 
					 | 
				
			||||||
	docs_url: string;
 | 
					 | 
				
			||||||
	stats_url: string;
 | 
					 | 
				
			||||||
	status_url: string;
 | 
					 | 
				
			||||||
	dev_url: string;
 | 
					 | 
				
			||||||
	drive_url: string;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export type Config = Source & Mixin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default function load() {
 | 
					 | 
				
			||||||
	const config = yaml.safeLoad(fs.readFileSync(path, 'utf-8')) as Source;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	const mixin = {} as Mixin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Validate URLs
 | 
					 | 
				
			||||||
	if (!isUrl(config.url)) urlError(config.url);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	const url = new URL(config.url);
 | 
					 | 
				
			||||||
	config.url = normalizeUrl(config.url);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	mixin.host = url.host;
 | 
					 | 
				
			||||||
	mixin.hostname = url.hostname;
 | 
					 | 
				
			||||||
	mixin.scheme = url.protocol.replace(/:$/, '');
 | 
					 | 
				
			||||||
	mixin.ws_scheme = mixin.scheme.replace('http', 'ws');
 | 
					 | 
				
			||||||
	mixin.ws_url = `${mixin.ws_scheme}://${mixin.host}`;
 | 
					 | 
				
			||||||
	mixin.api_url = `${mixin.scheme}://${mixin.host}/api`;
 | 
					 | 
				
			||||||
	mixin.auth_url = `${mixin.scheme}://${mixin.host}/auth`;
 | 
					 | 
				
			||||||
	mixin.dev_url = `${mixin.scheme}://${mixin.host}/dev`;
 | 
					 | 
				
			||||||
	mixin.docs_url = `${mixin.scheme}://${mixin.host}/docs`;
 | 
					 | 
				
			||||||
	mixin.stats_url = `${mixin.scheme}://${mixin.host}/stats`;
 | 
					 | 
				
			||||||
	mixin.status_url = `${mixin.scheme}://${mixin.host}/status`;
 | 
					 | 
				
			||||||
	mixin.drive_url = `${mixin.scheme}://${mixin.host}/files`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return Object.assign(config, mixin);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function normalizeUrl(url: string) {
 | 
					 | 
				
			||||||
	return url[url.length - 1] === '/' ? url.substr(0, url.length - 1) : url;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function urlError(url: string) {
 | 
					 | 
				
			||||||
	console.error(`「${url}」は、正しいURLではありません。先頭に http:// または https:// をつけ忘れてないかなど確認してください。`);
 | 
					 | 
				
			||||||
	process.exit();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										3
									
								
								src/config/index.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/config/index.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					import load from './load';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default load();
 | 
				
			||||||
							
								
								
									
										57
									
								
								src/config/load.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/config/load.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Config loader
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as fs from 'fs';
 | 
				
			||||||
 | 
					import { URL } from 'url';
 | 
				
			||||||
 | 
					import * as yaml from 'js-yaml';
 | 
				
			||||||
 | 
					import { Source, Mixin } from './types';
 | 
				
			||||||
 | 
					import isUrl = require('is-url');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Path of configuration directory
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					const dir = `${__dirname}/../../.config`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Path of configuration file
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					const path = process.env.NODE_ENV == 'test'
 | 
				
			||||||
 | 
						? `${dir}/test.yml`
 | 
				
			||||||
 | 
						: `${dir}/default.yml`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default function load() {
 | 
				
			||||||
 | 
						const config = yaml.safeLoad(fs.readFileSync(path, 'utf-8')) as Source;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const mixin = {} as Mixin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Validate URLs
 | 
				
			||||||
 | 
						if (!isUrl(config.url)) urlError(config.url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const url = new URL(config.url);
 | 
				
			||||||
 | 
						config.url = normalizeUrl(config.url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mixin.host = url.host;
 | 
				
			||||||
 | 
						mixin.hostname = url.hostname;
 | 
				
			||||||
 | 
						mixin.scheme = url.protocol.replace(/:$/, '');
 | 
				
			||||||
 | 
						mixin.ws_scheme = mixin.scheme.replace('http', 'ws');
 | 
				
			||||||
 | 
						mixin.ws_url = `${mixin.ws_scheme}://${mixin.host}`;
 | 
				
			||||||
 | 
						mixin.api_url = `${mixin.scheme}://${mixin.host}/api`;
 | 
				
			||||||
 | 
						mixin.auth_url = `${mixin.scheme}://${mixin.host}/auth`;
 | 
				
			||||||
 | 
						mixin.dev_url = `${mixin.scheme}://${mixin.host}/dev`;
 | 
				
			||||||
 | 
						mixin.docs_url = `${mixin.scheme}://${mixin.host}/docs`;
 | 
				
			||||||
 | 
						mixin.stats_url = `${mixin.scheme}://${mixin.host}/stats`;
 | 
				
			||||||
 | 
						mixin.status_url = `${mixin.scheme}://${mixin.host}/status`;
 | 
				
			||||||
 | 
						mixin.drive_url = `${mixin.scheme}://${mixin.host}/files`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return Object.assign(config, mixin);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function normalizeUrl(url: string) {
 | 
				
			||||||
 | 
						return url[url.length - 1] === '/' ? url.substr(0, url.length - 1) : url;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function urlError(url: string) {
 | 
				
			||||||
 | 
						console.error(`「${url}」は、正しいURLではありません。先頭に http:// または https:// をつけ忘れてないかなど確認してください。`);
 | 
				
			||||||
 | 
						process.exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										97
									
								
								src/config/types.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								src/config/types.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,97 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * ユーザーが設定する必要のある情報
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export type Source = {
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * メンテナ情報
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						maintainer: {
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * メンテナの名前
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							name: string;
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * メンテナの連絡先(URLかmailto形式のURL)
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							url: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						url: string;
 | 
				
			||||||
 | 
						port: number;
 | 
				
			||||||
 | 
						https?: { [x: string]: string };
 | 
				
			||||||
 | 
						mongodb: {
 | 
				
			||||||
 | 
							host: string;
 | 
				
			||||||
 | 
							port: number;
 | 
				
			||||||
 | 
							db: string;
 | 
				
			||||||
 | 
							user: string;
 | 
				
			||||||
 | 
							pass: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						redis: {
 | 
				
			||||||
 | 
							host: string;
 | 
				
			||||||
 | 
							port: number;
 | 
				
			||||||
 | 
							pass: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						elasticsearch: {
 | 
				
			||||||
 | 
							enable: boolean;
 | 
				
			||||||
 | 
							host: string;
 | 
				
			||||||
 | 
							port: number;
 | 
				
			||||||
 | 
							pass: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						recaptcha: {
 | 
				
			||||||
 | 
							site_key: string;
 | 
				
			||||||
 | 
							secret_key: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						accesslog?: string;
 | 
				
			||||||
 | 
						accesses?: {
 | 
				
			||||||
 | 
							enable: boolean;
 | 
				
			||||||
 | 
							port: number;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						twitter?: {
 | 
				
			||||||
 | 
							consumer_key: string;
 | 
				
			||||||
 | 
							consumer_secret: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						github_bot?: {
 | 
				
			||||||
 | 
							hook_secret: string;
 | 
				
			||||||
 | 
							username: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						othello_ai?: {
 | 
				
			||||||
 | 
							id: string;
 | 
				
			||||||
 | 
							i: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						line_bot?: {
 | 
				
			||||||
 | 
							channel_secret: string;
 | 
				
			||||||
 | 
							channel_access_token: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						analysis?: {
 | 
				
			||||||
 | 
							mecab_command?: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Service Worker
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						sw?: {
 | 
				
			||||||
 | 
							public_key: string;
 | 
				
			||||||
 | 
							private_key: string;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						google_maps_api_key: string;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Misskeyが自動的に(ユーザーが設定した情報から推論して)設定する情報
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export type Mixin = {
 | 
				
			||||||
 | 
						host: string;
 | 
				
			||||||
 | 
						hostname: string;
 | 
				
			||||||
 | 
						scheme: string;
 | 
				
			||||||
 | 
						ws_scheme: string;
 | 
				
			||||||
 | 
						api_url: string;
 | 
				
			||||||
 | 
						ws_url: string;
 | 
				
			||||||
 | 
						auth_url: string;
 | 
				
			||||||
 | 
						docs_url: string;
 | 
				
			||||||
 | 
						stats_url: string;
 | 
				
			||||||
 | 
						status_url: string;
 | 
				
			||||||
 | 
						dev_url: string;
 | 
				
			||||||
 | 
						drive_url: string;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export type Config = Source & Mixin;
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import * as elasticsearch from 'elasticsearch';
 | 
					import * as elasticsearch from 'elasticsearch';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Init ElasticSearch connection
 | 
					// Init ElasticSearch connection
 | 
				
			||||||
const client = new elasticsearch.Client({
 | 
					const client = new elasticsearch.Client({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const u = config.mongodb.user ? encodeURIComponent(config.mongodb.user) : null;
 | 
					const u = config.mongodb.user ? encodeURIComponent(config.mongodb.user) : null;
 | 
				
			||||||
const p = config.mongodb.pass ? encodeURIComponent(config.mongodb.pass) : null;
 | 
					const p = config.mongodb.pass ? encodeURIComponent(config.mongodb.pass) : null;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import * as redis from 'redis';
 | 
					import * as redis from 'redis';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default redis.createClient(
 | 
					export default redis.createClient(
 | 
				
			||||||
	config.redis.port,
 | 
						config.redis.port,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ import DriveFolder from '../models/drive-folder';
 | 
				
			||||||
import { pack } from '../models/drive-file';
 | 
					import { pack } from '../models/drive-file';
 | 
				
			||||||
import event, { publishDriveStream } from '../event';
 | 
					import event, { publishDriveStream } from '../event';
 | 
				
			||||||
import getAcct from '../user/get-acct';
 | 
					import getAcct from '../user/get-acct';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const gm = _gm.subClass({
 | 
					const gm = _gm.subClass({
 | 
				
			||||||
	imageMagick: true
 | 
						imageMagick: true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
import * as mongo from 'mongodb';
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import * as redis from 'redis';
 | 
					import * as redis from 'redis';
 | 
				
			||||||
import swPush from './push-sw';
 | 
					import swPush from './push-sw';
 | 
				
			||||||
import config from './conf';
 | 
					import config from './config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ID = string | mongo.ObjectID;
 | 
					type ID = string | mongo.ObjectID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										19
									
								
								src/index.ts
									
										
									
									
									
								
							
							
						
						
									
										19
									
								
								src/index.ts
									
										
									
									
									
								
							| 
						 | 
					@ -4,7 +4,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Error.stackTraceLimit = Infinity;
 | 
					Error.stackTraceLimit = Infinity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import * as fs from 'fs';
 | 
					 | 
				
			||||||
import * as os from 'os';
 | 
					import * as os from 'os';
 | 
				
			||||||
import * as cluster from 'cluster';
 | 
					import * as cluster from 'cluster';
 | 
				
			||||||
import * as debug from 'debug';
 | 
					import * as debug from 'debug';
 | 
				
			||||||
| 
						 | 
					@ -21,8 +20,8 @@ import MachineInfo from './utils/machineInfo';
 | 
				
			||||||
import DependencyInfo from './utils/dependencyInfo';
 | 
					import DependencyInfo from './utils/dependencyInfo';
 | 
				
			||||||
import stats from './utils/stats';
 | 
					import stats from './utils/stats';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Config, path as configPath } from './config';
 | 
					import loadConfig from './config/load';
 | 
				
			||||||
import loadConfig from './config';
 | 
					import { Config } from './config/types';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import parseOpt from './parse-opt';
 | 
					import parseOpt from './parse-opt';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -116,11 +115,17 @@ async function init(): Promise<Config> {
 | 
				
			||||||
	new DependencyInfo().showAll();
 | 
						new DependencyInfo().showAll();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const configLogger = new Logger('Config');
 | 
						const configLogger = new Logger('Config');
 | 
				
			||||||
	if (!fs.existsSync(configPath)) {
 | 
						let config;
 | 
				
			||||||
		throw 'Configuration not found - Please run "npm run config" command.';
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const config = loadConfig();
 | 
						try {
 | 
				
			||||||
 | 
							config = loadConfig();
 | 
				
			||||||
 | 
						} catch (exception) {
 | 
				
			||||||
 | 
							if (exception.code === 'ENOENT') {
 | 
				
			||||||
 | 
								throw 'Configuration not found - Please run "npm run config" command.';
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							throw exception;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	configLogger.info('Successfully loaded');
 | 
						configLogger.info('Successfully loaded');
 | 
				
			||||||
	configLogger.info(`maintainer: ${config.maintainer}`);
 | 
						configLogger.info(`maintainer: ${config.maintainer}`);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ import * as mongo from 'mongodb';
 | 
				
			||||||
import deepcopy = require('deepcopy');
 | 
					import deepcopy = require('deepcopy');
 | 
				
			||||||
import AccessToken from './access-token';
 | 
					import AccessToken from './access-token';
 | 
				
			||||||
import db from '../db/mongodb';
 | 
					import db from '../db/mongodb';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const App = db.get<IApp>('apps');
 | 
					const App = db.get<IApp>('apps');
 | 
				
			||||||
App.createIndex('nameId');
 | 
					App.createIndex('nameId');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
import * as mongodb from 'mongodb';
 | 
					import * as mongodb from 'mongodb';
 | 
				
			||||||
import deepcopy = require('deepcopy');
 | 
					import deepcopy = require('deepcopy');
 | 
				
			||||||
import { pack as packFolder } from './drive-folder';
 | 
					import { pack as packFolder } from './drive-folder';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
import monkDb, { nativeDbConn } from '../db/mongodb';
 | 
					import monkDb, { nativeDbConn } from '../db/mongodb';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
 | 
					const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ import { IPost, pack as packPost } from './post';
 | 
				
			||||||
import Following from './following';
 | 
					import Following from './following';
 | 
				
			||||||
import Mute from './mute';
 | 
					import Mute from './mute';
 | 
				
			||||||
import getFriends from '../server/api/common/get-friends';
 | 
					import getFriends from '../server/api/common/get-friends';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const User = db.get<IUser>('users');
 | 
					const User = db.get<IUser>('users');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import * as request from 'request-promise-native';
 | 
					import * as request from 'request-promise-native';
 | 
				
			||||||
import Othello, { Color } from '../core';
 | 
					import Othello, { Color } from '../core';
 | 
				
			||||||
import conf from '../../conf';
 | 
					import conf from '../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let game;
 | 
					let game;
 | 
				
			||||||
let form;
 | 
					let form;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@ import * as childProcess from 'child_process';
 | 
				
			||||||
const WebSocket = require('ws');
 | 
					const WebSocket = require('ws');
 | 
				
			||||||
import * as ReconnectingWebSocket from 'reconnecting-websocket';
 | 
					import * as ReconnectingWebSocket from 'reconnecting-websocket';
 | 
				
			||||||
import * as request from 'request-promise-native';
 | 
					import * as request from 'request-promise-native';
 | 
				
			||||||
import conf from '../../conf';
 | 
					import conf from '../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 設定 ////////////////////////////////////////////////////////
 | 
					// 設定 ////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ import event from '../../event';
 | 
				
			||||||
import notify from '../../notify';
 | 
					import notify from '../../notify';
 | 
				
			||||||
import context from '../../remote/activitypub/renderer/context';
 | 
					import context from '../../remote/activitypub/renderer/context';
 | 
				
			||||||
import render from '../../remote/activitypub/renderer/follow';
 | 
					import render from '../../remote/activitypub/renderer/follow';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default ({ data }, done) => Following.findOne({ _id: data.following }).then(({ followerId, followeeId }) => {
 | 
					export default ({ data }, done) => Following.findOne({ _id: data.following }).then(({ followerId, followeeId }) => {
 | 
				
			||||||
	const promisedFollower: Promise<ILocalUser> = User.findOne({ _id: followerId });
 | 
						const promisedFollower: Promise<ILocalUser> = User.findOne({ _id: followerId });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
const push = require('web-push');
 | 
					const push = require('web-push');
 | 
				
			||||||
import * as mongo from 'mongodb';
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import Subscription from './models/sw-subscription';
 | 
					import Subscription from './models/sw-subscription';
 | 
				
			||||||
import config from './conf';
 | 
					import config from './config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (config.sw) {
 | 
					if (config.sw) {
 | 
				
			||||||
	// アプリケーションの連絡先と、サーバーサイドの鍵ペアの情報を登録
 | 
						// アプリケーションの連絡先と、サーバーサイドの鍵ペアの情報を登録
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import { createQueue } from 'kue';
 | 
					import { createQueue } from 'kue';
 | 
				
			||||||
import config from './conf';
 | 
					import config from './config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default createQueue({
 | 
					export default createQueue({
 | 
				
			||||||
	redis: {
 | 
						redis: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import { JSDOM } from 'jsdom';
 | 
					import { JSDOM } from 'jsdom';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
import Post from '../../models/post';
 | 
					import Post from '../../models/post';
 | 
				
			||||||
import RemoteUserObject, { IRemoteUserObject } from '../../models/remote-user-object';
 | 
					import RemoteUserObject, { IRemoteUserObject } from '../../models/remote-user-object';
 | 
				
			||||||
import uploadFromUrl from '../../drive/upload-from-url';
 | 
					import uploadFromUrl from '../../drive/upload-from-url';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default ({ _id, contentType }) => ({
 | 
					export default ({ _id, contentType }) => ({
 | 
				
			||||||
	type: 'Document',
 | 
						type: 'Document',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
import { IRemoteUser } from '../../../models/user';
 | 
					import { IRemoteUser } from '../../../models/user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default ({ username }, followee: IRemoteUser) => ({
 | 
					export default ({ username }, followee: IRemoteUser) => ({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default tag => ({
 | 
					export default tag => ({
 | 
				
			||||||
	type: 'Hashtag',
 | 
						type: 'Hashtag',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default ({ _id }) => ({
 | 
					export default ({ _id }) => ({
 | 
				
			||||||
	type: 'Image',
 | 
						type: 'Image',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
import { extractPublic } from '../../../crypto_key';
 | 
					import { extractPublic } from '../../../crypto_key';
 | 
				
			||||||
import { ILocalUser } from '../../../models/user';
 | 
					import { ILocalUser } from '../../../models/user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
import renderDocument from './document';
 | 
					import renderDocument from './document';
 | 
				
			||||||
import renderHashtag from './hashtag';
 | 
					import renderHashtag from './hashtag';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
import DriveFile from '../../../models/drive-file';
 | 
					import DriveFile from '../../../models/drive-file';
 | 
				
			||||||
import Post from '../../../models/post';
 | 
					import Post from '../../../models/post';
 | 
				
			||||||
import User from '../../../models/user';
 | 
					import User from '../../../models/user';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
import renderImage from './image';
 | 
					import renderImage from './image';
 | 
				
			||||||
import renderKey from './key';
 | 
					import renderKey from './key';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default user => {
 | 
					export default user => {
 | 
				
			||||||
	const id = `${config.url}/@${user.username}`;
 | 
						const id = `${config.url}/@${user.username}`;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ import * as express from 'express';
 | 
				
			||||||
import context from '../../remote/activitypub/renderer/context';
 | 
					import context from '../../remote/activitypub/renderer/context';
 | 
				
			||||||
import renderNote from '../../remote/activitypub/renderer/note';
 | 
					import renderNote from '../../remote/activitypub/renderer/note';
 | 
				
			||||||
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
 | 
					import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
import Post from '../../models/post';
 | 
					import Post from '../../models/post';
 | 
				
			||||||
import withUser from './with-user';
 | 
					import withUser from './with-user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
import * as express from 'express';
 | 
					import * as express from 'express';
 | 
				
			||||||
import context from '../../remote/activitypub/renderer/context';
 | 
					import context from '../../remote/activitypub/renderer/context';
 | 
				
			||||||
import render from '../../remote/activitypub/renderer/key';
 | 
					import render from '../../remote/activitypub/renderer/key';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
import withUser from './with-user';
 | 
					import withUser from './with-user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const app = express();
 | 
					const app = express();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import * as express from 'express';
 | 
					import * as express from 'express';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
import context from '../../remote/activitypub/renderer/context';
 | 
					import context from '../../remote/activitypub/renderer/context';
 | 
				
			||||||
import render from '../../remote/activitypub/renderer/person';
 | 
					import render from '../../remote/activitypub/renderer/person';
 | 
				
			||||||
import withUser from './with-user';
 | 
					import withUser from './with-user';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@ import * as express from 'express';
 | 
				
			||||||
import * as request from 'request';
 | 
					import * as request from 'request';
 | 
				
			||||||
import * as crypto from 'crypto';
 | 
					import * as crypto from 'crypto';
 | 
				
			||||||
import User from '../../../../models/user';
 | 
					import User from '../../../../models/user';
 | 
				
			||||||
import config from '../../../../conf';
 | 
					import config from '../../../../config';
 | 
				
			||||||
import BotCore from '../core';
 | 
					import BotCore from '../core';
 | 
				
			||||||
import _redis from '../../../../db/redis';
 | 
					import _redis from '../../../../db/redis';
 | 
				
			||||||
import prominence = require('prominence');
 | 
					import prominence = require('prominence');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function(res, user, redirect: boolean) {
 | 
					export default function(res, user, redirect: boolean) {
 | 
				
			||||||
	const expires = 1000 * 60 * 60 * 24 * 365; // One Year
 | 
						const expires = 1000 * 60 * 60 * 24 * 365; // One Year
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ import * as uuid from 'uuid';
 | 
				
			||||||
import $ from 'cafy';
 | 
					import $ from 'cafy';
 | 
				
			||||||
import App from '../../../../../models/app';
 | 
					import App from '../../../../../models/app';
 | 
				
			||||||
import AuthSess from '../../../../../models/auth-session';
 | 
					import AuthSess from '../../../../../models/auth-session';
 | 
				
			||||||
import config from '../../../../../conf';
 | 
					import config from '../../../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @swagger
 | 
					 * @swagger
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ import * as bcrypt from 'bcryptjs';
 | 
				
			||||||
import * as speakeasy from 'speakeasy';
 | 
					import * as speakeasy from 'speakeasy';
 | 
				
			||||||
import * as QRCode from 'qrcode';
 | 
					import * as QRCode from 'qrcode';
 | 
				
			||||||
import User from '../../../../../models/user';
 | 
					import User from '../../../../../models/user';
 | 
				
			||||||
import config from '../../../../../conf';
 | 
					import config from '../../../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = async (params, user) => new Promise(async (res, rej) => {
 | 
					module.exports = async (params, user) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'password' parameter
 | 
						// Get 'password' parameter
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
import $ from 'cafy';
 | 
					import $ from 'cafy';
 | 
				
			||||||
import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack } from '../../../../models/user';
 | 
					import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack } from '../../../../models/user';
 | 
				
			||||||
import event from '../../../../event';
 | 
					import event from '../../../../event';
 | 
				
			||||||
import config from '../../../../conf';
 | 
					import config from '../../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Update myself
 | 
					 * Update myself
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ import publishUserStream from '../../../../../event';
 | 
				
			||||||
import { publishMessagingStream, publishMessagingIndexStream, pushSw } from '../../../../../event';
 | 
					import { publishMessagingStream, publishMessagingIndexStream, pushSw } from '../../../../../event';
 | 
				
			||||||
import html from '../../../../../text/html';
 | 
					import html from '../../../../../text/html';
 | 
				
			||||||
import parse from '../../../../../text/parse';
 | 
					import parse from '../../../../../text/parse';
 | 
				
			||||||
import config from '../../../../../conf';
 | 
					import config from '../../../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Create a message
 | 
					 * Create a message
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import * as os from 'os';
 | 
					import * as os from 'os';
 | 
				
			||||||
import version from '../../../version';
 | 
					import version from '../../../version';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
import Meta from '../../../models/meta';
 | 
					import Meta from '../../../models/meta';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ import event, { pushSw, publishChannelStream } from '../../../../event';
 | 
				
			||||||
import notify from '../../../../notify';
 | 
					import notify from '../../../../notify';
 | 
				
			||||||
import getAcct from '../../../../user/get-acct';
 | 
					import getAcct from '../../../../user/get-acct';
 | 
				
			||||||
import parseAcct from '../../../../user/parse-acct';
 | 
					import parseAcct from '../../../../user/parse-acct';
 | 
				
			||||||
import config from '../../../../conf';
 | 
					import config from '../../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Create a post
 | 
					 * Create a post
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
import * as mongo from 'mongodb';
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import $ from 'cafy';
 | 
					import $ from 'cafy';
 | 
				
			||||||
import User, { pack } from '../../../../models/user';
 | 
					import User, { pack } from '../../../../models/user';
 | 
				
			||||||
import config from '../../../../conf';
 | 
					import config from '../../../../config';
 | 
				
			||||||
const escapeRegexp = require('escape-regexp');
 | 
					const escapeRegexp = require('escape-regexp');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ import User, { ILocalUser } from '../../../models/user';
 | 
				
			||||||
import Signin, { pack } from '../../../models/signin';
 | 
					import Signin, { pack } from '../../../models/signin';
 | 
				
			||||||
import event from '../../../event';
 | 
					import event from '../../../event';
 | 
				
			||||||
import signin from '../common/signin';
 | 
					import signin from '../common/signin';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default async (req: express.Request, res: express.Response) => {
 | 
					export default async (req: express.Request, res: express.Response) => {
 | 
				
			||||||
	res.header('Access-Control-Allow-Origin', config.url);
 | 
						res.header('Access-Control-Allow-Origin', config.url);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ import { generate as generateKeypair } from '../../../crypto_key';
 | 
				
			||||||
import recaptcha = require('recaptcha-promise');
 | 
					import recaptcha = require('recaptcha-promise');
 | 
				
			||||||
import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user';
 | 
					import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user';
 | 
				
			||||||
import generateUserToken from '../common/generate-native-user-token';
 | 
					import generateUserToken from '../common/generate-native-user-token';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
recaptcha.init({
 | 
					recaptcha.init({
 | 
				
			||||||
	secret_key: config.recaptcha.secret_key
 | 
						secret_key: config.recaptcha.secret_key
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ import * as EventEmitter from 'events';
 | 
				
			||||||
import * as express from 'express';
 | 
					import * as express from 'express';
 | 
				
			||||||
//const crypto = require('crypto');
 | 
					//const crypto = require('crypto');
 | 
				
			||||||
import User from '../../../models/user';
 | 
					import User from '../../../models/user';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
import queue from '../../../queue';
 | 
					import queue from '../../../queue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = async (app: express.Application) => {
 | 
					module.exports = async (app: express.Application) => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ import autwh from 'autwh';
 | 
				
			||||||
import redis from '../../../db/redis';
 | 
					import redis from '../../../db/redis';
 | 
				
			||||||
import User, { pack } from '../../../models/user';
 | 
					import User, { pack } from '../../../models/user';
 | 
				
			||||||
import event from '../../../event';
 | 
					import event from '../../../event';
 | 
				
			||||||
import config from '../../../conf';
 | 
					import config from '../../../config';
 | 
				
			||||||
import signin from '../common/signin';
 | 
					import signin from '../common/signin';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = (app: express.Application) => {
 | 
					module.exports = (app: express.Application) => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
import * as http from 'http';
 | 
					import * as http from 'http';
 | 
				
			||||||
import * as websocket from 'websocket';
 | 
					import * as websocket from 'websocket';
 | 
				
			||||||
import * as redis from 'redis';
 | 
					import * as redis from 'redis';
 | 
				
			||||||
import config from '../../conf';
 | 
					import config from '../../config';
 | 
				
			||||||
import { default as User, IUser } from '../../models/user';
 | 
					import { default as User, IUser } from '../../models/user';
 | 
				
			||||||
import AccessToken from '../../models/access-token';
 | 
					import AccessToken from '../../models/access-token';
 | 
				
			||||||
import isNativeToken from './common/is-native-token';
 | 
					import isNativeToken from './common/is-native-token';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@ import Accesses from 'accesses';
 | 
				
			||||||
import activityPub from './activitypub';
 | 
					import activityPub from './activitypub';
 | 
				
			||||||
import webFinger from './webfinger';
 | 
					import webFinger from './webfinger';
 | 
				
			||||||
import log from './log-request';
 | 
					import log from './log-request';
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Init app
 | 
					 * Init app
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
import config from '../conf';
 | 
					import config from '../config';
 | 
				
			||||||
import parseAcct from '../user/parse-acct';
 | 
					import parseAcct from '../user/parse-acct';
 | 
				
			||||||
import User from '../models/user';
 | 
					import User from '../models/user';
 | 
				
			||||||
const express = require('express');
 | 
					const express = require('express');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ const ProgressBarPlugin = require('progress-bar-webpack-plugin');
 | 
				
			||||||
import I18nReplacer from './src/build/i18n';
 | 
					import I18nReplacer from './src/build/i18n';
 | 
				
			||||||
import { pattern as faPattern, replacement as faReplacement } from './src/build/fa';
 | 
					import { pattern as faPattern, replacement as faReplacement } from './src/build/fa';
 | 
				
			||||||
const constants = require('./src/const.json');
 | 
					const constants = require('./src/const.json');
 | 
				
			||||||
import config from './src/conf';
 | 
					import config from './src/config';
 | 
				
			||||||
import { licenseHtml } from './src/build/license';
 | 
					import { licenseHtml } from './src/build/license';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import locales from './locales';
 | 
					import locales from './locales';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue