diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-07-04 12:16:18 -0400 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2025-07-27 17:57:26 +0100 |
| commit | 982223ad38e428ca4e2269fff56bccd332ca0222 (patch) | |
| tree | 681f25f5db37ca1177c3214a29956c8d1c2658fc /packages/backend/src/core/HttpRequestService.ts | |
| parent | merge: disable outgoing mastodon quotes *FOR STABLE* (!1169) (diff) | |
| download | sharkey-982223ad38e428ca4e2269fff56bccd332ca0222.tar.gz sharkey-982223ad38e428ca4e2269fff56bccd332ca0222.tar.bz2 sharkey-982223ad38e428ca4e2269fff56bccd332ca0222.zip | |
validate all URLs before fetch
Diffstat (limited to 'packages/backend/src/core/HttpRequestService.ts')
| -rw-r--r-- | packages/backend/src/core/HttpRequestService.ts | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/packages/backend/src/core/HttpRequestService.ts b/packages/backend/src/core/HttpRequestService.ts index 151097095d..046b0dc244 100644 --- a/packages/backend/src/core/HttpRequestService.ts +++ b/packages/backend/src/core/HttpRequestService.ts @@ -17,7 +17,8 @@ import { StatusError } from '@/misc/status-error.js'; import { bindThis } from '@/decorators.js'; import { validateContentTypeSetAsActivityPub } from '@/core/activitypub/misc/validator.js'; import type { IObject, IObjectWithId } from '@/core/activitypub/type.js'; -import { ApUtilityService } from './activitypub/ApUtilityService.js'; +import { UtilityService } from '@/core/UtilityService.js'; +import { ApUtilityService } from '@/core/activitypub/ApUtilityService.js'; import type { Response } from 'node-fetch'; import type { URL } from 'node:url'; import type { Socket } from 'node:net'; @@ -132,6 +133,7 @@ export class HttpRequestService { @Inject(DI.config) private config: Config, private readonly apUtilityService: ApUtilityService, + private readonly utilityService: UtilityService, ) { const cache = new CacheableLookup({ maxTtl: 3600, // 1hours @@ -236,8 +238,6 @@ export class HttpRequestService { @bindThis public async getActivityJson(url: string, isLocalAddressAllowed = false, allowAnonymous = false): Promise<IObjectWithId> { - this.apUtilityService.assertApUrl(url); - const res = await this.send(url, { method: 'GET', headers: { @@ -311,6 +311,8 @@ export class HttpRequestService { ): Promise<Response> { const timeout = args.timeout ?? 5000; + this.utilityService.assertUrl(url); + const controller = new AbortController(); setTimeout(() => { controller.abort(); |