X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=server%2Flib%2Fjobs%2Factivitypub-http-job-scheduler%2Factivitypub-http-job-scheduler.ts;h=88885cf9723cfa3d196cfb3f5a6a22da4ac02ffa;hb=e12a009254de33bcdbd8334992980fa029c3e10d;hp=95a5d3ff201a6019c807011a90c10dc0e44a0679;hpb=50d6de9c286abcb34ff4234d56d9cbb803db7665;p=oweals%2Fpeertube.git diff --git a/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-job-scheduler.ts b/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-job-scheduler.ts index 95a5d3ff2..88885cf97 100644 --- a/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-job-scheduler.ts +++ b/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-job-scheduler.ts @@ -1,5 +1,5 @@ import { JobCategory } from '../../../../shared' -import { buildSignedActivity, logger } from '../../../helpers' +import { buildSignedActivity, getServerActor, logger } from '../../../helpers' import { ACTIVITY_PUB } from '../../../initializers' import { ActorModel } from '../../../models/activitypub/actor' import { JobHandler, JobScheduler } from '../job-scheduler' @@ -46,16 +46,36 @@ async function computeBody (payload: ActivityPubHttpPayload) { if (payload.signatureActorId) { const actorSignature = await ActorModel.load(payload.signatureActorId) - if (!actorSignature) throw new Error('Unknown signature account id.') + if (!actorSignature) throw new Error('Unknown signature actor id.') body = await buildSignedActivity(actorSignature, payload.body) } return body } +async function buildSignedRequestOptions (payload: ActivityPubHttpPayload) { + let actor: ActorModel + if (payload.signatureActorId) { + actor = await ActorModel.load(payload.signatureActorId) + if (!actor) throw new Error('Unknown signature actor id.') + } else { + // We need to sign the request, so use the server + actor = await getServerActor() + } + + const keyId = actor.getWebfingerUrl() + return { + algorithm: 'rsa-sha256', + authorizationHeaderName: 'Signature', + keyId, + key: actor.privateKey + } +} + export { ActivityPubHttpPayload, activitypubHttpJobScheduler, maybeRetryRequestLater, - computeBody + computeBody, + buildSignedRequestOptions }