summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/HttpRequestService.ts
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-07-04 12:16:18 -0400
committerdakkar <dakkar@thenautilus.net>2025-07-27 17:57:26 +0100
commit982223ad38e428ca4e2269fff56bccd332ca0222 (patch)
tree681f25f5db37ca1177c3214a29956c8d1c2658fc /packages/backend/src/core/HttpRequestService.ts
parentmerge: disable outgoing mastodon quotes *FOR STABLE* (!1169) (diff)
downloadsharkey-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.ts8
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();