@@ -1,7 +1,8 @@
 | 
				
			|||||||
import * as redis from 'redis';
 | 
					import * as redis from 'redis';
 | 
				
			||||||
import config from '../config';
 | 
					import config from '../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const client = redis.createClient(
 | 
					export function createConnection() {
 | 
				
			||||||
 | 
						return redis.createClient(
 | 
				
			||||||
		config.redis.port,
 | 
							config.redis.port,
 | 
				
			||||||
		config.redis.host,
 | 
							config.redis.host,
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -9,8 +10,10 @@ const client = redis.createClient(
 | 
				
			|||||||
			prefix: config.redis.prefix,
 | 
								prefix: config.redis.prefix,
 | 
				
			||||||
			db: config.redis.db || 0
 | 
								db: config.redis.db || 0
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
);
 | 
						);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
client.subscribe(config.host);
 | 
					export const subsdcriber = createConnection();
 | 
				
			||||||
 | 
					subsdcriber.subscribe(config.host);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default client;
 | 
					export const redisClient = createConnection();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
import redis from '../db/redis';
 | 
					import { redisClient } from '../db/redis';
 | 
				
			||||||
import { promisify } from 'util';
 | 
					import { promisify } from 'util';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -7,8 +7,8 @@ import { promisify } from 'util';
 | 
				
			|||||||
const retryDelay = 100;
 | 
					const retryDelay = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const lock: (key: string, timeout?: number) => Promise<() => void>
 | 
					const lock: (key: string, timeout?: number) => Promise<() => void>
 | 
				
			||||||
	= redis
 | 
						= redisClient
 | 
				
			||||||
	? promisify(require('redis-lock')(redis, retryDelay))
 | 
						? promisify(require('redis-lock')(redisClient, retryDelay))
 | 
				
			||||||
	: async () => () => { };
 | 
						: async () => () => { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ import * as os from 'os';
 | 
				
			|||||||
import * as si from 'systeminformation';
 | 
					import * as si from 'systeminformation';
 | 
				
			||||||
import { getConnection } from 'typeorm';
 | 
					import { getConnection } from 'typeorm';
 | 
				
			||||||
import define from '../../define';
 | 
					import define from '../../define';
 | 
				
			||||||
import redis from '../../../../db/redis';
 | 
					import { redisClient } from '../../../../db/redis';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const meta = {
 | 
					export const meta = {
 | 
				
			||||||
	requireCredential: true as const,
 | 
						requireCredential: true as const,
 | 
				
			||||||
@@ -115,7 +115,7 @@ export default define(meta, async () => {
 | 
				
			|||||||
		os: os.platform(),
 | 
							os: os.platform(),
 | 
				
			||||||
		node: process.version,
 | 
							node: process.version,
 | 
				
			||||||
		psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
 | 
							psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
 | 
				
			||||||
		redis: redis.server_info.redis_version,
 | 
							redis: redisClient.server_info.redis_version,
 | 
				
			||||||
		cpu: {
 | 
							cpu: {
 | 
				
			||||||
			model: os.cpus()[0].model,
 | 
								model: os.cpus()[0].model,
 | 
				
			||||||
			cores: os.cpus().length
 | 
								cores: os.cpus().length
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import define from '../define';
 | 
					import define from '../define';
 | 
				
			||||||
import redis from '../../../db/redis';
 | 
					import { redisClient } from '../../../db/redis';
 | 
				
			||||||
import config from '../../../config';
 | 
					import config from '../../../config';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const meta = {
 | 
					export const meta = {
 | 
				
			||||||
@@ -13,7 +13,7 @@ export const meta = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export default define(meta, (ps, user) => {
 | 
					export default define(meta, (ps, user) => {
 | 
				
			||||||
	return new Promise((res, rej) => {
 | 
						return new Promise((res, rej) => {
 | 
				
			||||||
		redis.pubsub('numsub', config.host, (_, x) => {
 | 
							redisClient.pubsub('numsub', config.host, (_, x) => {
 | 
				
			||||||
			res({
 | 
								res({
 | 
				
			||||||
				count: x[1]
 | 
									count: x[1]
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import * as Limiter from 'ratelimiter';
 | 
					import * as Limiter from 'ratelimiter';
 | 
				
			||||||
import limiterDB from '../../db/redis';
 | 
					import { redisClient } from '../../db/redis';
 | 
				
			||||||
import { IEndpoint } from './endpoints';
 | 
					import { IEndpoint } from './endpoints';
 | 
				
			||||||
import getAcct from '../../misc/acct/render';
 | 
					import getAcct from '../../misc/acct/render';
 | 
				
			||||||
import { User } from '../../models/entities/user';
 | 
					import { User } from '../../models/entities/user';
 | 
				
			||||||
@@ -35,7 +35,7 @@ export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) =>
 | 
				
			|||||||
			id: `${user.id}:${key}:min`,
 | 
								id: `${user.id}:${key}:min`,
 | 
				
			||||||
			duration: limitation.minInterval,
 | 
								duration: limitation.minInterval,
 | 
				
			||||||
			max: 1,
 | 
								max: 1,
 | 
				
			||||||
			db: limiterDB!
 | 
								db: redisClient
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		minIntervalLimiter.get((err, info) => {
 | 
							minIntervalLimiter.get((err, info) => {
 | 
				
			||||||
@@ -63,7 +63,7 @@ export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) =>
 | 
				
			|||||||
			id: `${user.id}:${key}`,
 | 
								id: `${user.id}:${key}`,
 | 
				
			||||||
			duration: limitation.duration,
 | 
								duration: limitation.duration,
 | 
				
			||||||
			max: limitation.max,
 | 
								max: limitation.max,
 | 
				
			||||||
			db: limiterDB!
 | 
								db: redisClient
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		limiter.get((err, info) => {
 | 
							limiter.get((err, info) => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ import { getJson } from '../../../misc/fetch';
 | 
				
			|||||||
import { OAuth2 } from 'oauth';
 | 
					import { OAuth2 } from 'oauth';
 | 
				
			||||||
import config from '../../../config';
 | 
					import config from '../../../config';
 | 
				
			||||||
import { publishMainStream } from '../../../services/stream';
 | 
					import { publishMainStream } from '../../../services/stream';
 | 
				
			||||||
import redis from '../../../db/redis';
 | 
					import { redisClient } from '../../../db/redis';
 | 
				
			||||||
import { v4 as uuid } from 'uuid';
 | 
					import { v4 as uuid } from 'uuid';
 | 
				
			||||||
import signin from '../common/signin';
 | 
					import signin from '../common/signin';
 | 
				
			||||||
import { fetchMeta } from '../../../misc/fetch-meta';
 | 
					import { fetchMeta } from '../../../misc/fetch-meta';
 | 
				
			||||||
@@ -96,7 +96,7 @@ router.get('/connect/discord', async ctx => {
 | 
				
			|||||||
		response_type: 'code'
 | 
							response_type: 'code'
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	redis.set(userToken, JSON.stringify(params));
 | 
						redisClient.set(userToken, JSON.stringify(params));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const oauth2 = await getOAuth2();
 | 
						const oauth2 = await getOAuth2();
 | 
				
			||||||
	ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
						ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
				
			||||||
@@ -118,7 +118,7 @@ router.get('/signin/discord', async ctx => {
 | 
				
			|||||||
		httpOnly: true
 | 
							httpOnly: true
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	redis.set(sessid, JSON.stringify(params));
 | 
						redisClient.set(sessid, JSON.stringify(params));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const oauth2 = await getOAuth2();
 | 
						const oauth2 = await getOAuth2();
 | 
				
			||||||
	ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
						ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
				
			||||||
@@ -145,7 +145,7 @@ router.get('/dc/cb', async ctx => {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
							const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
				
			||||||
			redis.get(sessid, async (_, state) => {
 | 
								redisClient.get(sessid, async (_, state) => {
 | 
				
			||||||
				res(JSON.parse(state));
 | 
									res(JSON.parse(state));
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
@@ -216,7 +216,7 @@ router.get('/dc/cb', async ctx => {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
							const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
				
			||||||
			redis.get(userToken, async (_, state) => {
 | 
								redisClient.get(userToken, async (_, state) => {
 | 
				
			||||||
				res(JSON.parse(state));
 | 
									res(JSON.parse(state));
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ import { getJson } from '../../../misc/fetch';
 | 
				
			|||||||
import { OAuth2 } from 'oauth';
 | 
					import { OAuth2 } from 'oauth';
 | 
				
			||||||
import config from '../../../config';
 | 
					import config from '../../../config';
 | 
				
			||||||
import { publishMainStream } from '../../../services/stream';
 | 
					import { publishMainStream } from '../../../services/stream';
 | 
				
			||||||
import redis from '../../../db/redis';
 | 
					import { redisClient } from '../../../db/redis';
 | 
				
			||||||
import { v4 as uuid } from 'uuid';
 | 
					import { v4 as uuid } from 'uuid';
 | 
				
			||||||
import signin from '../common/signin';
 | 
					import signin from '../common/signin';
 | 
				
			||||||
import { fetchMeta } from '../../../misc/fetch-meta';
 | 
					import { fetchMeta } from '../../../misc/fetch-meta';
 | 
				
			||||||
@@ -95,7 +95,7 @@ router.get('/connect/github', async ctx => {
 | 
				
			|||||||
		state: uuid()
 | 
							state: uuid()
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	redis.set(userToken, JSON.stringify(params));
 | 
						redisClient.set(userToken, JSON.stringify(params));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const oauth2 = await getOath2();
 | 
						const oauth2 = await getOath2();
 | 
				
			||||||
	ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
						ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
				
			||||||
@@ -116,7 +116,7 @@ router.get('/signin/github', async ctx => {
 | 
				
			|||||||
		httpOnly: true
 | 
							httpOnly: true
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	redis.set(sessid, JSON.stringify(params));
 | 
						redisClient.set(sessid, JSON.stringify(params));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const oauth2 = await getOath2();
 | 
						const oauth2 = await getOath2();
 | 
				
			||||||
	ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
						ctx.redirect(oauth2!.getAuthorizeUrl(params));
 | 
				
			||||||
@@ -143,7 +143,7 @@ router.get('/gh/cb', async ctx => {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
							const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
				
			||||||
			redis.get(sessid, async (_, state) => {
 | 
								redisClient.get(sessid, async (_, state) => {
 | 
				
			||||||
				res(JSON.parse(state));
 | 
									res(JSON.parse(state));
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
@@ -194,7 +194,7 @@ router.get('/gh/cb', async ctx => {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
							const { redirect_uri, state } = await new Promise<any>((res, rej) => {
 | 
				
			||||||
			redis.get(userToken, async (_, state) => {
 | 
								redisClient.get(userToken, async (_, state) => {
 | 
				
			||||||
				res(JSON.parse(state));
 | 
									res(JSON.parse(state));
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ import * as Koa from 'koa';
 | 
				
			|||||||
import * as Router from '@koa/router';
 | 
					import * as Router from '@koa/router';
 | 
				
			||||||
import { v4 as uuid } from 'uuid';
 | 
					import { v4 as uuid } from 'uuid';
 | 
				
			||||||
import autwh from 'autwh';
 | 
					import autwh from 'autwh';
 | 
				
			||||||
import redis from '../../../db/redis';
 | 
					import { redisClient } from '../../../db/redis';
 | 
				
			||||||
import { publishMainStream } from '../../../services/stream';
 | 
					import { publishMainStream } from '../../../services/stream';
 | 
				
			||||||
import config from '../../../config';
 | 
					import config from '../../../config';
 | 
				
			||||||
import signin from '../common/signin';
 | 
					import signin from '../common/signin';
 | 
				
			||||||
@@ -89,7 +89,7 @@ router.get('/connect/twitter', async ctx => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	const twAuth = await getTwAuth();
 | 
						const twAuth = await getTwAuth();
 | 
				
			||||||
	const twCtx = await twAuth!.begin();
 | 
						const twCtx = await twAuth!.begin();
 | 
				
			||||||
	redis.set(userToken, JSON.stringify(twCtx));
 | 
						redisClient.set(userToken, JSON.stringify(twCtx));
 | 
				
			||||||
	ctx.redirect(twCtx.url);
 | 
						ctx.redirect(twCtx.url);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -99,7 +99,7 @@ router.get('/signin/twitter', async ctx => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	const sessid = uuid();
 | 
						const sessid = uuid();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	redis.set(sessid, JSON.stringify(twCtx));
 | 
						redisClient.set(sessid, JSON.stringify(twCtx));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.cookies.set('signin_with_twitter_sid', sessid, {
 | 
						ctx.cookies.set('signin_with_twitter_sid', sessid, {
 | 
				
			||||||
		path: '/',
 | 
							path: '/',
 | 
				
			||||||
@@ -124,7 +124,7 @@ router.get('/tw/cb', async ctx => {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const get = new Promise<any>((res, rej) => {
 | 
							const get = new Promise<any>((res, rej) => {
 | 
				
			||||||
			redis.get(sessid, async (_, twCtx) => {
 | 
								redisClient.get(sessid, async (_, twCtx) => {
 | 
				
			||||||
				res(twCtx);
 | 
									res(twCtx);
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
@@ -153,7 +153,7 @@ router.get('/tw/cb', async ctx => {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const get = new Promise<any>((res, rej) => {
 | 
							const get = new Promise<any>((res, rej) => {
 | 
				
			||||||
			redis.get(userToken, async (_, twCtx) => {
 | 
								redisClient.get(userToken, async (_, twCtx) => {
 | 
				
			||||||
				res(twCtx);
 | 
									res(twCtx);
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ import MainStreamConnection from './stream';
 | 
				
			|||||||
import { ParsedUrlQuery } from 'querystring';
 | 
					import { ParsedUrlQuery } from 'querystring';
 | 
				
			||||||
import authenticate from './authenticate';
 | 
					import authenticate from './authenticate';
 | 
				
			||||||
import { EventEmitter } from 'events';
 | 
					import { EventEmitter } from 'events';
 | 
				
			||||||
import redisClient from '../../db/redis';
 | 
					import { subsdcriber as redisClient } from '../../db/redis';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = (server: http.Server) => {
 | 
					module.exports = (server: http.Server) => {
 | 
				
			||||||
	// Init websocket server
 | 
						// Init websocket server
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips } from '../.
 | 
				
			|||||||
import parseAcct from '../../misc/acct/parse';
 | 
					import parseAcct from '../../misc/acct/parse';
 | 
				
			||||||
import { getNoteSummary } from '../../misc/get-note-summary';
 | 
					import { getNoteSummary } from '../../misc/get-note-summary';
 | 
				
			||||||
import { getConnection } from 'typeorm';
 | 
					import { getConnection } from 'typeorm';
 | 
				
			||||||
import redis from '../../db/redis';
 | 
					import { redisClient } from '../../db/redis';
 | 
				
			||||||
import locales = require('../../../locales');
 | 
					import locales = require('../../../locales');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const markdown = MarkdownIt({
 | 
					const markdown = MarkdownIt({
 | 
				
			||||||
@@ -379,7 +379,7 @@ router.get('/info', async ctx => {
 | 
				
			|||||||
		os: os.platform(),
 | 
							os: os.platform(),
 | 
				
			||||||
		node: process.version,
 | 
							node: process.version,
 | 
				
			||||||
		psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
 | 
							psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
 | 
				
			||||||
		redis: redis.server_info.redis_version,
 | 
							redis: redisClient.server_info.redis_version,
 | 
				
			||||||
		cpu: {
 | 
							cpu: {
 | 
				
			||||||
			model: os.cpus()[0].model,
 | 
								model: os.cpus()[0].model,
 | 
				
			||||||
			cores: os.cpus().length
 | 
								cores: os.cpus().length
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user