diff options
| author | dakkar <dakkar@thenautilus.net> | 2024-11-23 17:51:09 +0000 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2024-11-29 11:39:17 +0000 |
| commit | 387dc4bb4b57b5071de3f2180c591c42d3ddd5b3 (patch) | |
| tree | a28d75fa34d8178073ee43e75ee3803682f71148 /packages/backend/src/core/UtilityService.ts | |
| parent | merge: Clear jobs from blocked domains (resolves #773) (!720) (diff) | |
| download | sharkey-387dc4bb4b57b5071de3f2180c591c42d3ddd5b3.tar.gz sharkey-387dc4bb4b57b5071de3f2180c591c42d3ddd5b3.tar.bz2 sharkey-387dc4bb4b57b5071de3f2180c591c42d3ddd5b3.zip | |
UNTESTED maybe laxer match on authority - fixes #815
Diffstat (limited to 'packages/backend/src/core/UtilityService.ts')
| -rw-r--r-- | packages/backend/src/core/UtilityService.ts | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/backend/src/core/UtilityService.ts b/packages/backend/src/core/UtilityService.ts index 4c6d539e16..c84e7f212b 100644 --- a/packages/backend/src/core/UtilityService.ts +++ b/packages/backend/src/core/UtilityService.ts @@ -7,6 +7,7 @@ import { URL } from 'node:url'; import { toASCII } from 'punycode'; import { Inject, Injectable } from '@nestjs/common'; import RE2 from 're2'; +import psl from 'psl'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { bindThis } from '@/decorators.js'; @@ -122,6 +123,14 @@ export class UtilityService { return host; } + @bindThis + public punyHostPSLDomain(url: string): string { + const urlObj = new URL(url); + const domain = psl.get(urlObj.hostname) ?? urlObj.hostname; + const host = `${this.toPuny(domain)}${urlObj.port.length > 0 ? ':' + urlObj.port : ''}`; + return host; + } + public isFederationAllowedHost(host: string): boolean { if (this.meta.federation === 'none') return false; if (this.meta.federation === 'specified' && !this.meta.federationHosts.some(x => `.${host.toLowerCase()}`.endsWith(`.${x}`))) return false; |