Fix: AP actor Service のサポートが不完全 (v11) (#4662)
This commit is contained in:
		
							parent
							
								
									ab302df0ae
								
							
						
					
					
						commit
						2a7e3b9c51
					
				|  | @ -13,6 +13,7 @@ import { instanceChart } from '../../services/chart'; | |||
| import { UserPublickey } from '../../models/entities/user-publickey'; | ||||
| import fetchMeta from '../../misc/fetch-meta'; | ||||
| import { toPuny } from '../../misc/convert-host'; | ||||
| import { validActor } from '../../remote/activitypub/type'; | ||||
| 
 | ||||
| const logger = new Logger('inbox'); | ||||
| 
 | ||||
|  | @ -93,7 +94,7 @@ export default async (job: Bull.Job): Promise<void> => { | |||
| 
 | ||||
| 	// Update Person activityの場合は、ここで署名検証/更新処理まで実施して終了
 | ||||
| 	if (activity.type === 'Update') { | ||||
| 		if (activity.object && activity.object.type === 'Person') { | ||||
| 		if (activity.object && validActor.includes(activity.object.type)) { | ||||
| 			if (user == null) { | ||||
| 				logger.warn('Update activity received, but user not registed.'); | ||||
| 			} else if (!httpSignature.verifySignature(signature, key.keyPem)) { | ||||
|  |  | |||
|  | @ -24,6 +24,7 @@ import { UserPublickey } from '../../../models/entities/user-publickey'; | |||
| import { isDuplicateKeyValueError } from '../../../misc/is-duplicate-key-value-error'; | ||||
| import { toPuny } from '../../../misc/convert-host'; | ||||
| import { UserProfile } from '../../../models/entities/user-profile'; | ||||
| import { validActor } from '../../../remote/activitypub/type'; | ||||
| const logger = apLogger; | ||||
| 
 | ||||
| /** | ||||
|  | @ -38,7 +39,7 @@ function validatePerson(x: any, uri: string) { | |||
| 		return new Error('invalid person: object is null'); | ||||
| 	} | ||||
| 
 | ||||
| 	if (x.type != 'Person' && x.type != 'Service') { | ||||
| 	if (!validActor.includes(x.type)) { | ||||
| 		return new Error(`invalid person: object is not a person or service '${x.type}'`); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -65,6 +65,8 @@ interface IQuestionChoice { | |||
| 	_misskey_votes?: number; | ||||
| } | ||||
| 
 | ||||
| export const validActor = ['Person', 'Service']; | ||||
| 
 | ||||
| export interface IPerson extends IObject { | ||||
| 	type: 'Person'; | ||||
| 	name: string; | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ import { Users, Notes } from '../../../../models'; | |||
| import { Note } from '../../../../models/entities/note'; | ||||
| import { User } from '../../../../models/entities/user'; | ||||
| import fetchMeta from '../../../../misc/fetch-meta'; | ||||
| import { validActor } from '../../../../remote/activitypub/type'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['federation'], | ||||
|  | @ -110,7 +111,7 @@ async function fetchAny(uri: string) { | |||
| 	} | ||||
| 
 | ||||
| 	// それでもみつからなければ新規であるため登録
 | ||||
| 	if (object.type === 'Person') { | ||||
| 	if (validActor.includes(object.type)) { | ||||
| 		const user = await createPerson(object.id); | ||||
| 		return { | ||||
| 			type: 'User', | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue