diff --git a/server/lib/activitypub/crawl.ts b/server/lib/activitypub/crawl.ts index ba5b67bee..0ba59b47d 100644 --- a/server/lib/activitypub/crawl.ts +++ b/server/lib/activitypub/crawl.ts @@ -1,8 +1,10 @@ -import { ACTIVITY_PUB, JOB_REQUEST_TIMEOUT } from '../../initializers/constants' +import { ACTIVITY_PUB, JOB_REQUEST_TIMEOUT, WEBSERVER } from '../../initializers/constants' import { doRequest } from '../../helpers/requests' import { logger } from '../../helpers/logger' import * as Bluebird from 'bluebird' import { ActivityPubOrderedCollection } from '../../../shared/models/activitypub' +import { checkUrlsSameHost } from '../../helpers/activitypub' +import { parse } from "url" type HandlerFunction = (items: T[]) => (Promise | Bluebird) type CleanerFunction = (startedDate: Date) => (Promise | Bluebird) @@ -27,6 +29,10 @@ async function crawlCollectionPage (uri: string, handler: HandlerFunction let i = 0 let nextLink = firstBody.first while (nextLink && i < limit) { + // Don't crawl ourselves + const remoteHost = parse(nextLink).host + if (remoteHost === WEBSERVER.HOST) continue + options.uri = nextLink const { body } = await doRequest>(options) diff --git a/server/tests/api/notifications/user-notifications.ts b/server/tests/api/notifications/user-notifications.ts index 3874b0aab..f479e1785 100644 --- a/server/tests/api/notifications/user-notifications.ts +++ b/server/tests/api/notifications/user-notifications.ts @@ -4,24 +4,27 @@ import * as chai from 'chai' import 'mocha' import { addVideoToBlacklist, + cleanupTests, createUser, doubleFollow, flushAndRunMultipleServers, - flushTests, + follow, + getCustomConfig, getMyUserInformation, + getVideoCommentThreads, + getVideoThreadComments, immutableAssign, registerUser, removeVideoFromBlacklist, reportVideoAbuse, + updateCustomConfig, updateMyUser, updateVideo, updateVideoChannel, userLogin, - wait, - getCustomConfig, - updateCustomConfig, getVideoThreadComments, getVideoCommentThreads, follow, cleanupTests + wait } from '../../../../shared/extra-utils' -import { killallServers, ServerInfo, uploadVideo } from '../../../../shared/extra-utils/index' +import { ServerInfo, uploadVideo } from '../../../../shared/extra-utils/index' import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login' import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { getUserNotificationSocket } from '../../../../shared/extra-utils/socket/socket-io' @@ -32,16 +35,17 @@ import { checkNewActorFollow, checkNewBlacklistOnMyVideo, checkNewCommentOnMyVideo, + checkNewInstanceFollower, checkNewVideoAbuseForModerators, - checkVideoAutoBlacklistForModerators, checkNewVideoFromSubscription, checkUserRegistered, + checkVideoAutoBlacklistForModerators, checkVideoIsPublished, getLastNotification, getUserNotifications, + markAsReadAllNotifications, markAsReadNotifications, - updateMyNotificationSettings, - markAsReadAllNotifications, checkNewInstanceFollower + updateMyNotificationSettings } from '../../../../shared/extra-utils/users/user-notifications' import { User, @@ -879,7 +883,7 @@ describe('Test users notifications', function () { }) it('Should send a notification only to admin when there is a new instance follower', async function () { - this.timeout(10000) + this.timeout(20000) await follow(servers[2].url, [ servers[0].url ], servers[2].accessToken)