From fee6b265b795a4da1323a3944d683bc3ad4752f5 Mon Sep 17 00:00:00 2001 From: Heiko Burkhardt Date: Tue, 24 Oct 2023 10:33:56 +0200 Subject: [PATCH] fix: ws --- docker/docker-compose.yml | 2 +- docker/nginx.conf | 4 +++- packages/backend/src/delivery.ts | 1 + packages/backend/src/index.ts | 1 - packages/backend/src/messaging.ts | 23 +++++++++++-------- packages/backend/src/utils.ts | 2 +- packages/lib/delivery/src/Messages.ts | 17 +++++++------- .../src/components/DM3/DM3.tsx | 11 +++++---- 8 files changed, 35 insertions(+), 26 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 9e71bc39d..74c7e0df5 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -24,7 +24,7 @@ services: SIGNING_PUBLIC_KEY: ${SIGNING_PUBLIC_KEY} SIGNING_PRIVATE_KEY: ${SIGNING_PRIVATE_KEY} ENCRYPTION_PUBLIC_KEY: ${ENCRYPTION_PUBLIC_KEY} - ENCRYPTION_PRIVATE_KEY: ${ENCRYPTION_PUBLIC_KEY} + ENCRYPTION_PRIVATE_KEY: ${ENCRYPTION_PRIVATE_KEY} RPC: ${RPC} PORT: 8081 LOG_LEVEL: 'debug' diff --git a/docker/nginx.conf b/docker/nginx.conf index 871d1d59e..24bda6032 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -59,7 +59,7 @@ http { } location /socket.io { - proxy_pass http://backend:8081/socket.io/; + proxy_pass http://backend:8081/socket.io; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; @@ -69,5 +69,7 @@ http { proxy_redirect off; proxy_set_header Host $host; } + + } } \ No newline at end of file diff --git a/packages/backend/src/delivery.ts b/packages/backend/src/delivery.ts index 35c037f36..56415417f 100644 --- a/packages/backend/src/delivery.ts +++ b/packages/backend/src/delivery.ts @@ -42,6 +42,7 @@ export default () => { const idEnsName = await req.app.locals.db.getIdEnsName( req.params.ensName, ); + const idContactEnsName = await req.app.locals.db.getIdEnsName( req.params.contactEnsName, ); diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 857fe3c42..63c04ae80 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -59,7 +59,6 @@ global.logger = winston.createLogger({ app.locals.io = io; app.locals.keys = readKeysFromEnv(process.env); - app.locals.deliveryServiceProperties = getDeliveryServiceProperties(); app.locals.db = await getDatabase(); diff --git a/packages/backend/src/messaging.ts b/packages/backend/src/messaging.ts index 305fc3c39..36e60a743 100644 --- a/packages/backend/src/messaging.ts +++ b/packages/backend/src/messaging.ts @@ -20,7 +20,7 @@ const pendingMessageSchema = { export function onConnection(app: express.Application & WithLocals) { return (socket: Socket) => { socket.on('disconnect', () => { - app.locals.logger.info({ + global.logger.info({ method: 'WS DISCONNECT', socketId: socket.id, }); @@ -36,7 +36,7 @@ export function onConnection(app: express.Application & WithLocals) { callback, ) => { try { - app.locals.logger.info({ + global.logger.info({ method: 'WS INCOMING MESSAGE', }); @@ -48,13 +48,18 @@ export function onConnection(app: express.Application & WithLocals) { if (!isSchemaValid) { const error = 'invalid schema'; - app.locals.logger.warn({ + global.logger.warn({ method: 'WS SUBMIT MESSAGE', error, }); return callback({ error }); } + global.logger.info({ + method: 'WS INCOMING MESSAGE', + keys: app.locals.keys.encryption, + }); + await incomingMessage( data, app.locals.keys.signing, @@ -75,7 +80,7 @@ export function onConnection(app: express.Application & WithLocals) { ), callback({ response: 'success' }); } catch (error: any) { - app.locals.logger.warn({ + global.logger.warn({ method: 'WS SUBMIT MESSAGE', error: (error as Error).toString(), }); @@ -90,7 +95,7 @@ export function onConnection(app: express.Application & WithLocals) { if (!isSchemaValid) { const error = 'invalid schema'; - app.locals.logger.warn({ + global.logger.warn({ method: 'WS PENDING MESSAGE', error, }); @@ -109,7 +114,7 @@ export function onConnection(app: express.Application & WithLocals) { contactEnsName, ); } catch (error) { - app.locals.logger.warn({ + global.logger.warn({ method: 'WS PENDING MESSAGE', error, }); @@ -117,7 +122,7 @@ export function onConnection(app: express.Application & WithLocals) { return callback({ error }); } - app.locals.logger.info({ + global.logger.info({ method: 'WS PENDING MESSAGE', ensName, contactEnsName, @@ -132,7 +137,7 @@ export function onConnection(app: express.Application & WithLocals) { )) ) { const error = 'Token check failed'; - app.locals.logger.warn({ + global.logger.warn({ method: 'WS PENDING MESSAGE', error, }); @@ -143,7 +148,7 @@ export function onConnection(app: express.Application & WithLocals) { callback({ response: 'success' }); } catch (error) { - app.locals.logger.warn({ + global.logger.warn({ method: 'WS PENDING MESSAGE', error: (error as Error).toString(), }); diff --git a/packages/backend/src/utils.ts b/packages/backend/src/utils.ts index 4df416b7d..f6db5ecac 100644 --- a/packages/backend/src/utils.ts +++ b/packages/backend/src/utils.ts @@ -47,7 +47,7 @@ export function socketAuth(app: Express & WithLocals) { socket.handshake.auth.account.ensName, ); - app.locals.logger.info({ + global.logger.info({ method: 'WS CONNECT', ensName, socketId: socket.id, diff --git a/packages/lib/delivery/src/Messages.ts b/packages/lib/delivery/src/Messages.ts index 48fe8a064..6a9edb108 100644 --- a/packages/lib/delivery/src/Messages.ts +++ b/packages/lib/delivery/src/Messages.ts @@ -54,7 +54,9 @@ export async function getMessages( contactEnsName: string, ) { const account = normalizeEnsName(ensName); + const contact = normalizeEnsName(contactEnsName); + const conversationId = getConversationId(contact, account); const receivedMessages: EncryptionEnvelop[] = await loadMessages( @@ -66,14 +68,8 @@ export async function getMessages( const envelopContainers = await Promise.all( receivedMessages.map(async (envelop) => ({ to: normalizeEnsName( - JSON.parse( - await decryptAsymmetric( - encryptionKeyPair, - JSON.parse( - envelop.metadata.deliveryInformation as string, - ), - ), - ).to, + JSON.parse(JSON.stringify(envelop.metadata.deliveryInformation)) + .to, ), envelop, })), @@ -111,7 +107,10 @@ export async function incomingMessage( getIdEnsName: (name: string) => Promise, getUsersNotificationChannels: GetNotificationChannels, ): Promise { - logDebug({ text: 'incomingMessage', token }); + logDebug({ + text: 'incomingMessage', + token, + }); //Checks the size of the incoming message if (messageIsToLarge(envelop, sizeLimit)) { throw Error('Message is too large'); diff --git a/packages/messenger-widget/src/components/DM3/DM3.tsx b/packages/messenger-widget/src/components/DM3/DM3.tsx index 80ff490bc..a93ebab5d 100644 --- a/packages/messenger-widget/src/components/DM3/DM3.tsx +++ b/packages/messenger-widget/src/components/DM3/DM3.tsx @@ -83,10 +83,13 @@ function DM3(props: Dm3Props) { throw Error('Could not get account profile'); } - const socket = socketIOClient(deliveryServiceUrl, { - autoConnect: false, - transports: ['websocket'], - }); + const socket = socketIOClient( + deliveryServiceUrl.replace('/api', ''), + { + autoConnect: false, + transports: ['websocket'], + }, + ); socket.auth = { account: state.connection.account,