summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/request.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-02-08 04:26:43 +0900
committerGitHub <noreply@github.com>2019-02-08 04:26:43 +0900
commite6612f610c4b8a04663e95bc23e4b5e7ae255831 (patch)
tree364d1f52b2db506a2315eb65c4276cc8fed3fad4 /src/remote/activitypub/request.ts
parentUpdate CONTRIBUTING.md (diff)
downloadsharkey-e6612f610c4b8a04663e95bc23e4b5e7ae255831.tar.gz
sharkey-e6612f610c4b8a04663e95bc23e4b5e7ae255831.tar.bz2
sharkey-e6612f610c4b8a04663e95bc23e4b5e7ae255831.zip
Implement instance blocking (#4182)
* Implement instance blocking * Add missing text * Delete unnecessary file * Covert Punycode to Unicode
Diffstat (limited to 'src/remote/activitypub/request.ts')
-rw-r--r--src/remote/activitypub/request.ts7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index 7264bef24c..df8eced13d 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -4,11 +4,13 @@ import { URL } from 'url';
import * as crypto from 'crypto';
import { lookup, IRunOptions } from 'lookup-dns-cache';
import * as promiseAny from 'promise-any';
+import { toUnicode } from 'punycode';
import config from '../../config';
import { ILocalUser } from '../../models/user';
import { publishApLogStream } from '../../services/stream';
import { apLogger } from './logger';
+import Instance from '../../models/instance';
export const logger = apLogger.createSubLogger('deliver');
@@ -19,6 +21,11 @@ export default (user: ILocalUser, url: string, object: any) => new Promise(async
const { protocol, host, hostname, port, pathname, search } = new URL(url);
+ // ブロックしてたら中断
+ // TODO: いちいちデータベースにアクセスするのはコスト高そうなのでどっかにキャッシュしておく
+ const instance = await Instance.findOne({ host: toUnicode(host) });
+ if (instance && instance.isBlocked) return;
+
const data = JSON.stringify(object);
const sha256 = crypto.createHash('sha256');