From 52c96e96cf53245b60617701b6c215cd776ae84b Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Sat, 3 Dec 2022 06:55:50 -0500 Subject: [PATCH] server: remove wildcard blocking and instead block subdomains Changelog: Changed --- .../backend/src/misc/should-block-instance.ts | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/backend/src/misc/should-block-instance.ts b/packages/backend/src/misc/should-block-instance.ts index 00c18467f..7396983d7 100644 --- a/packages/backend/src/misc/should-block-instance.ts +++ b/packages/backend/src/misc/should-block-instance.ts @@ -2,20 +2,6 @@ import { fetchMeta } from '@/misc/fetch-meta.js'; import { Instance } from '@/models/entities/instance.js'; import { Meta } from '@/models/entities/meta.js'; -/** - * Returns whether a given host matches a wildcard pattern. - * @param host punycoded instance host - * @param pattern wildcard pattern containing a punycoded instance host - * @returns whether the post matches the pattern - */ -function matchHost(host: Instance['host'], pattern: string): boolean { - // Escape all of the regex special characters. Pattern from: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - const escape = (str: string): string => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const re = new RegExp('^' + pattern.split('*').map(escape).join('.*') + '$'); - - return re.test(host); -} /** * Returns whether a specific host (punycoded) should be blocked. * @@ -24,7 +10,7 @@ function matchHost(host: Instance['host'], pattern: string): boolean { * @returns whether the given host should be blocked */ -export async function shouldBlockInstance(host: string, meta: Promise = fetchMeta()): Promise { +export async function shouldBlockInstance(host: Instance['host'], meta: Promise = fetchMeta()): Promise { const { blockedHosts } = await meta; - return blockedHosts.some(blockedHost => matchHost(host, blockedHost)); + return blockedHosts.some(blockedHost => host === blockedHost || host.endsWith('.' + blockedHost)); }