diff --git a/backend/src/federation/client/Client_1_0.ts b/backend/src/federation/client/Client_1_0.ts index fd2f941a3..0c0d458c8 100644 --- a/backend/src/federation/client/Client_1_0.ts +++ b/backend/src/federation/client/Client_1_0.ts @@ -2,7 +2,6 @@ import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCom import { GraphQLClient } from 'graphql-request' import { getPublicKey } from '@/federation/query/getPublicKey' -import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' // eslint-disable-next-line camelcase @@ -26,21 +25,25 @@ export class Client_1_0 { } getPublicKey = async (): Promise => { - logger.info(`requestGetPublicKey with endpoint='${this.endpoint}'...`) + logger.info('Federation: getPublicKey from endpoint', this.endpoint) try { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const { data, errors, headers, status } = await this.client.rawRequest(getPublicKey, {}) - logger.debug('Response-Data:', data, errors, headers, status) - if (data) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - logger.debug('Response-PublicKey:', data.getPublicKey.publicKey) - logger.info(`requestGetPublicKey processed successfully`) - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access - return data.getPublicKey.publicKey + const { data } = await this.client.rawRequest(getPublicKey, {}) + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (!data?.getPublicKey?.publicKey) { + logger.warn('Federation: getPublicKey without response data from endpoint', this.endpoint) + return } - logger.warn(`requestGetPublicKey processed without response data`) + logger.info( + 'Federation: getPublicKey successful from endpoint', + this.endpoint, + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + data.getPublicKey.publicKey, + ) + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access + return data.getPublicKey.publicKey } catch (err) { - throw new LogError(`Request-Error:`, err) + logger.warn('Federation: getPublicKey failed for endpoint', this.endpoint) } } } diff --git a/backend/src/federation/validateCommunities.test.ts b/backend/src/federation/validateCommunities.test.ts index ed4897e09..77d0cc2ad 100644 --- a/backend/src/federation/validateCommunities.test.ts +++ b/backend/src/federation/validateCommunities.test.ts @@ -84,7 +84,8 @@ describe('validate Communities', () => { }) it('logs requestGetPublicKey for community api 1_0 ', () => { expect(logger.info).toBeCalledWith( - `requestGetPublicKey with endpoint='http//localhost:5001/api/1_0/'...`, + 'Federation: getPublicKey from endpoint', + 'http//localhost:5001/api/1_0/', ) }) }) @@ -114,12 +115,14 @@ describe('validate Communities', () => { }) it('logs requestGetPublicKey for community api 1_0 ', () => { expect(logger.info).toBeCalledWith( - `requestGetPublicKey with endpoint='http//localhost:5001/api/1_0/'...`, + 'Federation: getPublicKey from endpoint', + 'http//localhost:5001/api/1_0/', ) }) it('logs requestGetPublicKey for community api 1_1 ', () => { expect(logger.info).toBeCalledWith( - `requestGetPublicKey with endpoint='http//localhost:5001/api/1_1/'...`, + 'Federation: getPublicKey from endpoint', + 'http//localhost:5001/api/1_1/', ) }) }) @@ -152,18 +155,21 @@ describe('validate Communities', () => { }) it('logs requestGetPublicKey for community api 1_0 ', () => { expect(logger.info).toBeCalledWith( - `requestGetPublicKey with endpoint='http//localhost:5001/api/1_0/'...`, + 'Federation: getPublicKey from endpoint', + 'http//localhost:5001/api/1_0/', ) }) it('logs requestGetPublicKey for community api 1_1 ', () => { expect(logger.info).toBeCalledWith( - `requestGetPublicKey with endpoint='http//localhost:5001/api/1_1/'...`, + 'Federation: getPublicKey from endpoint', + 'http//localhost:5001/api/1_1/', ) }) it('logs unsupported api for community with api 2_0 ', () => { expect(logger.warn).toBeCalledWith( - `Federation: dbCom: ${dbCom.id} with unsupported apiVersion=2_0; supported versions`, - ['1_0', '1_1'], + 'Federation: dbCom with unsupported apiVersion', + dbCom.endPoint, + '2_0', ) }) }) diff --git a/backend/src/federation/validateCommunities.ts b/backend/src/federation/validateCommunities.ts index c0a8036a0..4b337eda9 100644 --- a/backend/src/federation/validateCommunities.ts +++ b/backend/src/federation/validateCommunities.ts @@ -3,7 +3,6 @@ import { IsNull } from '@dbTools/typeorm' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' -import { LogError } from '@/server/LogError' import { backendLogger as logger } from '@/server/logger' import { Client } from './client/Client' @@ -33,39 +32,25 @@ export async function validateCommunities(): Promise { logger.debug('Federation: dbCom', dbCom) const apiValueStrings: string[] = Object.values(ApiVersionType) logger.debug(`suppported ApiVersions=`, apiValueStrings) - if (apiValueStrings.includes(dbCom.apiVersion)) { - logger.debug( - `Federation: validate publicKey for dbCom: ${dbCom.id} with apiVersion=${dbCom.apiVersion}`, - ) - try { - const pubKey = await Client.getInstance(dbCom)?.getPublicKey() - logger.info( - 'Federation: received publicKey from endpoint', + if (!apiValueStrings.includes(dbCom.apiVersion)) { + logger.warn('Federation: dbCom with unsupported apiVersion', dbCom.endPoint, dbCom.apiVersion) + continue + } + try { + const client = Client.getInstance(dbCom) + const pubKey = await client?.getPublicKey() + if (pubKey && pubKey === dbCom.publicKey.toString()) { + await DbFederatedCommunity.update({ id: dbCom.id }, { verifiedAt: new Date() }) + logger.info('Federation: verified community', dbCom) + } else { + logger.warn( + 'Federation: received not matching publicKey:', pubKey, - `${dbCom.endPoint}/${dbCom.apiVersion}`, + dbCom.publicKey.toString(), ) - if (pubKey && pubKey === dbCom.publicKey.toString()) { - logger.info(`Federation: matching publicKey: ${pubKey}`) - await DbFederatedCommunity.update({ id: dbCom.id }, { verifiedAt: new Date() }) - logger.debug(`Federation: updated dbCom: ${JSON.stringify(dbCom)}`) - } else { - logger.warn( - `Federation: received not matching publicKey -> received: ${ - pubKey ?? 'null' - }, expected: ${dbCom.publicKey.toString()} `, - ) - // DbCommunity.delete({ id: dbCom.id }) - } - } catch (err) { - if (!(err instanceof LogError)) { - logger.error(`Error:`, err) - } } - } else { - logger.warn( - `Federation: dbCom: ${dbCom.id} with unsupported apiVersion=${dbCom.apiVersion}; supported versions`, - apiValueStrings, - ) + } catch (err) { + logger.error(`Error:`, err) } } }