From fadf619ad61a016c1c7fc53de5a8f398a4f77519 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 14 Dec 2017 11:18:49 +0100 Subject: Save --- .../custom-validators/activitypub/account.ts | 92 ---------------------- .../custom-validators/activitypub/activity.ts | 2 +- .../helpers/custom-validators/activitypub/actor.ts | 91 +++++++++++++++++++++ .../helpers/custom-validators/activitypub/index.ts | 2 +- .../helpers/custom-validators/activitypub/undo.ts | 2 +- 5 files changed, 94 insertions(+), 95 deletions(-) delete mode 100644 server/helpers/custom-validators/activitypub/account.ts create mode 100644 server/helpers/custom-validators/activitypub/actor.ts (limited to 'server/helpers/custom-validators') diff --git a/server/helpers/custom-validators/activitypub/account.ts b/server/helpers/custom-validators/activitypub/account.ts deleted file mode 100644 index 10bf81e8a..000000000 --- a/server/helpers/custom-validators/activitypub/account.ts +++ /dev/null @@ -1,92 +0,0 @@ -import * as validator from 'validator' -import { CONSTRAINTS_FIELDS } from '../../../initializers' -import { isAccountNameValid } from '../accounts' -import { exists, isUUIDValid } from '../misc' -import { isActivityPubUrlValid, isBaseActivityValid } from './misc' - -function isAccountEndpointsObjectValid (endpointObject: any) { - return isActivityPubUrlValid(endpointObject.sharedInbox) -} - -function isAccountPublicKeyObjectValid (publicKeyObject: any) { - return isActivityPubUrlValid(publicKeyObject.id) && - isActivityPubUrlValid(publicKeyObject.owner) && - isAccountPublicKeyValid(publicKeyObject.publicKeyPem) -} - -function isAccountTypeValid (type: string) { - return type === 'Person' || type === 'Application' -} - -function isAccountPublicKeyValid (publicKey: string) { - return exists(publicKey) && - typeof publicKey === 'string' && - publicKey.startsWith('-----BEGIN PUBLIC KEY-----') && - publicKey.endsWith('-----END PUBLIC KEY-----') && - validator.isLength(publicKey, CONSTRAINTS_FIELDS.ACCOUNTS.PUBLIC_KEY) -} - -function isAccountPreferredUsernameValid (preferredUsername: string) { - return isAccountNameValid(preferredUsername) -} - -function isAccountPrivateKeyValid (privateKey: string) { - return exists(privateKey) && - typeof privateKey === 'string' && - privateKey.startsWith('-----BEGIN RSA PRIVATE KEY-----') && - privateKey.endsWith('-----END RSA PRIVATE KEY-----') && - validator.isLength(privateKey, CONSTRAINTS_FIELDS.ACCOUNTS.PRIVATE_KEY) -} - -function isRemoteAccountValid (remoteAccount: any) { - return isActivityPubUrlValid(remoteAccount.id) && - isUUIDValid(remoteAccount.uuid) && - isAccountTypeValid(remoteAccount.type) && - isActivityPubUrlValid(remoteAccount.following) && - isActivityPubUrlValid(remoteAccount.followers) && - isActivityPubUrlValid(remoteAccount.inbox) && - isActivityPubUrlValid(remoteAccount.outbox) && - isAccountPreferredUsernameValid(remoteAccount.preferredUsername) && - isActivityPubUrlValid(remoteAccount.url) && - isAccountPublicKeyObjectValid(remoteAccount.publicKey) && - isAccountEndpointsObjectValid(remoteAccount.endpoints) -} - -function isAccountFollowingCountValid (value: string) { - return exists(value) && validator.isInt('' + value, { min: 0 }) -} - -function isAccountFollowersCountValid (value: string) { - return exists(value) && validator.isInt('' + value, { min: 0 }) -} - -function isAccountDeleteActivityValid (activity: any) { - return isBaseActivityValid(activity, 'Delete') -} - -function isAccountFollowActivityValid (activity: any) { - return isBaseActivityValid(activity, 'Follow') && - isActivityPubUrlValid(activity.object) -} - -function isAccountAcceptActivityValid (activity: any) { - return isBaseActivityValid(activity, 'Accept') -} - -// --------------------------------------------------------------------------- - -export { - isAccountEndpointsObjectValid, - isAccountPublicKeyObjectValid, - isAccountTypeValid, - isAccountPublicKeyValid, - isAccountPreferredUsernameValid, - isAccountPrivateKeyValid, - isRemoteAccountValid, - isAccountFollowingCountValid, - isAccountFollowersCountValid, - isAccountNameValid, - isAccountFollowActivityValid, - isAccountAcceptActivityValid, - isAccountDeleteActivityValid -} diff --git a/server/helpers/custom-validators/activitypub/activity.ts b/server/helpers/custom-validators/activitypub/activity.ts index 043e3c55e..ae7732194 100644 --- a/server/helpers/custom-validators/activitypub/activity.ts +++ b/server/helpers/custom-validators/activitypub/activity.ts @@ -1,6 +1,6 @@ import * as validator from 'validator' import { Activity, ActivityType } from '../../../../shared/models/activitypub' -import { isAccountAcceptActivityValid, isAccountDeleteActivityValid, isAccountFollowActivityValid } from './account' +import { isAccountAcceptActivityValid, isAccountDeleteActivityValid, isAccountFollowActivityValid } from './actor' import { isAnnounceActivityValid } from './announce' import { isActivityPubUrlValid } from './misc' import { isDislikeActivityValid, isLikeActivityValid } from './rate' diff --git a/server/helpers/custom-validators/activitypub/actor.ts b/server/helpers/custom-validators/activitypub/actor.ts new file mode 100644 index 000000000..28551c96c --- /dev/null +++ b/server/helpers/custom-validators/activitypub/actor.ts @@ -0,0 +1,91 @@ +import * as validator from 'validator' +import { CONSTRAINTS_FIELDS } from '../../../initializers' +import { isAccountNameValid } from '../accounts' +import { exists, isUUIDValid } from '../misc' +import { isActivityPubUrlValid, isBaseActivityValid } from './misc' + +function isActorEndpointsObjectValid (endpointObject: any) { + return isActivityPubUrlValid(endpointObject.sharedInbox) +} + +function isActorPublicKeyObjectValid (publicKeyObject: any) { + return isActivityPubUrlValid(publicKeyObject.id) && + isActivityPubUrlValid(publicKeyObject.owner) && + isActorPublicKeyValid(publicKeyObject.publicKeyPem) +} + +function isActorTypeValid (type: string) { + return type === 'Person' || type === 'Application' || type === 'Group' +} + +function isActorPublicKeyValid (publicKey: string) { + return exists(publicKey) && + typeof publicKey === 'string' && + publicKey.startsWith('-----BEGIN PUBLIC KEY-----') && + publicKey.endsWith('-----END PUBLIC KEY-----') && + validator.isLength(publicKey, CONSTRAINTS_FIELDS.ACTOR.PUBLIC_KEY) +} + +function isActorPreferredUsernameValid (preferredUsername: string) { + return isAccountNameValid(preferredUsername) +} + +function isActorPrivateKeyValid (privateKey: string) { + return exists(privateKey) && + typeof privateKey === 'string' && + privateKey.startsWith('-----BEGIN RSA PRIVATE KEY-----') && + privateKey.endsWith('-----END RSA PRIVATE KEY-----') && + validator.isLength(privateKey, CONSTRAINTS_FIELDS.ACTOR.PRIVATE_KEY) +} + +function isRemoteActorValid (remoteActor: any) { + return isActivityPubUrlValid(remoteActor.id) && + isUUIDValid(remoteActor.uuid) && + isActorTypeValid(remoteActor.type) && + isActivityPubUrlValid(remoteActor.following) && + isActivityPubUrlValid(remoteActor.followers) && + isActivityPubUrlValid(remoteActor.inbox) && + isActivityPubUrlValid(remoteActor.outbox) && + isActorPreferredUsernameValid(remoteActor.preferredUsername) && + isActivityPubUrlValid(remoteActor.url) && + isActorPublicKeyObjectValid(remoteActor.publicKey) && + isActorEndpointsObjectValid(remoteActor.endpoints) +} + +function isActorFollowingCountValid (value: string) { + return exists(value) && validator.isInt('' + value, { min: 0 }) +} + +function isActorFollowersCountValid (value: string) { + return exists(value) && validator.isInt('' + value, { min: 0 }) +} + +function isActorDeleteActivityValid (activity: any) { + return isBaseActivityValid(activity, 'Delete') +} + +function isActorFollowActivityValid (activity: any) { + return isBaseActivityValid(activity, 'Follow') && + isActivityPubUrlValid(activity.object) +} + +function isActorAcceptActivityValid (activity: any) { + return isBaseActivityValid(activity, 'Accept') +} + +// --------------------------------------------------------------------------- + +export { + isActorEndpointsObjectValid, + isActorPublicKeyObjectValid, + isActorTypeValid, + isActorPublicKeyValid, + isActorPreferredUsernameValid, + isActorPrivateKeyValid, + isRemoteActorValid, + isActorFollowingCountValid, + isActorFollowersCountValid, + isActorFollowActivityValid, + isActorAcceptActivityValid, + isActorDeleteActivityValid +} diff --git a/server/helpers/custom-validators/activitypub/index.ts b/server/helpers/custom-validators/activitypub/index.ts index f8dfae4ff..ba411f1c6 100644 --- a/server/helpers/custom-validators/activitypub/index.ts +++ b/server/helpers/custom-validators/activitypub/index.ts @@ -1,4 +1,4 @@ -export * from './account' +export * from './actor' export * from './activity' export * from './misc' export * from './signature' diff --git a/server/helpers/custom-validators/activitypub/undo.ts b/server/helpers/custom-validators/activitypub/undo.ts index 58043f8a1..d07bbf6b7 100644 --- a/server/helpers/custom-validators/activitypub/undo.ts +++ b/server/helpers/custom-validators/activitypub/undo.ts @@ -1,4 +1,4 @@ -import { isAccountFollowActivityValid } from './account' +import { isAccountFollowActivityValid } from './actor' import { isBaseActivityValid } from './misc' import { isDislikeActivityValid, isLikeActivityValid } from './rate' -- cgit v1.2.3