summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-13 19:19:32 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-13 19:19:32 +0900
commite369031a28a7aae390d17d4d9f075c6f0df7fe55 (patch)
tree4e0410685973c47b9c311f8a3ebf212310c9b701
parentFix bug (diff)
downloadsharkey-e369031a28a7aae390d17d4d9f075c6f0df7fe55.tar.gz
sharkey-e369031a28a7aae390d17d4d9f075c6f0df7fe55.tar.bz2
sharkey-e369031a28a7aae390d17d4d9f075c6f0df7fe55.zip
Redis必須に
-rw-r--r--.config/example.yml8
-rw-r--r--CHANGELOG.md3
-rw-r--r--docs/setup.en.md17
-rw-r--r--docs/setup.fr.md15
-rw-r--r--docs/setup.ja.md23
-rw-r--r--src/db/redis.ts4
-rw-r--r--src/server/api/limiter.ts6
-rw-r--r--src/server/api/service/discord.ts10
-rw-r--r--src/server/api/service/github.ts10
-rw-r--r--src/server/api/service/twitter.ts10
-rw-r--r--src/server/api/streaming.ts31
-rw-r--r--src/services/stream.ts22
12 files changed, 48 insertions, 111 deletions
diff --git a/.config/example.yml b/.config/example.yml
index 10239f1a76..24985fd280 100644
--- a/.config/example.yml
+++ b/.config/example.yml
@@ -65,10 +65,10 @@ db:
# ┌─────────────────────┐
#───┘ Redis configuration └─────────────────────────────────────
-#redis:
-# host: localhost
-# port: 6379
-# pass: example-pass
+redis:
+ host: localhost
+ port: 6379
+ #pass: example-pass
# ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3149777034..a17e89ff7e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,7 +7,8 @@ If you encounter any problems with updating, please try the following:
11.0.0
----------
-* データベースがMongoDBからPostgreSQLに変更されました
+* **データベースがMongoDBからPostgreSQLに変更されました**
+* **Redisが必須に**
* アカウントを完全に削除できるように
* ミュート/ブロック時にそのユーザーの投稿のウォッチをすべて解除するように
* フォロー申請数が実際より1すくなくなる問題を修正
diff --git a/docs/setup.en.md b/docs/setup.en.md
index 2e1706de35..45e3e2c68b 100644
--- a/docs/setup.en.md
+++ b/docs/setup.en.md
@@ -24,18 +24,13 @@ Please install and setup these softwares:
#### Dependencies :package:
* **[Node.js](https://nodejs.org/en/)** >= 11.7.0
* **[PostgreSQL](https://www.postgresql.org/)** >= 10
+* **[Redis](https://redis.io/)**
##### Optional
-* [Redis](https://redis.io/)
- * Redis is optional, but we strongly recommended to install it
* [Elasticsearch](https://www.elastic.co/) - required to enable the search feature
* [FFmpeg](https://www.ffmpeg.org/)
-*3.* Setup PostgreSQL
-----------------------------------------------------------------
-:)
-
-*4.* Install Misskey
+*3.* Install Misskey
----------------------------------------------------------------
1. `su - misskey` Connect to misskey user.
2. `git clone -b master git://github.com/syuilo/misskey.git` Clone the misskey repo from master branch.
@@ -43,12 +38,12 @@ Please install and setup these softwares:
4. `git checkout $(git tag -l | grep -Ev -- '-(rc|alpha)\.[0-9]+$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
5. `npm install` Install misskey dependencies.
-*5.* Configure Misskey
+*4.* Configure Misskey
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
2. Edit `default.yml`
-*6.* Build Misskey
+*5.* Build Misskey
----------------------------------------------------------------
Build misskey with the following:
@@ -64,13 +59,13 @@ If you're still encountering errors about some modules, use node-gyp:
3. `node-gyp build`
4. `NODE_ENV=production npm run build`
-*7.* Init DB
+*6.* Init DB
----------------------------------------------------------------
``` shell
npm run init
```
-*8.* That is it.
+*7.* That is it.
----------------------------------------------------------------
Well done! Now, you have an environment that run to Misskey.
diff --git a/docs/setup.fr.md b/docs/setup.fr.md
index 2f8694b9da..e6d36aeff8 100644
--- a/docs/setup.fr.md
+++ b/docs/setup.fr.md
@@ -24,18 +24,13 @@ Installez les paquets suivants :
#### Dépendences :package:
* **[Node.js](https://nodejs.org/en/)** >= 11.7.0
* **[PostgreSQL](https://www.postgresql.org/)** >= 10
+* **[Redis](https://redis.io/)**
##### Optionnels
-* [Redis](https://redis.io/)
- * Redis est optionnel mais nous vous recommandons vivement de l'installer
* [Elasticsearch](https://www.elastic.co/) - requis pour pouvoir activer la fonctionnalité de recherche
* [FFmpeg](https://www.ffmpeg.org/)
-*3.* Paramètrage de PostgreSQL
-----------------------------------------------------------------
-:)
-
-*4.* Installation de Misskey
+*3.* Installation de Misskey
----------------------------------------------------------------
1. `su - misskey` Basculez vers l'utilisateur misskey.
2. `git clone -b master git://github.com/syuilo/misskey.git` Clonez la branche master du dépôt misskey.
@@ -43,12 +38,12 @@ Installez les paquets suivants :
4. `git checkout $(git tag -l | grep -Ev -- '-(rc|alpha)\.[0-9]+$' | sort -V | tail -n 1)` Checkout sur le tag de la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
5. `npm install` Installez les dépendances de misskey.
-*5.* Création du fichier de configuration
+*4.* Création du fichier de configuration
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le`default.yml`.
2. Editez le fichier `default.yml`
-*6.* Construction de Misskey
+*5.* Construction de Misskey
----------------------------------------------------------------
Construisez Misskey comme ceci :
@@ -64,7 +59,7 @@ Si vous rencontrez des erreurs concernant certains modules, utilisez node-gyp:
3. `node-gyp build`
4. `NODE_ENV=production npm run build`
-*7.* C'est tout.
+*6.* C'est tout.
----------------------------------------------------------------
Excellent ! Maintenant, vous avez un environnement prêt pour lancer Misskey
diff --git a/docs/setup.ja.md b/docs/setup.ja.md
index f636a74181..1b1730b69e 100644
--- a/docs/setup.ja.md
+++ b/docs/setup.ja.md
@@ -24,25 +24,14 @@ adduser --disabled-password --disabled-login misskey
#### 依存関係 :package:
* **[Node.js](https://nodejs.org/en/)** (11.7.0以上)
* **[PostgreSQL](https://www.postgresql.org/)** (10以上)
+* **[Redis](https://redis.io/)**
##### オプション
-* [Redis](https://redis.io/)
- * Redisはオプションですが、インストールすることを強く推奨します。
- * インストールしなくていいのは、あなたのインスタンスが自分専用のときだけとお考えください。
- * 具体的には、Redisをインストールしないと、次の事が出来なくなります:
- * Misskeyプロセスを複数起動しての負荷分散
- * レートリミット
- * ジョブキュー
- * Twitter連携
* [Elasticsearch](https://www.elastic.co/)
* 検索機能を有効にするためにはインストールが必要です。
* [FFmpeg](https://www.ffmpeg.org/)
-*3.* PostgreSQLの設定
-----------------------------------------------------------------
-:)
-
-*4.* Misskeyのインストール
+*3.* Misskeyのインストール
----------------------------------------------------------------
1. `su - misskey` misskeyユーザーを使用
2. `git clone -b master git://github.com/syuilo/misskey.git` masterブランチからMisskeyレポジトリをクローン
@@ -50,12 +39,12 @@ adduser --disabled-password --disabled-login misskey
4. `git checkout $(git tag -l | grep -Ev -- '-(rc|alpha)\.[0-9]+$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
5. `npm install` Misskeyの依存パッケージをインストール
-*5.* 設定ファイルを作成する
+*4.* 設定ファイルを作成する
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
2. `default.yml` を編集する。
-*6.* Misskeyのビルド
+*5.* Misskeyのビルド
----------------------------------------------------------------
次のコマンドでMisskeyをビルドしてください:
@@ -70,13 +59,13 @@ Debianをお使いであれば、`build-essential`パッケージをインスト
3. `node-gyp build`
4. `NODE_ENV=production npm run build`
-*7.* データベースを初期化
+*6.* データベースを初期化
----------------------------------------------------------------
``` shell
npm run init
```
-*8.* 以上です!
+*7.* 以上です!
----------------------------------------------------------------
お疲れ様でした。これでMisskeyを動かす準備は整いました。
diff --git a/src/db/redis.ts b/src/db/redis.ts
index cebf2a10af..6518cb0059 100644
--- a/src/db/redis.ts
+++ b/src/db/redis.ts
@@ -1,7 +1,7 @@
import * as redis from 'redis';
import config from '../config';
-export default config.redis ? redis.createClient(
+export default redis.createClient(
config.redis.port,
config.redis.host,
{
@@ -9,4 +9,4 @@ export default config.redis ? redis.createClient(
prefix: config.redis.prefix,
db: config.redis.db || 0
}
-) : null;
+);
diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts
index 8a6c94458e..48d12d3cc6 100644
--- a/src/server/api/limiter.ts
+++ b/src/server/api/limiter.ts
@@ -8,12 +8,6 @@ import Logger from '../../services/logger';
const logger = new Logger('limiter');
export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) => {
- // Redisがインストールされてない場合は常に許可
- if (limiterDB == null) {
- ok();
- return;
- }
-
const limitation = endpoint.meta.limit!;
const key = limitation.hasOwnProperty('key')
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts
index b2561dee61..d8a979b5b2 100644
--- a/src/server/api/service/discord.ts
+++ b/src/server/api/service/discord.ts
@@ -83,8 +83,6 @@ async function getOAuth2() {
}
router.get('/connect/discord', async ctx => {
- if (redis == null) return;
-
if (!compareOrigin(ctx)) {
ctx.throw(400, 'invalid origin');
return;
@@ -110,8 +108,6 @@ router.get('/connect/discord', async ctx => {
});
router.get('/signin/discord', async ctx => {
- if (redis == null) return;
-
const sessid = uuid();
const params = {
@@ -138,8 +134,6 @@ router.get('/signin/discord', async ctx => {
});
router.get('/dc/cb', async ctx => {
- if (redis == null) return;
-
const userToken = getUserToken(ctx);
const oauth2 = await getOAuth2();
@@ -160,7 +154,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis!.get(sessid, async (_, state) => {
+ redis.get(sessid, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -241,7 +235,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis!.get(userToken, async (_, state) => {
+ redis.get(userToken, async (_, state) => {
res(JSON.parse(state));
});
});
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index 4878d8c529..a4d274cc62 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -80,8 +80,6 @@ async function getOath2() {
}
router.get('/connect/github', async ctx => {
- if (redis == null) return;
-
if (!compareOrigin(ctx)) {
ctx.throw(400, 'invalid origin');
return;
@@ -106,8 +104,6 @@ router.get('/connect/github', async ctx => {
});
router.get('/signin/github', async ctx => {
- if (redis == null) return;
-
const sessid = uuid();
const params = {
@@ -133,8 +129,6 @@ router.get('/signin/github', async ctx => {
});
router.get('/gh/cb', async ctx => {
- if (redis == null) return;
-
const userToken = getUserToken(ctx);
const oauth2 = await getOath2();
@@ -155,7 +149,7 @@ router.get('/gh/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis!.get(sessid, async (_, state) => {
+ redis.get(sessid, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -222,7 +216,7 @@ router.get('/gh/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis!.get(userToken, async (_, state) => {
+ redis.get(userToken, async (_, state) => {
res(JSON.parse(state));
});
});
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index b35ee8c479..39fdfd8654 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -79,8 +79,6 @@ async function getTwAuth() {
}
router.get('/connect/twitter', async ctx => {
- if (redis == null) return;
-
if (!compareOrigin(ctx)) {
ctx.throw(400, 'invalid origin');
return;
@@ -99,8 +97,6 @@ router.get('/connect/twitter', async ctx => {
});
router.get('/signin/twitter', async ctx => {
- if (redis == null) return;
-
const twAuth = await getTwAuth();
const twCtx = await twAuth!.begin();
@@ -122,8 +118,6 @@ router.get('/signin/twitter', async ctx => {
});
router.get('/tw/cb', async ctx => {
- if (redis == null) return;
-
const userToken = getUserToken(ctx);
const twAuth = await getTwAuth();
@@ -137,7 +131,7 @@ router.get('/tw/cb', async ctx => {
}
const get = new Promise<any>((res, rej) => {
- redis!.get(sessid, async (_, twCtx) => {
+ redis.get(sessid, async (_, twCtx) => {
res(twCtx);
});
});
@@ -170,7 +164,7 @@ router.get('/tw/cb', async ctx => {
}
const get = new Promise<any>((res, rej) => {
- redis!.get(userToken, async (_, twCtx) => {
+ redis.get(userToken, async (_, twCtx) => {
res(twCtx);
});
});
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index ab66f2b6d9..902c62ef98 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -1,7 +1,6 @@
import * as http from 'http';
import * as websocket from 'websocket';
import * as redis from 'redis';
-import Xev from 'xev';
import MainStreamConnection from './stream';
import { ParsedUrlQuery } from 'querystring';
@@ -23,28 +22,24 @@ module.exports = (server: http.Server) => {
let ev: EventEmitter;
- if (config.redis) {
- // Connect to Redis
- const subscriber = redis.createClient(
- config.redis.port, config.redis.host);
+ // Connect to Redis
+ const subscriber = redis.createClient(
+ config.redis.port, config.redis.host);
- subscriber.subscribe('misskey');
+ subscriber.subscribe('misskey');
- ev = new EventEmitter();
+ ev = new EventEmitter();
- subscriber.on('message', async (_, data) => {
- const obj = JSON.parse(data);
+ subscriber.on('message', async (_, data) => {
+ const obj = JSON.parse(data);
- ev.emit(obj.channel, obj.message);
- });
+ ev.emit(obj.channel, obj.message);
+ });
- connection.once('close', () => {
- subscriber.unsubscribe();
- subscriber.quit();
- });
- } else {
- ev = new Xev();
- }
+ connection.once('close', () => {
+ subscriber.unsubscribe();
+ subscriber.quit();
+ });
const main = new MainStreamConnection(connection, ev, user, app);
diff --git a/src/services/stream.ts b/src/services/stream.ts
index c52af48b59..28cb2057e2 100644
--- a/src/services/stream.ts
+++ b/src/services/stream.ts
@@ -1,33 +1,19 @@
import redis from '../db/redis';
-import Xev from 'xev';
import { User } from '../models/entities/user';
import { Note } from '../models/entities/note';
import { UserList } from '../models/entities/user-list';
import { ReversiGame } from '../models/entities/games/reversi/game';
class Publisher {
- private ev: Xev | null = null;
-
- constructor() {
- // Redisがインストールされてないときはプロセス間通信を使う
- if (redis == null) {
- this.ev = new Xev();
- }
- }
-
private publish = (channel: string, type: string | null, value?: any): void => {
const message = type == null ? value : value == null ?
{ type: type, body: null } :
{ type: type, body: value };
- if (this.ev) {
- this.ev.emit(channel, message);
- } else {
- redis!.publish('misskey', JSON.stringify({
- channel: channel,
- message: message
- }));
- }
+ redis.publish('misskey', JSON.stringify({
+ channel: channel,
+ message: message
+ }));
}
public publishMainStream = (userId: User['id'], type: string, value?: any): void => {