URL parsing check to prevent delivery crashes

This commit is contained in:
Natty 2023-08-16 01:18:42 +02:00
parent a1d47e709a
commit 6ee43cbcec
Signed by: natty
GPG Key ID: BF6CB659ADEE60EC
1 changed files with 18 additions and 6 deletions

View File

@ -1,8 +1,9 @@
import {IsNull, Not} from "typeorm"; import {IsNull, Not} from "typeorm";
import { Users, Followings } from "@/models/index.js"; import {Followings, Users} from "@/models/index.js";
import type {ILocalUser, IRemoteUser, User} from "@/models/entities/user.js"; import type {ILocalUser, IRemoteUser, User} from "@/models/entities/user.js";
import {deliver} from "@/queue/index.js"; import {deliver} from "@/queue/index.js";
import {skippedInstances} from "@/misc/skipped-instances.js"; import {skippedInstances} from "@/misc/skipped-instances.js";
import {apLogger} from "@/remote/activitypub/logger";
//#region types //#region types
interface IRecipe { interface IRecipe {
@ -132,7 +133,18 @@ export default class DeliverManager {
// deliver // deliver
for (const inbox of inboxes) { for (const inbox of inboxes) {
// skip instances as indicated // skip instances as indicated
if (instancesToSkip.includes(new URL(inbox).host)) continue;
try {
const host = new URL(inbox).host;
if (instancesToSkip.includes(host))
continue;
} catch (e) {
// skip invalid URLs
apLogger.error(`Invalid inbox URL: ${inbox}`);
continue;
}
deliver(this.actor, this.activity, inbox); deliver(this.actor, this.activity, inbox);
} }